這是我的代碼中的錯誤,還是Selenium,RSpec等中的錯誤?Selenium chromedriver與at_exit不太好玩
我正在寫的黃瓜測試需要關閉並重新啓動Chrome驅動程序。但是,我無法讓第二個驅動程序正常關閉。下面的簡裝例子說明了問題:(下面的代碼是RSpec的,只是因爲它表明這個問題不添加黃瓜的複雜性)
require 'selenium-webdriver'
RSpec.configure do |config|
config.before(:suite) do
$driver = Selenium::WebDriver.for :chrome
end
end
describe "A potential rspec/selenium/chrome driver bug" do
it "doesn't play nice with at_exit" do
# quit the initial driver and start a new one.
$driver.quit
$driver = Selenium::WebDriver.for :chrome
end # it
end # end describe
at_exit do
$driver.quit
end
當我運行這段代碼,我得到了以下錯誤:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:878:in `initialize': Connection refused - connect(2) (Errno::ECONNREFUSED)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:878:in `open'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:878:in `block in connect'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/timeout.rb:52:in `timeout'
我可以告訴,當at_exit
塊運行時,第二個chromedriver進程不再運行。這會導致問題,因爲導致關閉的任何機制都會打開Chrome窗口。
的RSpec的after(:suite)
機制按預期工作。黃瓜是否有相應的機制(at_exit
,在這種情況下不起作用)?或者,有沒有辦法阻止chomedriver在at_exit
區塊運行之前退出(所以我可以按照預期使用quit
方法關閉它)?
我使用的是最新的硒和RSpec軟件包在Mac OS 10.9.5上運行的Ruby 2.0.0。
代碼按照Safari和Firefox驅動程序的預期運行。在CentOS Linux中使用Chrome驅動程序運行此代碼時出現同樣的錯誤。 – Zack