2011-10-20 18 views
2

firefoxでwatir-webdriverを使ってページの読み込みを停止する方法はありますか?または、ページがまだ読み込まれていてもスクリプトに何かを強制する方法はありますか?私のスクリプトのある時点で、ウェブサイトはハングし、スクリプトは最終的にタイムアウトします。ページの読み込みを停止するwatir-webdriver

答えて

3

あなたは合理的な量の時間を待った後に放棄することを強制するためにタイムアウトクラスを使用することができます(これはワチールは、それが同様に待機しますどのように実行するか、内部である)

begin 
    Timeout::timeout(10) do 
    # perform actions that may hang here 
    end 
rescue Timeout::Error => msg 
    put "Recovered from Timeout" 
end 
2

Webサイトがハングアップする場合、要素が表示されない場合は、スクリプトをタイムアウトするためにwaitメソッドを使用できるはずです。これらは主にAJAXの答えとして使用されますが、この条件にも対応する必要があります。たとえば、スクリプトがあなたがリンクをクリックした後にハングアップ、そしてあなたは、次のページは、特定のタイトルやテキストを持っていることを期待している場合:

@browser.link(:name => "Let's Hang!").click 
Watir::Wait.until(30) { @browser.title == "new page" } 

または

Watir::Wait.until(30) { @browser.text.include? ("confirmation text") } 

または

@browser.image(:src => "awesome.jpg").wait_until_present(30) 

これらのそれぞれは、エラーが発生する前に条件が満たされるまで30秒間待機します。あなたのアプリのハングウィンドウ内で終了する時間(30)を変更することができます。

+0

私はこれがうまくいくとは思いませんテストされているページの読み込みがテストを終了しない場合は、待機が開始できるポイントまで進まない場合があります。 – anonygoose

+0

誰かが、テスト用に現在読み込まれていないページを持つサイトを持っていますか? –

+1

クリックの代わりにclick_no_waitを使用できますか? –

関連する問題