说说watir-webdriver那些事(五)怎么进行等待
说说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