watir 字符串值被贬值 Ruby

watir a string value is depriciated Ruby

Warn Watir [Depreciation] using the :class locator to locate multiple classes with a string value is deprecated. Use array instead

我在 运行 这行

时收到此错误
browser.button(:class => '_t38eb _ov9ai').click

我认为是一个 class 不是多个 class我在交战中提到过这个

browser.button(:class => ['_t38eb','_ov9ai']).click

但是页面冻结然后终止 我正在尝试使用 scarab 的网站是 Instagram,在填写用户名和密码字段后尝试登录页面

如果我写这个,chromedriver 会终止

browser.button(:class == '_t38eb _ov9ai').click

仅供参考:Watir 是开源的。

This line 是弃用警告的来源。

此弃用的原因是使用 contains(this) and contains(that) 构建更惯用的 xpath。

我不确定它为什么会冻结,但我肯定忽略警告是完全安全的。

Chrome 驱动程序和 Firefox 驱动程序在您自动化时存在差异,您的浏览器正在关闭,因为 chrome 驱动程序在执行您的代码后关闭浏览器一次,但 Firefox 驱动程序不会关闭浏览器。如果您想让 chrome 浏览器保持打开状态,请使用此代码

require 'watir'
caps = Selenium::WebDriver::Remote::Capabilities.chrome(chrome_options: {detach: true})
b = Watir::Browser.new :chrome, desired_capabilities: caps

下面给出的代码不起作用

browser.button(:class == '_t38eb _ov9ai').click

那是因为 button() 方法需要哈希对象而不是你在写 :class == '_t38eb _ov9ai'

时传递的 TrueClassFalseClass 的对象

如果要传数组,最好用#split:

browser.button(:class => '_t38eb _ov9ai'.split).click