使用带有Page-Object的IE 11 x64时出现“Watir :: Exception :: NoMatchingWindowFoundException:浏览器窗口已关闭”错误

问题描述 投票:2回答:2

我正在使用Page-Object + Rspec在Ruby Mine 2.7.1中运行测试。

环境:Windows 7 x64,Ruby 1.9.3 p551,IE 11。

宝石:watirrspecbundlerpage-object

当我在Chrome或Firefox中运行测试时,一切正常。

但是当我尝试在IE中运行它们时,具有正确页面的IE窗口被打开,之后我在主题中指定了错误:"Watir::Exception::NoMatchingWindowFoundException: browser window was closed"

关键是浏览器实际上是在那一刻打开并显示正确的页面。 (参见截屏显示会发生什么:http://screencast.com/t/06prRy3OMLM

测试结束时出现错误,并且config.after do部分未执行,因为浏览器窗口仍然打开。

执行以下代码时会发生该错误:

before(:each) do

visit <ClassName>

end

好像IEDriverServer在页面打开后立即失去与IE的连接。

最令人困惑的是,在非常罕见的情况下,一切都运行良好,在更罕见的情况下,一切都在使用最终的超时错误显着减速。

sleep <n>延迟没有帮助。

我尝试了不同版本的selenium-webdriver gem(它是watir gem需要的),不同版本的IEDriverServer用于x86和x64平台 - 结果是相同的。

lib/watir-classic/exceptions.rb中的例外描述如下:

# This exception is raised if the window cannot be found class NoMatchingWindowFoundException < WatirException; end

如何设置IEDriverServer不要丢失IE浏览器?

ruby internet-explorer rspec watir page-object-gem
2个回答
2
投票

UPD:我找到了解决方案。它包括两个步骤。

步骤1。

首先,这里明确地描述了上述问题的答案,“必需的配置”部分,第5段“仅适用于IE11,......”:( qazxsw poi)

`仅对于IE 11,您需要在目标计算机上设置一个注册表项,以便驱动程序可以维护与其创建的Internet Explorer实例的连接。

对于32位Windows安装,您必须在注册表编辑器中检查的密钥是HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BFCACHE。

对于64位Windows安装,密钥是HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BFCACHE。

请注意,FEATURE_BFCACHE子项可能存在也可能不存在,如果不存在,则应创建该子项。要点:在此项中,创建名为iexplore.exe的DWORD值,其值为0.`

如果此值包含除0之外的某些内容,则IEDriverServer将失去与IE浏览器的连接,如我的情况所述。

那么,RTFM! (c)见下一评论中的第2步。


0
投票

如果您需要'watir'并指定IE,则实现默认为watir-classic行为。

尝试:

https://code.google.com/p/selenium/wiki/InternetExplorerDriver

© www.soinside.com 2019 - 2024. All rights reserved.