我正在使用spock,geb和WebDriver编写测试脚本。该脚本在不安全的页面上提交表单。该页面提交到安全的HTTPS URL。 Firefox会针对此显示警告,具体为:
这会导致以下错误:
org.openqa.selenium.UnhandledAlertException: Modal dialog present
Build info: version: '2.23.0', revision: '17137', time: '2012-06-07 09:08:12'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.7.4', java.version: '1.6.0_33'
Driver info: driver.version: RemoteWebDriver
Session ID: 79e0444f-4c8e-2b4c-9066-601e7cdb3aa9
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:188)
at org.openqa.selenium.remote.ErrorHandler.createUnhandledAlertException(ErrorHandler.java:169)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:141)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:458)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:462)
at org.openqa.selenium.remote.RemoteWebDriver.getTitle(RemoteWebDriver.java:204)
at geb.Page.getTitle(Page.groovy:200)
at groovy.lang.Closure.getPropertyTryThese(Closure.java:197)
at groovy.lang.Closure.getPropertyDelegateFirst(Closure.java:187)
at groovy.lang.Closure.getProperty(Closure.java:172)
如果出现这个警告,我如何让WebDriver取消此警报?
答案 0 :(得分:5)
在一个问题中找到答案:Handling Alert in webdriver 2.21and mozilla11
driver.switchTo().alert().accept()
答案 1 :(得分:1)
请记住在对其执行接受之前添加等待警报。以下是java中的函数。
private void acceptSecurityAlert() {
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver).withTimeout(10, TimeUnit.SECONDS)
.pollingEvery(3, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
Alert alert = wait.until(new Function<WebDriver, Alert>() {
public Alert apply(WebDriver driver) {
try {
return driver.switchTo().alert();
} catch(NoAlertPresentException e) {
return null;
}
}
});
alert.accept();
}