Как сделать так, чтобы JS через webkit работал так же, как через chromedriver? - PullRequest
0 голосов
/ 08 апреля 2019

Существует код JS, который отлично работает через chromedriver, но не работает через webkit.

Я обнаружил, что следующий JS не работает через webkit из-за ключей объекта, которые содержат числа

  var contactData = $selectedContact[0].dataset;
  # contactData object structure
  # {descriptionLine-1: "",descriptionLine-2: "", name: "", phone: ""}

Однако в chromedriver он работает нормально.

Конфигурации, которые я пробовал:

Capybara.javascript_driver = :webkit # the code above does not work with webkit
  # rails_helper.rb
  require "selenium/webdriver"

  Capybara.register_driver :chrome do |app|
    options = Selenium::WebDriver::Chrome::Options.new(args: %w[no-sandbox headless disable-dev-shm-usage])

    Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
  end

  Capybara.javascript_driver = :chrome

Как сделать так, чтобы JS, где ключи объектов содержали числа, работали с webkit

1 Ответ

1 голос
/ 08 апреля 2019

Если под "через webkit" вы имеете в виду использование драйвера capybara-webkit - https://github.com/thoughtbot/capybara-webkit с Capybara, то ответ, скорее всего, вы не можете.Драйвер capybara-webkit был основан на QtWebkit, который перестал разрабатываться много лет назад.Последняя стабильная версия QtWebkit, выпущенная 7-8 лет назад, в основном эквивалентна Safari, поэтому она не поддерживает много новых JS / CSS.Есть некоторые недостающие вещи, которые вы можете заполнить, и вы можете убедиться, что весь ваш JS перенесен в ES5, но он все равно не собирается на 100% копировать современный браузер.Это в сочетании с тем фактом, что проект capybara-webkit устарел и будет заархивирован в течение следующих нескольких недель, означает, что пришло время перейти на более новые драйверы.

Поскольку вы уже используете хром без головки через селен, не могли бы вы просто перенести на него все свои тесты?Если не потому, что вам нужен белый / черный список или другие расширения capybara-webkit, то вам следует взглянуть на один из более новых драйверов на основе CDP, таких как Apparition , хотя они все еще находятся в стадии альфа / бета-стабильности.

...