4

さて、watir-webdriver wait for page load>このトピックについてコメントしたかったのですが、担当者が 1 人いるのでできません。

watir スクリプトを watir-webdriver にアップグレードしています。Firefox で実行した最初のテストでは、次の結果が得られました。

Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {"method":"tag name","selector":"body"}

私がしていたのは、自分のアプリにログインし (うまくいきました)、[ビルド情報] リンクをクリックして、次のことを行うことだけでした。

@browser.text

これは一貫して起こりました。ここを読んだ後、クリックした後、@browser.text の前にスリープ状態にすると、うまくいきました。私の結論は、明らかに、Firefox ドライバーは、ページがロードされるまで待っていないということです。

-> POST session/8607aaa2-d72d-448a-85e1-3f96a1766da1/element
{"value":"body","using":"tag name"}

私の質問は、これは孤立したインシデント (@browser.body の呼び出し、完全に典型的な呼び出しではない) ですか、それとも待機を使用する必要があるのでしょうか? ブラウザーが準備完了状態になるまでドライバーが待機することを期待できない場合、watir の全体的な美しさが失われているようです。また、watir-webdriver 用の dev google グループなどはありますか? ますます多くの問題が発生する気がします (IE9 にいくつかあります)。おそらく、Alister のブログでも質問します (これはすばらしいことです)。

4

1 に答える 1

6

Watir-WebDriver は、ページの準備が整うまで待機する必要がありますが、問題は、あまりにも多くのコンテンツが動的に生成されるため、準備完了の明確な定義が実際には存在しないことです。

これは、待機中のヘルパー メソッドが輝く場所です: http://watirwebdriver.com/waiting/

期待していることがわかっている要素を見つけて、次のようなものを使用します。

require 'watir-webdriver'
b = Watir::Browser.start 'bit.ly/watir-webdriver-demo'
b.select_list(:id => 'entry_1').wait_until_present

アップデート:

あなたの問題はネイティブイベントに関連していると思います。ネイティブ イベントを無効にしてみてください

profile = Selenium::WebDriver::Firefox::Profile.new
profile.native_events = false
b = Watir::Browser.new WEB_DRIVER, :profile => profile
于 2011-09-15T00:52:54.870 に答える