【问题标题】:Launch Watir/Selenium Chrome driver binary from an arbitrary location从任意位置启动 Watir/Selenium Chrome 驱动程序二进制文件
【发布时间】:2015-06-13 00:51:22
【问题描述】:

我想使用 Watir 为旧版 chrome 启动一个 chrome,比如 /Application/Google Chrome 30.app

这是一个参考 link 说 chromedriver 期望 Chrome 安装在特定位置:

Mac /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome

这是一个参考 link,用于在非标准位置设置 Chrome 可执行文件

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

在给定语法的情况下,我如何使用 Watir 来做到这一点

driver = Watir::Browser.new :chrome

谢谢!

【问题讨论】:

  • 您是说您安装了多个版本的 Chrome 并且需要能够选择运行哪个版本?您引用的链接是关于设置“chromedriver.exe”的位置,这是另一回事。
  • 感谢您指出这一点。已更新问题。

标签: selenium watir selenium-chromedriver


【解决方案1】:

为特定浏览器实例设置二进制文件

Chrome 选项可以使用 :desired_capabilities 作为“chromeOptions”从 Watir 传递到 Selenium:

caps = {"chromeOptions" => {"binary" => 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'}}
browser = Watir::Browser.new(:chrome, desired_capabilities: caps)

注意binary 值(来自Chromedriver page):

要使用的 Chrome 可执行文件的路径(在 Mac OS X 上,这应该是 实际的二进制文件,而不仅仅是应用程序。例如,'/应用程序/谷歌 Chrome.app/Contents/MacOS/Google Chrome')

设置默认二进制

您也可以设置默认的二进制位置,而不是为每个浏览器设置二进制文件:

Selenium::WebDriver::Chrome.path = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
browser = Watir::Browser.new :chrome

【讨论】:

    【解决方案2】:

    直接更新您的 Selenium driver_path

    在启动新的 Chrome 浏览器窗口之前调用它:

    Selenium::WebDriver::Chrome::Service.driver_path = "/path/to/other/chrome/binary"
    

    当然,将路径更改为您的chromedriver 所在的位置。对于我们来说,我们使用了Rails.root.join( "lib", "chromedriver" ).to_s,因为它对项目来说是动态的,我们可以将它签入到 repo 中,它只适用于我们所有的工程师。

    注意:driver_path 必须是字符串,所以不要传入 FilePath 对象。

    【讨论】:

      【解决方案3】:

      我的建议是根本不要使用 WatiR,而只需使用“Selenium bindings”。我认为无论如何语法更容易理解。就使用 ChromeOptions 二进制位置参数而言,我会更信任 Selenium 绑定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-22
        • 2010-09-22
        • 1970-01-01
        • 2022-01-28
        相关资源
        最近更新 更多