我不相信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