rspec:在 Chrome 无法访问异常时重新启动浏览器

rspec: restarting browser on Chrome not reachable exceptions

我使用 rspec 3.9、capybara 3.16 和 selenium-webdriver 3.141 以及 chrome 73 来测试大型 Web 应用程序。我有很多功能规格,迟早 chrome 会变得无响应,我可以看到 window 打开但没有任何反应。这也发生在无头模式下。这没有规律可循,它只是随机发生的。

Failure/Error: example.run

          Selenium::WebDriver::Error::WebDriverError:
            chrome not reachable
              (Session info: chrome=73.0.3683.86)
              (Driver info: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Linux 3.10.0-1062.12.1.el7.x86_64 x86_64)

我想做这样的事情:

config.after(:each, type: :feature) do |example|
   if example.exception
      # restart chrome!
   end
end

与 rspec-repeat 结合使用,最多可尝试 3 次。但我不确定如何重新启动浏览器。

有人知道怎么做吗?

您可以使用 Capybara.current_session.quit 退出会话。这将导致在下一个 visit 调用时启动一个新的 Chrome 实例。 https://www.rubydoc.info/github/teamcapybara/capybara/Capybara/Session:quit