有一个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一起使用?
答案 0 :(得分:1)
如果“通过webkit”是指使用Capybara驱动程序的capybara-webkit
-https://github.com/thoughtbot/capybara-webkit-驱动程序,那么答案是很可能您不能这样做。 capybara-webkit
驱动程序基于QtWebkit,该驱动程序已在多年前停止开发。 QtWebkit的最后一个稳定版本基本上等效于7-8年前的Safari,因此它不支持很多较新的JS / CSS。您可以进行polyfill缺少一些东西,并且可以确保将所有JS都转换为ES5,但仍不能100%复制现代浏览器。再加上capybara-webkit
项目已被弃用,并将在接下来的几周内进行归档,这意味着该是使用新驱动程序的时候了。
由于您已经通过硒使用了无头铬,您难道不能将所有测试都移到硒上吗?如果不是因为您需要白名单/黑名单或其他capybara-webkit
扩展名,那么您应该考虑使用一种基于CDP的较新驱动程序,例如Apparition,尽管目前它们仍处于alpha / beta稳定性。 / p>