2011-10-10 115 views
22

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

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

    有没有人有解决这个问题?现在有人有效地使用browsermob代理(或任何其他代理)来有效地解决此问题吗?

    感谢, 达摩

    +1

    您提到的功能键与HTTPS证书接受无关。您最好的办法是将证书安装在用户的可信存储区(certmgr.msc)中,假设错误是根不受信任。 – EricLaw

    回答

    2

    这在过去的工作对我来说,不妨一试,

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

    试过了,但没有运气。你在IE9中试过这个吗? –

    +0

    我还没有在IE9上试过它。非管理员权限是否允许您在IE中安装安全证书?或者那是你不喜欢的东西? – nilesh

    +0

    我在w7中尝试过它,ie8并不起作用 – hithwen

    0

    此Any陆侃? 我试图做到这一点的能力的事情......但我不知道如何使用做红宝石:(

    在Chrome很简单,因为你可以使用交换机:

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

    也许有可能做到这一点对IE浏览器使用开关

    26

    好吧,我刚刚使用C#IE9下它的工作和下面的代码:

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

    现在将进入预期的页面。

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

    这工作就像一个魅力!谢谢! – JacekM

    +0

    非常感谢。它确实帮了很大忙。 – GirishB

    +0

    工作....凉爽的人...事情是这样的...人们在所有的地方复制我们的代码:D –

    0

    存在情况下,更简单的解决方案,您使用IE浏览器的驱动程序,在此reply记载:对于Java它是那样简单。额外的好处是,你不必成为网站所有者,你不必与browsermob或注册表或任何其他低级技术纠结

    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(); 
    
    4

    使用硒Python绑定:

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

    其他的答案有正确的想法,但在实践中失败,因为WebDriver不会立即找到证书错误页面。正确的实现应该稍微等一下。

    new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("Certificate")); 
    
    
    driver.navigate().to("javascript:document.getElementById('overridelink').click()");