【问题标题】:chrome browser closes automatically after the program finishes in ruby using watir程序在 ruby 中使用 watir 完成后,chrome 浏览器会自动关闭
【发布时间】:2017-02-20 21:28:19
【问题描述】:
我正在使用 chrome 56、chrome 驱动程序 2.27(最新版本)和 selenium web 驱动程序 3.1.0。提到问题(https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/1811),一旦程序完成,chrome 就会关闭所有实例,并且它没有给我调试的机会。我只是想知道这是否已解决,那么为什么它仍在发生?或者我错过了什么?
我正在使用以下代码。任何帮助表示赞赏。
require "uri"
require "net/http"
require 'watir-webdriver'
require 'selenium-webdriver'
@b = Watir::Browser.new :chrome
@b.goto 'http://www.google.com'
【问题讨论】:
标签:
ruby
google-chrome
selenium
watir-webdriver
【解决方案1】:
首先,不推荐使用 watir-webdriver gem。更新后的代码在 Watir gem 中。此外,您不需要直接要求任何其他宝石。
当 ruby 进程退出时,chromedriver 服务停止。如果您不希望 chromedriver 启动的浏览器也关闭,则需要使用 detach parameter。目前这样做是这样的:
require 'watir'
caps = Selenium::WebDriver::Remote::Capabilities.chrome
caps[:chrome_options] = {detach: true}
@b = Watir::Browser.new :chrome, desired_capabilities: caps
【解决方案2】:
声明这些
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {'detach' => true})
browser = Watir::Browser.new :chrome, desired_capabilities: caps
附带说明!当您运行多个场景测试时,这可能会出现问题,如果其他测试在同一个 chrome 会话中启动,chromedriver 将主动拒绝连接。确保您在需要时拥有browser.close。