Ruby-Watir Warning - Selenium::WebDriver::Error::ObsoleteElementError

Ruby-Watir Warning - Selenium::WebDriver::Error::ObsoleteElementError

大家好,我收到一条警告 运行 我的 watir 测试自动化代码,即使它有效,我也想解决它。

The Warning: 2020-02-12 08:35:47 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::ObsoleteElementError is deprecated. Use Selenium::WebDriver::Error::StaleElementReferenceError (ensure the driver supports W3C WebDriver specification) instead.

违规代码行:

iframe.select(:id => 'col0').wait_until(&:present?)

来自这个更大的片段。

 iframe = @b.iframe(:title => /Mass Delete/)
  iframe.wait_until(&:present?)
  if iframe.present?
    iframe.link(:visible_text => /Mass Delete #{type}/).click
    iframe.select(:id => 'col0').wait_until(&:present?)
    iframe.option(:text => /Owner Alias/).select
    iframe.option(:text => 'equals').select
    iframe.text_field(:id => "fval0").set user
    iframe.button(:title => "Search").click
  else
   raise "Unable to locate the Salesforce Iframe"
end

这是页面 html:

Page Html

我试过使用不同的定位器与该元素交互,但无济于事。

这将在 Watir 的下一版本中解决 - 确切的发布日期待定。在短期内,您有几个选项可以隐藏警告。

记录到文件

我建议将 Selenium 日志发送到文件中。这使它保持分离,并且在您碰巧需要它时仍然可用。

Selenium::WebDriver.logger.output = 'selenium.log'

忽略警告

通常您不需要 Selenium 警告,因为它们应该通过 Watir 更改得到解决。因此,您可以更改 Selenium 记录器以忽略警告:

Selenium::WebDriver.logger.level = :error