watir-webdriver中的動態等待方法

當你的測試頁面包含一些動態的交互,比如有許多AJAX時,等待頁面加載完畢往往是一件很頭痛的事情。

顯示的等待

Watir-Webdriver提供了4種方法使你的等待體驗不再痛苦(將那些醜陋的sleep語句從代碼中移除掉吧):

  • Watir::Wait.until { ... }: 等待,直到block中的語句爲true
  • object.when_present.set: 當object出現時去操作objcet,這個例子裏是調用了object的set方法,當object存在的時候
  • object.wait_until_present:等待,直到object出現
  • object.wait_while_present:等待,直到object消失

默認情況下,上面的方法會等待30秒,不過你也可以在調用方法時傳入1個參數來增加(減少)等待時間,如果需要的話。

?
require 'watir-webdriver'
b = Watir::Browser.start '17test.info/watir_wd_demo.php'
b.select_list(:id => 'entry_1').wait_until_present
b.text_field(:id => 'entry_0').when_present.set 'your name'
b.button(:value => 'Submit').click
b.button(:value => 'Submit').wait_while_present
Watir::Wait.until { b.text.include? 'Thank you' }

  

隱式的等待

另一個選擇是使用WebDriver的隱式等待。腳本每次在定位測試元素的時候總是會隱式的等待一段時間(在這段時間內如果元素無法被定位到,那麼腳本就會拋出異常),你可以通過改變driver的屬性來自行指定這個隱式的等待時間:

require 'watir-webdriver'
b = Watir::Browser.new
b.driver.manage.timeouts.implicit_wait = 3 #3 秒

注意:使用隱式等待會使得你的測試用例運行速度變慢並且當用例失敗時其失敗原因會更難定位。


url:http://www.cnblogs.com/nbkhic/archive/2013/06/02/3113492.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章