0
ie.link(:id, "ctl00_ContentPlaceHolder1_BtnSearch").click

 rescue Timeout::Error
      #sleep(5)

            puts "timeout"
            ie.close

        #sleep(9)

        retry #open new browser and go to begin
            end`

当 .click 链接超时时,输出为 = timeout,但 ie.close 不起作用。超时错误来了 *我想在超时错误来时关闭浏览器*

4

1 回答 1

2

我不相信ie.link(:id, "ctl00_ContentPlaceHolder1_BtnSearch").click会抛出一个Timeout::Error。这就是为什么该rescue块永远不会执行的原因。

可能引发的异常是:

  • 当您这样做ie.link(:id, "ctl00_ContentPlaceHolder1_BtnSearch").click并且未找到该元素时,Watir::Exception::UnknownObjectException将发生 a 。
  • 当您这样做ie.link(:id, "ctl00_ContentPlaceHolder1_BtnSearch").when_present.click并且在要求的时间范围内未找到该元素时,Watir::Wait::TimeoutError将发生 a。

您的救援可能需要捕获这些异常之一。

begin
  ie = Watir::Browser.new
  ie.goto 'www.yourpage.com'
  ie.link(:id, "ctl00_ContentPlaceHolder1_BtnSearch").click
rescue Watir::Exception::UnknownObjectException
  puts "element not found"
  ie.close
  retry #open new browser and go to begin
end

或者,如果您when_present在元素上使用:

begin
  ie = Watir::Browser.new
  ie.goto 'www.yourpage.com'
  ie.link(:id, "ctl00_ContentPlaceHolder1_BtnSearch").when_presentclick
rescue Watir::Wait::TimeoutError
  puts "element did not appear in time"
  ie.close
  retry #open new browser and go to begin
end
于 2013-04-18T12:49:56.070 回答