代码在所有浏览器中运行良好但在safari浏览器中运行case时警报无法处理。我得到的预测后,警报没有显示在野生动物园中。
" org.openqa.selenium.UnhandledAlertException:模态对话框是 打开。 SafariDriver不支持与模态交互 对话框。为避免挂起您的测试,警报已被取消。对于 更多信息,请参阅 http://code.google.com/p/selenium/issues/detail?id=3862:拜托 提供有效的电子邮件地址。"
我也把时间等待但没有用。
答案 0 :(得分:0)
在执行任何操作之前,您可以使用以下方法处理safari警报: -
JavascriptExecutor js = (JavascriptExecutor) webDriver;
js.executeScript("window.alert = function(){ return true;}");
此java脚本会覆盖您自动化测试用例的网页上的警告框功能。
您需要在获得UnhandledAlertException
例如: - 假设您有WebElement el
,当您点击el
时,您将获得UnhandledAlertException
,然后您需要执行以下操作: -
JavascriptExecutor js = (JavascriptExecutor) webDriver;
js.executeScript("window.alert = function(){ return true;}");
el.click();
答案 1 :(得分:-1)
我在Selenium WebDriver中处理Safari浏览器的JavaScript警报,我在这里分享。
public static boolean isAlertPresent(WebDriver driver) {
try {
//driver.switchTo().alert();
WebDriverWait wait = new WebDriverWait(driver, 2);
wait.until(ExpectedConditions.alertIsPresent());
return true;
} // try
catch (Exception e) {
return false;
} // catch
}
if(isAlertPresent(driver)) {
Alert alert = driver.switchTo().alert();
Thread.sleep(3000);
System.out.println("Alert Text : "+alert.getText());
alert.accept();
driver.switchTo().defaultContent();
}
注意:确保在单击生成模式对话框(弹出窗口)的选项卡/按钮后立即添加这些代码行。