4

系统:Window 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: Unable to location a window with title of (?-mix:x) from /ie-class.rb: 297:在 /ie-class.rb 的“attach_browser_window”中:149:在 /ie-class.rb 的“_attach_init”中:143:在(irb)的“attach”中:15

有没有人遇到这个问题并制定了解决方案?

我做了更多调查,我正在以管理权限运行我的脚本,它以管理员身份打开 IE8,然后尝试打开一个新窗口。我尝试以管理员身份手动打开 IE8,然后从浏览器打开一个新窗口,然后使用 watir 运行附加命令,我确实得到了与使用 watir 创建初始窗口相同的错误。

我确实希望能够以管理员身份运行我的脚本。

我尝试手动执行 watir 命令并在脚本中运行:

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

需要“红宝石”

需要'watir'

即 = Watir::IE.start(" http://www.quackit.com/html/codes/html_open_link_in_new_window.cfm ")

ie.link(:text,"HTML 帮助").click

ie2 = Watir::IE.attach(:title,/Help/)

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

4

3 回答 3

1

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

布雷特

于 2010-05-03T14:58:34.250 回答
1

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

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

于 2011-05-27T00:00:11.140 回答
1

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

我通过这样做来实现这一点:

Watir::IE.each do |window|

  puts window.title

end

我尝试的案例是:

  1. 没有以前打开的 IE 窗口导致 watir 仅列出新浏览器,而不是它创建的浏览器(我想附加到)。
  2. 一个或多个以前打开的非管理员 IE 窗口会列出预先存在的浏览器实例以及它本身,但它不会再次列出它产生的新窗口。
  3. 以管理员身份运行的一个或多个以前打开的 IE 窗口略有不同,它会列出所有预先存在的窗口,但不会列出自身或它创建的任何其他窗口。

这使我得出结论,Watir 不会在其列表中保留在现有管理员特权 IE8 打开后创建的任何管理员特权 IE8 实例。

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

于 2010-12-02T00:24:28.153 回答