Selenium 2 Webdriver和IE 9安全证书

时间:2011-10-10 09:09:58

标签: internet-explorer-9 webdriver selenium-webdriver

我有一些针对Firefox和Internet Explorer 9的Selenium 2 Webdriver测试用例。当我在IE9(Windows 7 64位)上访问https URL时,我得到“此网站的安全证书存在问题”。此时测试挂起并最终失败。我试过了:

  • 让Selenium点击“继续浏览此网站(不推荐)”。链接。这不能完成,因为此错误页面不是您的常用页面。与JavaScript相同 - 它不会执行。
  • 我尝试添加注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312,以防止显示证书错误页面 - 无法正常工作。可能是因为我在Windows 7上使用IE9。
  • 遵循this建议我尝试使用browsermob代理,但是那里的文档很少,我无法解决。
  • 最后,我没有管理员访问我的电脑 - 例如无法访问组策略。 Selenium 2 Webdriver在Firefox上运行良好。我在IE Internet Options中启用了所有安全区域,如果我在其他URL(http)上运行测试,则没有问题。

    有没有人能解决这个问题?现在是否有人有效地使用browsermob代理(或任何其他代理)来克服这个问题?

    谢谢, 达莫

    8 个答案:

    答案 0 :(得分:26)

    好吧,我只是使用C#和以下代码在IE9下工作:

    IWebDriver driver = new InternetExplorerDriver();
    driver.Url(YOUR_URL);
    driver.Navigate().GoToUrl("javascript:document.getElementById('overridelink').click()");
    

    现在它将转到预期的页面。对于Java来说,它很简单:

    WebDriver driver = new InternetExplorerDriver();
    driver.get(YOUR_URL);
    driver.get("javascript:document.getElementById('overridelink').click();");
    

    答案 1 :(得分:4)

    使用Selenium-Python绑定:

    #region SSL workaround for IE
    if "Certificate Error" in driver.title:
        driver.get("javascript:document.getElementById('overridelink').click();")
    

    答案 2 :(得分:3)

    我在SQA板上找到了答案: https://sqa.stackexchange.com/questions/1928/selenium-2-webdriver-and-ie-9-security-certificate

    我们创建了一个证书,它就像一个魅力。

    答案 3 :(得分:2)

    这在过去对我有用,试一试,

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);      
    Webdriver driver = new InternetExplorerDriver(capabilities);
    

    答案 4 :(得分:0)

    这方面的任何进展? 我正在尝试做这个功能......但我不知道如何使用Ruby做到这一点:(

    在Chrome中,它很简单,因为你可以使用开关:

    nav=Selenium::WebDriver.for(:chrome, :switches => %w[--ignore-certificate-errors -])
    

    也许可以使用开关

    为IE做这件事

    答案 5 :(得分:0)

    如果你使用IE驱动程序,有一个更简单的解决方案,在reply中有记录。额外的好处是您不必是网站所有者,您不必与浏览器或注册表或任何其他低级技术纠缠在一起

    答案 6 :(得分:0)

    我们可以使用以下代码。

    wait =new WebDriverWait(webdriver, 10);
    
    webdriver.get(url);
    WebElement ele =wait.until(ExpectedConditions.elementToBeClickable(
                   webdriver.findElement(By.linkText("Continue to this website (not  
                   recommended)."))));
     ele.click();
    

    答案 7 :(得分:0)

    其他答案有正确的想法,但在实践中失败,因为new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("Certificate")); driver.navigate().to("javascript:document.getElementById('overridelink').click()"); 没有立即导航到证书错误页面。正确的实现应该稍等一下。

    {{1}}