java - 等待模式在 Selenium 2.0 中消失

标签 java selenium junit modal-dialog

当我使用 Firefox 的 webdriver 运行测试时,我会在接受警报后收到模态异常:

[Exception]: Modal dialog present

然而,当使用 IE webdriver 时,测试工作正常。问题似乎是测试场景在警报完全关闭之前继续进行。换句话说,它试图执行以下操作:

List<WebElement> l = driver.findElements(By.linkText("link"));

结果我会得到模态异常。

现在 wait.until(ExpectedConditions) 如前所述 wait.until(ExpectedConditions.visibilityOf Element1 OR Element2)是很好的候选人。但是,我无法创建一个在警报消失时返回 true 的条件。我该怎么做?

编辑:进一步澄清,问题不在于等待警报出现(我的隐式等待为此目的工作正常)。我确实收到警报并对其应用测试,但是在我单击警报上的接受后,测试快速进行并尝试继续下一步,同时警报仍然存在并抛出模态存在异常。我还尝试了以下方法来阻止这种情况,但没有成功。

driver.switchTo().defaultContent();

最佳答案

现在有等待警报出现/消失的默认机制,但我们可以编写自己的逻辑,如下所示,而不是等待静态时间量 (Thread.sleep(10000))。

waitForAlert(WebDriver driver)
{
   int i=0;
   while(i++<5)
   {
        try
        {
            Alert alert = driver.switchTo().alert();
            alert.accept();
            break;
        }
        catch(NoAlertPresentException e)
        {
          Thread.sleep(1000);
          continue;
        }
   }
}

关于java - 等待模式在 Selenium 2.0 中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23941763/

相关文章:

java - 当我导出 .jar 文件中的图片时,它不起作用

java - 如何在selenium中读取PDF内容

java - java中的repaint()方法没有调用paint()方法?

selenium webdriver 中的 css 或 xpath 正则表达式

java - 解释 JUnit 测试结果?

Java 测试验证构造函数

java - 嵌套 if、else if,不带括号

javascript - Selenium 服务器错误 : Unable to create new service chromedriverservice

java - INFO : HTTP Status: '404' -> incorrect JSON status mapping for 'unknown error' with GeckoDriver, Firefox 和 Selenium 通过 Java

java - Junit 会关闭所有线程吗?