如何通过webkit使JS与chromedriver一样工作?

时间:2019-04-08 09:08:57

标签: javascript ruby-on-rails webkit selenium-chromedriver capybara

有一个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一起使用?

1 个答案:

答案 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>