watir-webdriver中的动态等待方法

本文介绍如何在Watir-Webdriver中避免使用sleep语句,并通过使用Watir::Wait方法(如until, when_present, wait_until_present, wait_while_present)和WebDriver的隐式等待来优化等待体验,提高测试效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当你的测试页面包含一些动态的交互,比如有许多AJAX时,等待页面加载完毕往往是一件很头痛的事情。

显示的等待

Watir-Webdriver提供了4种方法使你的等待体验不再痛苦(将那些丑陋的sleep语句从代码中移除掉吧):

  • Watir::Wait.until { ... }: 等待,直到block中的语句为true
  • object.when_present.set: 当object出现时去操作objcet,这个例子里是调用了object的set方法,当object存在的时候
  • object.wait_until_present:等待,直到object出现
  • object.wait_while_present:等待,直到object消失

默认情况下,上面的方法会等待30秒,不过你也可以在调用方法时传入1个参数来增加(减少)等待时间,如果需要的话。

?
require 'watir-webdriver'
b = Watir::Browser.start '17test.info/watir_wd_demo.php'
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'  }

  

隐式的等待

另一个选择是使用WebDriver的隐式等待。脚本每次在定位测试元素的时候总是会隐式的等待一段时间(在这段时间内如果元素无法被定位到,那么脚本就会抛出异常),你可以通过改变driver的属性来自行指定这个隐式的等待时间:

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

注意:使用隐式等待会使得你的测试用例运行速度变慢并且当用例失败时其失败原因会更难定位。


url:http://www.cnblogs.com/nbkhic/archive/2013/06/02/3113492.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值