Ruby Watir Selenium WebDriver 已过时警告

6

我正在尝试在新的服务器上运行Ruby Watir脚本。
我已经在旧服务器上编写了一个可工作的脚本:

#!/bin/ruby
require 'rubygems'
require 'watir'
require 'date'
require 'headless'
require 'fileutils'
require 'uri'
require 'logger'

headless = Headless.new(autopick: true, reuse: false, destroy_at_exit: true).start
options = Selenium::WebDriver::Chrome::Options.new
options.add_preference(:download, prefs)
options.add_argument('--ignore-certificate-errors')
options.add_argument('--disable-popup-blocking')
options.add_argument('--disable-translate')

b = Watir::Browser.new(:chrome, options: options)
b.goto 'someurl.com'
b.div(:id => 'IFRAME1').iframe.body.div(:id => 'DIVID1').div(class: ['Test1', 'Test2']).link(:id => 'DIVID2').click #getting warning here

我收到的警告如下:
WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::ElementNotVisibleError已经弃用。使用Selenium::WebDriver::Error::ElementNotInteractableError(确保驱动程序支持W3C WebDriver规范)代替。
当前服务器版本:
headless (2.3.1, 2.2.0) selenium-webdriver (3.4.4) watir (6.6.3)
新的服务器版本:
headless (2.3.1) selenium-webdriver (3.142.3, 3.142.0) watir (6.16.5)
我有一种感觉,问题出在版本不匹配,但我无法确定。
到目前为止,我还没有找到任何解决方法。
1个回答

13

TL/DR:

以下三种方案中选一:

  1. 忽略它们,你没有做错任何事情。
  2. 升级到 Chrome v75+。
  3. 暂时降级到 Selenium 3.141.0。

Selenium 曾经采用 JSON Wire Protocol 实现,其中详细规定了驱动程序端点的格式和期望的负载格式等。不幸的是,每个浏览器驱动程序实现都有其自己的特殊边缘情况和独特之处,这使跨浏览器测试更加具有挑战性。Selenium 开发人员和浏览器供应商一起商定了一个 w3c 标准,用于这些交互,以便可以按适用于所有浏览器的方式完成所有操作。该标准在 2018 年作为 w3c 推荐发布。Google 是最后一个启用 w3c 合规模式的浏览器供应商,并且这将在 Chrome v75 中默认开启(今天发布)。

Selenium 3.142是Selenium 4之前的最后一个版本。 Selenium 4将彻底删除对旧协议的支持。因此,Ruby Selenium团队决定在代码中针对任何在Selenium 4中不起作用的内容发出警告。由于Chrome < 75默认情况下不符合w3c标准,因此它将无法与Selenium 4一起使用,因此Selenium会发出警告。请注意,这是由驱动程序响应引起的错误,因此您的代码中没有需要更改以避免此问题的内容。


非常感谢您的精彩解释。 - Andrey
1
我有点晚了,但这似乎不再起作用。我将我的Selenium gem锁定在3.141.0,并确认它是正在运行的版本。我使用的是最新的Chrome浏览器。我得到了与原始问题报告的完全相同的一系列消息。 - Jeff Nyman
@JeffNyman 最新版本的Selenium现在应该可以正常工作。 - titusfortner
@titusfortner 我正在使用selenium-webdriver 3.142.7(似乎是最新版本),但仍然收到那些弃用消息。但现在我想知道是否是由于我使用的其他库之一导致的。我正在使用webdrivers 4.2.0watir 6.16.5。除非你所说的“最新版本的Selenium”是指转移到其中一个4.x alpha版本? - Jeff Nyman
不,我已经有一段时间没有机会看Watir了。我会去查一下。 - titusfortner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接