[英]Firefox alert box not detected with Selenium WebDriver
错误net.serenitybdd.core.Serenity-不存在警报(警告:服务器未提供任何堆栈跟踪信息)
当我尝试使用以下代码检测警报时收到此错误:
Alert alertBox = getDriver().switchTo().alert();
确实会显示警报弹出窗口,但是当我通过Selenium WebDriver手动执行操作时,它并不完全相同。 这可能是问题的根源,但我不知道为什么弹出窗口与众不同。
这是调用警报的函数:
function confirm_remove() {
return window.confirm("Alert message");
}
谢谢你的帮助
更新:
好的,我找到了一种绕过问题但无法真正解决的方法。
我尝试像您建议的那样插入等待和睡眠,但是并不能解决问题,仍然无法检测到警报。
在我的项目中,我使用Test类,该类从Steps类中调用步骤,而Steps类从Page类中调用webElements。 问题是,在单击“删除”按钮的步骤与管理警报的步骤之间,Selenium失去了警报的处理。 因此,我将这两个步骤重新组合在一起,Selenium似乎可以很好地处理警报。
您可能需要添加代码以等待警报可见。 Selenium无法判断JavaScript是否已完成执行。
waitForAlert(WebDriver driver)
{
int i=0;
while(i++<5)
{
try
{
Alert alert = driver.switchTo().alert();
break;
}
catch(NoAlertPresentException e)
{
Thread.sleep(1000);
continue;
}
}
}
更优雅的解决方案:
WebDriverWait wait = new WebDriverWait(driver, timeout);
wait.until(ExpectedConditions.alertIsPresent());
使用WebDriverWait,每当您完成页面加载后不存在动态元素时,例如警报,弹出窗口,模式弹出窗口,隐藏元素(变为可见)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.