维护 Selenium/Ruby 脚本匹配 Chromedriver+Chrome 版本的最佳实践

Maa*_*arx 1 ruby selenium google-chrome selenium-chromedriver selenium-webdriver

我有一个非常简单的 Selenium/Ruby 脚本,其中包含以下关键行摘录:

#!/usr/bin/env ruby
...
require 'selenium-webdriver'
...
options = Selenium::WebDriver::Chrome::Options.new
...
driver = Selenium::WebDriver.for :chrome, options: options
...
driver.quit
Run Code Online (Sandbox Code Playgroud)

很简单,它只使用操作系统 (Ubuntu Linux) 为 Chrome 和 Chromedriver 提供的默认产品。

有时,Chrome 会自动更新,而 Chromedriver 不会,导致脚本在运行时开始失败:

This version of ChromeDriver only supports Chrome version XX
Current browser version is YY with binary path /usr/bin/chromium-browser
Run Code Online (Sandbox Code Playgroud)

每次手动更新Chromedriver对我来说是微不足道的,但却很烦人。

自动保持 Chromedriver 更新以匹配 Chrome 的最佳实践方法是什么?

cru*_*dey 5

通常在Python中我们使用auto installer请参见这里,这基本上是chromdriver针对适当的chrome浏览器版本自动安装。Java-Selenium我们在绑定和使用中具有相同的功能WebdriverManager

由于您只要求在 中ruby-Selenium bindings,我可以找到一个 Github 存储库,请参阅此处

通过自动安装和更新所有受支持的 Web 驱动程序,更轻松地运行 Selenium 测试。

  1. 铬驱动程序
  2. 壁虎司机
  3. IE驱动服务器
  4. 消息驱动程序

适用于macOSLinuxWindowsWindows Subsystem for Linux (WSL) v1v2请参阅底部的浏览器和操作系统特定注释。

用法

在你的 Gemfile 中:

gem 'webdrivers', '~> 4.0', require: false
Run Code Online (Sandbox Code Playgroud)

在你的项目中:

require 'webdrivers'
Run Code Online (Sandbox Code Playgroud)

现在,当您通过 Selenium 启动浏览器时,将自动下载或更新驱动程序。