在Watir中超时错误后重试测试站点

时间:2013-04-19 18:01:48

标签: ruby timeout watir rescue

我正在浏览一个站点列表,并使用Watir查找每个站点,以查找每个页面的源代码中的内容。但是,在大约20或30个站点之后,浏览器在加载某个页面时超时并且它会破坏我的脚本并且我收到此错误:

  

rbuf_fill:执行过期(超时::错误)

我正在尝试实现一种方法来检测它何时超时,然后重新开始测试从中断处停止但却遇到问题的网站。 这是我的代码:

ie = Watir::Browser.new :firefox, :profile => "default"
testsite_array = Array.new
y=0
File.open('topsites.txt').each do |line|
testsite_array[y] = line
y=y+1
end
total = testsite_array.length
count = 0
begin
    while count <= total
        site = testsite_array[count]
        ie.goto site
        if ie.html.include? 'teststring'
            puts site + ' yes'
        else
            puts site + ' no'
        end

rescue
retry
    count = count+1
    end
end
ie.close

1 个答案:

答案 0 :(得分:3)

你的循环可以是:

#Use Ruby's method for iterating through the array
testsite_array.each do |site|
    attempt = 1
    begin
        ie.goto site
        if ie.html.include? 'teststring'
            puts site + ' yes'
        else
            puts site + ' no'
        end 
    rescue
        attempt += 1

        #Retry accessing the site or stop trying
        if attempt > MAX_ATTEMPTS
            puts site + ' site failed, moving on'
        else
            retry
        end
    end
end