如何通过webkit使JS与通过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 一起使用?

如果您所说的"通过 webkit"是指使用带有水豚的capybara-webkit- https://github.com/thoughtbot/capybara-webkit - 驱动程序,那么答案是很可能你不能。capybara-webkit驱动程序基于几年前停止开发的QtWebkit。QtWebkit 发布的最后一个稳定版本基本上相当于 7-8 年前的 Safari,因此它不支持很多较新的 JS/CSS。有一些缺失的东西你可以填充,你可以确保你所有的JS都被转译到ES5,但它仍然不会100%复制现代浏览器。再加上capybara-webkit项目已弃用并将在未来几周内存档,这意味着是时候转向更新的驱动程序了。

既然你已经在通过硒使用无头铬,你不能把所有的测试都移到它上面吗?如果不是因为您需要白名单/黑名单或其他capybara-webkit扩展,那么您应该查看较新的基于 CDP 的驱动程序之一,例如 Apparition,尽管它们目前仍处于 alpha/beta 稳定性。

最新更新