(五)使用Watir::Waiter::wait_until进行等待操作
使用过watir对网页进行测试的朋友,一定会遇到这样的问题。当使用sleep或者ie.wait的时候,由于网速太慢页面没有在制定的时间内页面没有下载完或者指定等待的时间太短,都会导致脚本不能找指定的html tag,系统会给出警告性语句,接下来的所有存在于这个单元测试的方法都会执行不了,rb会对剩下的所有方法给出同样的警告性错误,非常的让人头痛。
(1)使用ie.wait进行等待操作。
Ie.wait这个方法不好使用在于,它把确定网页是否加载完全交给了ie自己判断,所以有的时候ie会认为自己已经加载完整个网页,而这时ie其实是判断失误的。
(2)使用sleep方法进行等待操作。
Sleep n ,n是时间数,就是说你想让你的网页进行等待操作都行,但是有的时候并不能够准确的评估出来网页加载所需要的准确时间,有的时候这个方法也是不那么非常好用的,并且如果你给的时间过长,会造成你的测试效率低。
sleep 1 until ie.text.include? “new results are loaded”
上面的例子使脚本一直处于等待状态,知道页面出现”new results are loaded” 才继续执行
(3)使用wait_until方法进行等待操作。
如果你的页面一直不出现“new results are loaded”怎么办?你要一直等待?还是关闭脚本重新来过?如果下次还是遇到相同问题怎么办??
Watir中的Waiter类的“wait_until”方法 ,这个方法让watir一直等待,直到页面出现了所需要的内容,脚本就继续执行下面的步骤;如果在60秒内,页面没有出现所需要的内容,就给出警告性错误信息。
wait_until {ie.text.include? “new results are loaded”}
给朋友们一个简单的列子:
require ‘watir’
browser = Watir::Browser.start(’http://www.google.com’)
# In this case all I care about is the text field existing, you could
# check title, text, anything you’re expecting before continuing
Watir::Waiter::wait_until { browser.text_field(:name, ‘q’).exists? }
browser.text_field(:name, ‘q’).set(’ruby poignant’)
如果想查看更详细的内容,请链接: