【问题标题】:How to make JS via webkit work the same as via chromedriver?如何通过 webkit 使 JS 与通过 chromedriver 一样工作?
【发布时间】:2019-04-08 09:08:57
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢你的信息,托马斯!
    • 顺便说一句,我不使用无头 chrome,因为我们使用 TravisCI,它在那里非常慢
    猜你喜欢
    • 2023-04-08
    • 2019-06-17
    • 2021-11-20
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    相关资源
    最近更新 更多