【问题标题】:Capybara doesn't close browser when Net::ReadTimeout error happens发生 Net::ReadTimeout 错误时,Capybara 不会关闭浏览器
【发布时间】:2016-08-09 15:29:52
【问题描述】:


我正在使用 Capybara、Cucumber 和 Selenium Webdriver (Ruby) 为 Rails 应用程序运行测试。我有一个问题:为什么当 Net::ReadTimeout 发生时 Capybara 不关闭浏览器,即使我有一个钩子要求浏览器在每个测试场景后退出?当 Net::ReadTimeout 发生时,如何强制它关闭浏览器?
这是我的 hooks.rb

after do |scenario|
  if scenario.failed?
    page.driver.browser.save_screenshot("#{scenario.__id__}.png")
  end
  Capybara.current_session.driver.browser.manage.delete_all_cookies
  Capybara.current_session.driver.quit
end

【问题讨论】:

    标签: ruby selenium cucumber capybara


    【解决方案1】:

    我有另一个适合我的解决方案。

    1. 添加宝石capybara-screenshot

    2. 以这种方式配置您的spec_helper.rb

    Capybara::Screenshot.autosave_on_failure = true
    
    Capybara::Screenshot.prune_strategy = :keep_last_run 
    
    Capybara.default_wait_time = 60
    

    【讨论】:

    • 你也可以保存所有失败的场景截图并命名为你想要的
    • 谢谢,但我可以保存失败的屏幕截图。但是在这种情况下,当 Net::ReadTimeout 发生时,场景在没有关闭浏览器的情况下失败。这就是问题所在。
    • James,这就是我为您提供使用 Capybara.screenshot gem 的原因。我之前遇到和你一样的问题,选择了gem。
    • 感谢@Tatyana Kosachova
    猜你喜欢
    • 1970-01-01
    • 2020-05-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 2010-09-19
    • 2011-12-13
    • 1970-01-01
    相关资源
    最近更新 更多