您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源功能測(cè)試工具 > Watir
Watir WebDriver的wait應(yīng)用
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/1/13 9:56:56 ] 推薦標(biāo)簽:Watir WebDriver

watir提供的wait方法有:

Watir::Wait.until { ... }: 
等待你指定的block出現(xiàn)變?yōu)閠rue

object.when_present.set:   
當(dāng)對(duì)象出現(xiàn)時(shí),你可以做點(diǎn)你set的什么

object.wait_until_present: 
純粹的等待對(duì)象的出現(xiàn),什么都不干

object.wait_while_present:
純的等待直到對(duì)象消失


對(duì)于動(dòng)態(tài)頁面來說,尤其是有很多Ajax代碼的頁面,需要使用wait來進(jìn)行等待,但是watir的wait是等待頁面完成之后結(jié)束了,實(shí)際上Ajax很多代碼要在頁面load之后還在加載,這樣的話,導(dǎo)致等待無效,真正有效的是Wait_while_present

我們可以自己添加一個(gè)簡單的方法進(jìn)行處理:

def wait_for_ajax
  browser.div(:id, 'ajax-loader').wait_while_present
end

默認(rèn)的等待時(shí)間是30秒,你可以通過參數(shù)去設(shè)定時(shí)間長度:

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 來設(shè)置長的等待時(shí)間,例如:
require 'watir-webdriver'
b = Watir::Browser.new
b.driver.manage.timeouts.implicit_wait = 3 #3 seconds

implicit wait的長的等待時(shí)間意味著3秒之內(nèi),只要找到對(duì)象,不再等待,直接進(jìn)入下一步,而wait,要一直等到規(guī)定的時(shí)間超時(shí)才進(jìn)行下一步。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd