Watir :: IE.attach(:title,/ x /)在Win 7 IE8上无法正常工作

时间:2010-04-20 23:36:52

标签: windows internet-explorer windows-7 internet-explorer-8 watir

系统: 窗口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 /)

======================

3 个答案:

答案 0 :(得分:1)

现在,watir假定您要附加到的窗口称为“Internet Explorer”。我认为IE8的名称可能与此不同。您可以在ie-class.rb。

的第238行更改此设置

布雷特

答案 1 :(得分:1)

我遇到了同样的问题。我已经对它进行了一些调查,问题似乎是当已经存在一个用管理员权限打开的IE8实例时,Watir将看不到任何其他以管理员身份运行的IE8窗口,包括它打开了。

我通过这样做来实现这个目标:

Watir::IE.each do |window|

  puts window.title

end

我试过的案例是:

  1. 之前没有打开的IE窗口导致watir仅列出新浏览器,而不是它创建的浏览器(我想附加到它)。
  2. 一个或多个先前打开的非管理员IE窗口会列出预先存在的浏览器实例以及它自身,但同样不会列出它产生的新窗口。
  3. 以管理员身份运行的一个或多个先前打开的IE窗口略有不同,因为它会列出所有预先存在的窗口,但不会列出自己,也不会列出它创建的任何其他窗口。
  4. 这使我得出结论,Watir将不会在其列表中保留在现有管理员权限的IE8打开后创建的任何管理员特权的IE8实例。

    我现在使用的解决方案是不以管理员身份运行我的脚本。我知道在某些情况下这不是一个真正的选择,但它是迄今为止我能找到的最好的选择。

答案 2 :(得分:1)

关闭用户帐户控制(设置为最低设置)。转到控制面板 - >系统和安全 - >操作中心 - >更改用户帐户控制设置,然后将滑块拖放到最低设置。

我遇到了同样的问题,这为我解决了这个问题。