watir提供的wait方法有:
Watir::Wait.until { ... }:
等待你指定的block出現變?yōu)閠rue
object.when_present.set:
當對象出現時,你可以做點你set的什么
object.wait_until_present:
純粹的等待對象的出現,什么都不干
object.wait_while_present:
純的等待直到對象消失
對于動態(tài)頁面來說,尤其是有很多Ajax代碼的頁面,需要使用wait來進行等待,但是watir的wait是等待頁面完成之后結束了,實際上Ajax很多代碼要在頁面load之后還在加載,這樣的話,導致等待無效,真正有效的是Wait_while_present
我們可以自己添加一個簡單的方法進行處理:
def wait_for_ajax
browser.div(:id, 'ajax-loader').wait_while_present
end
默認的等待時間是30秒,你可以通過參數去設定時間長度:
b.select_list(:id => 'entry_1').wait_until_present(100)
等待一百秒
下面是一些簡單的例子
require 'watir-webdriver'
b = Watir::Browser.start 'bit.ly/watir-webdriver-demo'
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' }
你甚至可以使用 Implicit waits 來設置長的等待時間,例如:
require 'watir-webdriver'
b = Watir::Browser.new
b.driver.manage.timeouts.implicit_wait = 3 #3 seconds
implicit wait的長的等待時間意味著3秒之內,只要找到對象,不再等待,直接進入下一步,而wait,要一直等到規(guī)定的時間超時才進行下一步。