2011-09-15 15 views
4

私はwatir-webdriverがページの読み込みを待つ>このトピックにコメントしたいと思っていますが、1人の担当者がいるので私はできません。なぜwatir-webdriverとfirefoxを使用してスリープ状態になるか待つ必要がありますか?

私は、私はFirefoxの上で走った最初のテスト-webdriverををワチールために私ワチールスクリプトをアップグレードしていますが得られた:

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

を私がやっていたすべてが(うまく働いた)私のアプリにログインした際に、クリックビルド情報のリンクをクリックし、以下を実行します。

@browser.text 

これは一貫して起こりました。ここで読んだ後、私はクリック後と@ browser.textの前に寝ていました。私の結論は、ページが

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

だから私の質問があり、これは孤立した事件である(完全に一般的なコールではありません呼び出しの@ browser.bodyを)しようとする前にロードされるまで、Firefoxのドライバーが待っていないことは明らかですまたは私は待つ必要がありますか?ブラウザが準備完了状態になるまでドライバが待つことを期待できないと、ワイの美しさが失われているようです。また、devのgoogleグループや何かがwatir-webdriverのためにありますか?私は、IE9でいくつかの問題が増えていくと感じています。私はおそらくAlisterのブログ(岩、btw)でも尋ねます。

+1

watir-webdriverとselenium-webdriverのどのバージョンをお使いですか? –

+1

私はselenium-webdriver 2.4.0をインストールしようとしていて、同じ問題があるかどうか確認してください。 –

+0

にはその情報が含まれているはずです:ruby 1.8.7 p352、selenium-webdriver(2.5.0)watir(2.0.1)watir-webdriver (0.3.3) – jwallis

答えて

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 
+0

私たちのアプリはたくさんのAjaxを使用しており、一部のコンテンツが非同期的にクライアントに届いていることがよくあります。私はwatir 1.6.2を使用して以来、これを考慮に入れましたが、この例では、コンテンツが静的であることを95%確信しています。私はどこにでもウェイトを追加する必要がありません(それは私が数年前にワイアを選んだ理由でした)が、私が "ウォーターラッパー"レイヤーにそれらを追加しなければならないことを避けるために、戦略、セレン開発者は、これまでにアクセスされたすべてのオブジェクトのための組み込みのwait_until_presentを持っていたでしょう... – jwallis

+0

ネイティブイベントを無効にしてみてください。それは私のためのものを固定 –

+0

よく幸い私はすでにすべての私のwatirコールをラップするWatirUtilレイヤーを持っていたので、私は基本的にそれを修正し、N秒間クリック、設定、クリアなどを試みるレスキューブロックにすべてをラッピングしています。私は本当にこれが嫌いです。このレイヤーを既に実装していないと、WWを使用できなくなり、完全に99.9%の時間を費やしていたwatirに戻る必要があります。私はネイティブのイベントのコメントに感謝しますが、あなたのブログごとに私はすでにそれを設定していたでしょう... – jwallis

関連する問題