有一个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一起使用?
如果通过“via 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,尽管它们目前仍处于alpha / beta稳定状态。