Есть 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?
Если под «через 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, например Явление, хотя на данный момент они все еще находятся в альфа-/бета-стабильности.
Кстати, я не использую безголовый хром, потому что мы используем TravisCI, там он очень медленный.
Спасибо за информацию, Томас!