当我使用 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/