2012-02-15 14 views
0

私はwatir-webdriverを使ってWebアプリケーションのテストを実行しています。watir-webdriverを使用してjsアラートを待っています

このページは、確認の後にページチャーンとアラートの入力変更に応答します。

** UPDATE **

私は次のことを試してみましたが、私は確認ブロックで始まりSelenium::WebDriver::Error::UnhandledAlertErrorを取得します。

require "watir-webdriver/extensions/alerts" 

b.alert do 
    b.confirm(true) do 
    b.checkbox(:index => 1).set 
    end 
end 

** ENDのUPDATE **

しかし追加(入力変更後)以下:

browser.driver.switch_to.alert.accept 

は最初の確認には問題を却下しません...

残念ながら、ページチャーンが同じ行を試行して次のアラートを閉じるようにすると、

Selenium::WebDriver::Error::NoAlertPresentError 

アラートはまだ発生していません。

私の回避策は、ワチール::ブラウザ

def get_alert (timeout = 300) 
    Watir::Wait.until(timeout) { 
    begin 
     driver.switch_to.alert 
    rescue Selenium::WebDriver::Error::NoAlertPresentError 
    end 
    } 
end 

に次のメソッドを追加して行うためのより良い/ビルトイン方法はあり

browser.get_alert 

を通じて取り扱うすべてのアラートを実行することですこの?私の

** UPDATE **

一つの利点仕事は、周りにそれは私がb.alert/b.confirm内のブロックを読み(または生成)するのは難しいとの手続きではなく、警告を処理することができますされ

事前に

** ENDのUPDATE **

おかげで、 ARTH

答えて

2

ワチール-webdriverをサイト上dialogsページあたりとして - >

require "watir-webdriver/extensions/alerts" 

browser.confirm(true) do 
    browser.button(:value => 'Confirm').click 
end #=> 'the confirm message' 

したがって、browser.driver.switch_to.alert.acceptまたはbrowser.get_alertを呼び出す代わりに、特定のケースでは上記を呼び出すことができます。

これが役に立ちます。

+0

注意を。上記の例は、「Confirm」という値のボタンを持つテスト用HTMLページを使用するrspecテストからのものです。このボタンをクリックすると、確認の警告が表示されます。そのコード行は、あなたのケースで確認ダイアログを表示するアクションに変更する必要があります。 –

+0

ありがとうございます...しかし、多分私はダイアログページを知っており、このアプローチを成功させずに試みたことを明確にしておくべきでした。 私は私の言葉で言及したように、私は確認、その後にページの読み込みが続き、さらに多くの問題を引き起こしている警告が続きます。私はこれをもっと明確にするためにそれを更新します... – Arth

0

これはあなたのページにアクセスしなくてもうまくいくかどうか知るのは難しいですが、このようなことを試してみたことがありますか?

require "watir-webdriver/extensions/alerts" 

b.alert do 
    b.checkbox(:index => 1).set 
    browser.driver.switch_to.alert.accept 
    #possibly a wait here... 
end 
0

あなたが今できるようAlerts API新しいは、標準待っているのメソッドがあります。上記のやる内部のコードは警告が表示されるようになり何もしようとしていること

browser.alert.when_present.ok 
関連する問題