【问题标题】:How can I get WebDriver to dismiss a Firefox Security Alert?如何让 WebDriver 关闭 Firefox 安全警报?
【发布时间】:2017-04-07 13:44:20
【问题描述】:

我正在使用 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 将其消除?

【问题讨论】:

    标签: testing webdriver spock selenium-webdriver geb


    【解决方案1】:

    在一个问题中找到答案:Handling Alert in webdriver 2.21and mozilla11

    driver.switchTo().alert().accept()
    

    【讨论】:

    • 即使在调用该语句后我也遇到了异常。
    • 也许您收到了不同类型的警报?
    • 我只需要升级我的 selenium 驱动程序。抱歉误报!
    • 我也面临同样的问题。谁能帮我解决一下?
    【解决方案2】:

    记得在对它执行接受之前添加等待警报。在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();
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 2012-07-25
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多