如何通过 webkit 使 JS 与通过 chromedriver 一样工作?
How to make JS via webkit work the same as via 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 一起工作?
如果 "via webkit" 你的意思是使用 capybara-webkit
- https://github.com/thoughtbot/capybara-webkit - 水豚驱动程序,那么答案很可能是你不能。 capybara-webkit
驱动程序基于几年前停止开发的 QtWebkit。最近发布的QtWebkit稳定版基本相当于7-8年前的Safari,所以不支持很多更新的JS/CSS。您可以填充一些缺失的东西,并且可以确保将所有 JS 都转换为 ES5,但它仍然不会 100% 复制现代浏览器。再加上 capybara-webkit
项目已弃用并将在接下来的几周内存档,这意味着是时候转向更新的驱动程序了。
既然你已经在使用 headless chrome 通过 selenium,你就不能把所有的测试都移到它上面吗?如果不是因为您需要 whitelist/blacklist 或其他 capybara-webkit
扩展,那么您应该查看一种较新的基于 CDP 的驱动程序,例如 Apparition,尽管它们仍处于 alpha/beta 稳定状态那一刻。
有一个 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-webkit
驱动程序基于几年前停止开发的 QtWebkit。最近发布的QtWebkit稳定版基本相当于7-8年前的Safari,所以不支持很多更新的JS/CSS。您可以填充一些缺失的东西,并且可以确保将所有 JS 都转换为 ES5,但它仍然不会 100% 复制现代浏览器。再加上 capybara-webkit
项目已弃用并将在接下来的几周内存档,这意味着是时候转向更新的驱动程序了。
既然你已经在使用 headless chrome 通过 selenium,你就不能把所有的测试都移到它上面吗?如果不是因为您需要 whitelist/blacklist 或其他 capybara-webkit
扩展,那么您应该查看一种较新的基于 CDP 的驱动程序,例如 Apparition,尽管它们仍处于 alpha/beta 稳定状态那一刻。