4

システム: Window 7 Internet Explorer 8 Ruby 1.8 Watir 1.6.5

ブラウザー ウィンドウを手動で開いてから、2 つ目のブラウザー ウィンドウを開くサイトにアクセスし、Watir::IE.attach メソッドを使用して 2 つ目のブラウザー ウィンドウを見つけると、すべて正常に動作します。問題は、コマンド Watir::IE.new を使用して最初の Internet Explorer ウィンドウを開き、次に 2 つ目のブラウザー ウィンドウを開くサイトにアクセスした場合です。Watir::IE.attach を使用して 2 番目のブラウザー ウィンドウを見つけると、次のようになります: 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 で attach コマンドを実行すると、watir で最初のウィンドウを作成した場合と同じエラーが発生しました。

スクリプトを管理者として実行できるようにしたいです。

watir コマンドを手動で実行し、スクリプトで実行しようとしました。

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

「ルビジェム」が必要

'watir' が必要

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

ie.link(:text,"HTML Help").click

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

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

4

3 に答える 3

1

私は同じ問題を抱えています。もう少し調査したところ、管理者特権で開かれた IE8 のインスタンスが既に存在する場合、Watir は管理者として実行されている他の IE8 ウィンドウを表示しないようです。それ自体が開きます。

私はこれを行うことでこの実現に至りました:

Watir::IE.each do |window|

  puts window.title

end

私が試したケースは次のとおりです。

  1. 以前に開いた IE ウィンドウでは、作成した (アタッチしたかった) ブラウザーではなく、新しいブラウザーのみが watir にリストされませんでした。
  2. 以前に開いた 1 つ以上の管理者以外の IE ウィンドウは、既存のブラウザー インスタンスとそれ自体を一覧表示しますが、生成された新しいウィンドウは一覧表示しません。
  3. 管理者として以前に開いた 1 つ以上の IE ウィンドウは、既存のすべてのウィンドウを一覧表示するという点でわずかに異なっていましたが、それ自体も作成した追加のウィンドウも一覧表示しませんでした。

これにより、Watir は、既存の管理者特権の IE8 を開いた後に作成した管理者特権の IE8 インスタンスをリストに保持しないという結論に達しました。

私が現在使用している解決策は、スクリプトを管理者として実行しないことです。場合によっては、それが実際にはオプションではないことを認識していますが、これまでに見つけた中で最高です.

于 2010-12-02T00:24:28.153 に答える
1

現在、watir は、アタッチしたいウィンドウが "Internet Explorer" と呼ばれるものであると想定しています。IE8の名前はこれとは違うかもしれないと思います。これは、ie-class.rb の 238 行で変更できます。

ブレット

于 2010-05-03T14:58:34.250 に答える
1

ユーザー アカウント制御をオフにします (最低の設定に設定します)。[コントロール パネル] -> [システムとセキュリティ] -> [アクション センター] -> [ユーザー アカウント制御設定の変更] に移動し、スライダーを最低の設定にドロップします。

私は同じ問題を経験していましたが、これで解決しました。

于 2011-05-27T00:00:11.140 に答える