当前位置: 代码迷 >> Web前端 >> 说说watir-webdriver那些事(五)怎么进行等待
  详细解决方案

说说watir-webdriver那些事(五)怎么进行等待

热度:227   发布时间:2012-08-27 21:21:57.0
说说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 
?
  相关解决方案