Как заставить JS через webkit работать так же, как через chromedriver?

Есть 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?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Спасибо за информацию, Томас!

Alexander 09.04.2019 10:30

Кстати, я не использую безголовый хром, потому что мы используем TravisCI, там он очень медленный.

Alexander 09.04.2019 10:35

Другие вопросы по теме