根据我对文档的理解,这种通用方法应该有效:
begin
try1
rescue
try2
rescue
try3
.
.
.
rescue
puts "Everybody failed, sorry man!"
end
但是,每当我尝试打开 Watir-Webdriver 浏览器时,它似乎永远不会尝试超过第二个$browser = Watir::Browser.new,在第 189 行结束脚本, 连接被拒绝 - connect(2) (Errno::ECONNREFUSED )
代码.rb:
begin
$browser = Watir::Browser.new(:firefox, :profile => "botmode") # **line 186**
rescue
$browser = Watir::Browser.new(:remote, :url => "http://127.0.0.1:4444/wd/hub", :desired_capabilities => :firefox) # **line 189**
rescue # local selenium htmlunit
puts __LINE__.to_s + ": #{$!}"
# $browser = Watir::Browser.new(:remote, :url => "http://127.0.0.1:4444/wd/hub", :desired_capabilities => :htmlunit) # but needs Javascript for AJAX support...
$browser = Watir::Browser.new(:remote, :url => "http://127.0.0.1:4444/wd/hub", :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.htmlunit(:javascript_enabled => true, :cssSelectorsEnabled=>true, :nativeEvents=>false) )
rescue # Try to use VentanaPC if still failing..
$browser = Watir::Browser.new(:remote, :url => "http://5.19.111.226:4444/wd/hub", :desired_capabilities => :firefox)
rescue # no browser left to failover to
puts __LINE__.to_s + ": #{$@.to_s}"
end
# ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
为了让第186行失败,我特意提前设置了DISPLAY=:88到一个不存在的Xserver,所以这个错误是可以的:186: unable to get stable firefox connection in 60 seconds (127.0.0.1:7055)
我在哪里出错了,还是有更好的方法来做到这一点?这是 Selenium 或 Watir 特有的东西吗?