Ruby Watir Selenium WebDriver запрещённое предупреждение - PullRequest
2 голосов
/ 04 июня 2019

Я пытаюсь заставить скрипт 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 [УСТАРЕВАНИЕ] Selenium :: WebDriver :: Error :: ElementNotVisibleError устарела. использование Selenium :: WebDriver :: Error :: ElementNotInteractableError (убедитесь, что драйвер поддерживает спецификацию W3C WebDriver).

Текущие версии сервера:

без головы (2.3.1, 2.2.0)

селен-вебдрайвер (3.4.4)

watir (6.6.3)

Новые версии сервера:

без головы (2.3.1)

селен-вебдрайвер (3.142.3, 3.142.0)

watir (6.16.5)

У меня такое чувство, что проблема связана с несоответствием версий, но я не могу точно определить это.

Пока мне не удалось найти решение.

1 Ответ

8 голосов
/ 04 июня 2019

TL / DR:

  1. Игнорируйте их, вы не делаете ничего плохого.
  2. Обновление до Chrome v75 +
  3. Понижение до Selenium 3.141.0 длятеперь

Раньше Selenium был реализован с помощью протокола JSON Wire, который детализировал конечные точки драйвера и форматирование полезной нагрузки, которую ожидали конечные точки, и т. д. К сожалению, каждая реализация драйвера браузера имела свои интересные пограничные случаи иособенности, которые сделали кросс-браузерное тестирование более сложным.Разработчики Selenium и производители браузеров собрались, чтобы договориться о стандарте w3c для этих взаимодействий, чтобы все можно было сделать так, чтобы это работало для всех браузеров.Этот стандарт был выпущен в 2018 году как рекомендация w3c .Google является последним поставщиком браузеров, который по умолчанию включил режим соответствия w3c, и это произойдет в Chrome v75 (который выпускается сегодня).

Selenium 3.142 - последняя версия Seleniumдо Selenium 4. Selenium 4 полностью уберет поддержку устаревшего протокола.Таким образом, команда Ruby Selenium решила добавить предупреждения в код для всего, что не будет работать в Selenium 4. Поскольку Chrome <75 не соответствует w3c по умолчанию, он не будет работать с Selenium 4 по умолчанию, поэтому Seleniumбросать предупреждение.Обратите внимание, что это ошибка в результате ответа от драйвера, поэтому в вашем коде нечего менять, чтобы этого избежать. </p>

...