说说watir-webdriver那些事(五)如何进行等待

Watir会等待页面load完毕,才能进行下面的操作,所以不需要等待页面加载完毕。这里所说的等待,是指在Web页面中,经常碰到的Ajax异步加载。这种加载,会在你进行一个操作后,对后台进行交互,而这种交互不会占用前台的等待,你可以进行其他任何在这个页面的其他操作,交互完毕后,可能会弹出窗口,可能会弹出控件,也可能一个控件消失。我们要做的就是等待这种过程的结束,之后进行测试案例下面的操作。等待的方法,大致上有下面几种方法

 

Watir::Wait.until { ... }:         等待block里面的值为true停止
object.when_present.set:     当次控件存在你可以做set
object.wait_until_present:;   等待到控件出现为止
object.wait_while_present:;  等待到控件消失为止
 

 

下面是一个官方的例子,可以从这个例子上看到相关的用法

 

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' }

 

默认的等待时间是30秒,如果到了30秒没有等待到结果,则报超时错误,当然你也可以修改这个时间,你可以通过如下的方法,修改默认的等待时间

 

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

你可能感兴趣的:(webdriver)