ドキュメントの私の理解から、この一般的なアプローチはうまくいくはずです:
begin
try1
rescue
try2
rescue
try3
.
.
.
rescue
puts "Everybody failed, sorry man!"
end
ただし、Watir-Webdriver ブラウザーを開こうとするたびに、2 番目の$browser = Watir::Browser.newを超えて試行しないようで、189 行目でスクリプトを終了し、 接続が拒否されました - connect(2) (Errno::ECONNREFUSED )
Code.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 を失敗させるために、存在しない X サーバーに事前に DISPLAY=:88 を意図的に設定したので、このエラーは問題ありません: 186: 60 秒で安定した firefox 接続を取得できません (127.0.0.1:7055)
ここでどこが間違っているのですか、これを行うためのより良い方法はありますか? これは Selenium や Watir に特有のものですか?