1

一部のWebサイトでのフォーム送信を自動化するために、ChromedriverでWatirを使用しています。ログインして複数のフォームを送信する必要があります。問題は、送信ボタンをクリックするとページが自動的に閉じるため、goto('next_url') すると次のエラーが発生することです。

/Users/jackz/.rvm/gems/ruby-1.9.3-p327/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/remote/response.rb:52:`assert_ok': 'auto_id'開いているタブを参照していません (Selenium::WebDriver::Error::UnknownError)

Watir インスタンスはまだそこにありますが、ウィンドウは閉じられています。毎回新しいインスタンスを作成することもできましたが、毎回再度ログインする必要があり、これには時間がかかりました。

では、どうすれば次のいずれかを実行できますか:

同じ Watir インスタンスで新しいウィンドウを開く

また

送信後にウィンドウが閉じないようにする

require 'watir-webdriver'
@b = Watir::Browser.new :chrome
@b.goto(URL)
@b.buttons.first.click

#this is when the window closes
@b.goto(NEW_URL)
#then I get an error

ありがとう

4

3 に答える 3

2

私は自分の質問に対する答えを見つけました。javascript を使用して、Watir で新しいウィンドウを開くことができます。

b = Watir::Browser.new
b.execute_script("window.open()")
b.windows.last.use

これにより、フォームに入力できるウィンドウが開き、ウィンドウが自動的に閉じても元のウィンドウで作業できます。おそらく最善の解決策ではありませんが、今のところうまくいきます。

于 2013-01-04T17:23:44.167 に答える