當你的測試頁面包含一些動態的交互,比如有許多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