我有一些用于Firefox和Internet Explorer 9的Selenium 2 WebDriver测试用例。当我在IE9(Windows 7 64位)上访问HTTPS URL时,我得到:


该网站的安全性存在问题证书。


此时测试挂起并最终失败。

我尝试了:点击“继续浏览此网站(不推荐)”。链接。无法执行此操作,因为此错误页面不是您通常的页面。与JavaScript相同-不会执行。
我尝试添加注册表项(HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312),但未显示-没有工作。可能是因为我在使用IE9的Windows 7上。我没有对我的PC的管理员访问权限-例如无法访问组策略。 Selenium 2 WebDriver在Firefox上可以正常工作。我已经在IE Internet选项中启用了所有安全区域,并且如果我在其他URL(HTTP)上运行测试,那么就没有问题。有谁知道热衷于有效使用BrowserMob代理(或任何其他代理)来克服此问题?

,谢谢,

评论

您是否找到了解决方案?我对其他人使用针对IE的watir-webdriver遇到类似的问题。这似乎是一个webdriver问题。由该页面的某些异常引起。

#1 楼

根据您的特定公司的设置方式,有两种解决方案。最简单的是,如果您运行测试的计算机与托管站点的服务器位于同一域中。让管理服务器的团队创建一个自签名证书,并将该证书添加到您的计算机中。
如果自签名路由不起作用,则可能需要另一个团队参与。如果有人可以从您的生产证书颁发机构颁发证书,请让他们创建并添加到您的测试服务器。然后,将证书导入到您的机器中。

评论


我将进行调查,并让您知道它的运行情况。试图投票给你,但我的声誉点太少了。非常感谢。

– damo_inc
2011年10月11日下午6:46

在许多情况下,我发现自签名是最好的解决方案,我确实获得了FF和IE8的安全例外附加组件,可以在我的环境中解决此问题。尚未在我的环境中尝试IE9,但我希望它会是相同的。

– MichaelF
2011年10月11日20:33

#2 楼

尝试单击“继续浏览此网站(不推荐)”。链接以以下方式(适用于EI7,IE8的我):

webDriver.navigate().to("javascript:document.getElementById('overridelink').click()");


#3 楼

好的,我可以使用C#和以下代码在IE9下运行它:

#4 楼

我很高兴找到了这个消息线程。我必须使用不同版本的webdriver,并且以下行使用IE8对我有效。谢谢。

    driver.execute_script("document.getElementById('overridelink').click()");


编辑添加:
忘记提及我的driver = webdriver.Ie()了!

评论


嗨,戴夫-欢迎来到SQA!我进行了编辑以添加您在第二个答案中提供的信息-我现在将其删除,否则会造成混乱:)

– testerab
2012年2月9日在22:38

#5 楼

当我在测试中实例化IE8时,此代码将始终运行。效果很好。

#region SSL workaround for IE
if (driver.GetType() == typeof(InternetExplorerDriver) && driver.Title.Contains("Certificate"))
    driver.Navigate().GoToUrl("javascript:document.getElementById('overridelink').click()");
#endregion


评论


这不是关于IE9的问题,不是关于IE8的问题吗?

–corsiKa♦
13年7月2日在4:46

应该为两者工作。

– Tedesco
13年7月2日在8:11

#6 楼

是的Rama,

是IE8的修复程序。我有一个具有过期证书的应用程序,我需要接受该证书才能继续进行操作。此SSL错误后将引发。现在,我使用以下错误处理方法:

driver.navigate()。to(“ javascript:document.getElementById('overridelink')。click()”);

这样,我就可以同时解决IE8和IE9的此问题。

#7 楼

首先导航到该站点:

DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
Webdriver driver = new InternetExplorerDriver(capabilities);
driver.get("your testing site");
driver.navigate().to("javascript:document.getElementById('overridelink').click()");


#8 楼

出于记录,我在IE9 / Python中遇到了类似的问题。那对我有用:

if driver.title == 'Certificate Error: Navigation Blocked': driver.get("javascript:document.getElementById('overridelink').click();")

请注意,上面的代码是:



不尝试查找'override'元素,然后单击链接(失败)

不尝试通过driver.execute()方法执行javascript(也失败)

它将JS偷偷地通过driver.get()方法执行,并检测(使用标题)是否需要完成。