系统: 窗口7 Internet Explorer 8 Ruby 1.8 Watir 1.6.5
如果我手动打开浏览器窗口,然后访问导致第二个浏览器窗口打开的网站,然后使用Watir :: IE.attach方法查找第二个浏览器窗口,一切正常。问题是当我使用命令Watir :: IE.new打开第一个Internet Explorer窗口,然后访问导致第二个浏览器窗口打开的站点。当我使用Watir :: IE.attach找到我现在得到的第二个浏览器窗口时: Watir :: Exception :: NoMatchingWindowFoundException:无法定位标题为(?-mix:x)的窗口 来自/ie-class.rb:297:in'adt_browser_window' 来自/ie-class.rb:149:in'_attach_init' 来自/ie-class.rb:143:'附加' 来自(irb):15
是否有人遇到此问题并制定了解决方案?
我做了一些调查,我正在运行具有管理权限的脚本,它以管理员身份打开IE8,然后尝试打开一个新窗口。我尝试手动打开IE8作为管理员,然后从浏览器打开一个新窗口,然后使用watir运行attach命令,我确实得到了同样的错误,好像我用watir创建了初始窗口。
我确实希望能够以管理员身份运行我的脚本。
我尝试手动执行watir命令并在脚本中运行:
======================
要求'rubygems'
要求'watir'
ie = Watir :: IE.start(“http://www.quackit.com/html/codes/html_open_link_in_new_window.cfm”)
ie.link(:text,“HTML Help”)。点击
ie2 = Watir :: IE.attach(:title,/ Help /)
======================
答案 0 :(得分:1)
现在,watir假定您要附加到的窗口称为“Internet Explorer”。我认为IE8的名称可能与此不同。您可以在ie-class.rb。
的第238行更改此设置布雷特
答案 1 :(得分:1)
我遇到了同样的问题。我已经对它进行了一些调查,问题似乎是当已经存在一个用管理员权限打开的IE8实例时,Watir将看不到任何其他以管理员身份运行的IE8窗口,包括它打开了。
我通过这样做来实现这个目标:
Watir::IE.each do |window|
puts window.title
end
我试过的案例是:
这使我得出结论,Watir将不会在其列表中保留在现有管理员权限的IE8打开后创建的任何管理员特权的IE8实例。
我现在使用的解决方案是不以管理员身份运行我的脚本。我知道在某些情况下这不是一个真正的选择,但它是迄今为止我能找到的最好的选择。
答案 2 :(得分:1)
关闭用户帐户控制(设置为最低设置)。转到控制面板 - >系统和安全 - >操作中心 - >更改用户帐户控制设置,然后将滑块拖放到最低设置。
我遇到了同样的问题,这为我解决了这个问题。