Ruby on rails 单击元素时从phantomJS移动到rspec功能规格的无头chrome时出错

Ruby on rails 单击元素时从phantomJS移动到rspec功能规格的无头chrome时出错,ruby-on-rails,selenium-webdriver,rspec,capybara,google-chrome-headless,Ruby On Rails,Selenium Webdriver,Rspec,Capybara,Google Chrome Headless,我试图用它来代替我一直使用到现在的恶作剧 我之前对恶鬼和幻影的设置是: Gemfile: gem 'phantomjs', :require => 'phantomjs/poltergeist' gem 'poltergeist' 在spec_helper.rb中 spec_helper.rb : Capybara.javascript_driver = :poltergeist Capybara.register_driver :poltergeist do |app| Capyb

我试图用它来代替我一直使用到现在的恶作剧

我之前对恶鬼和幻影的设置是:

Gemfile:
gem 'phantomjs', :require => 'phantomjs/poltergeist'
gem 'poltergeist'
在spec_helper.rb中

spec_helper.rb :
Capybara.javascript_driver = :poltergeist
Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {:phantomjs => Phantomjs.path, :timeout => 250})
end
spec_helper.rb :
require 'webdrivers'
require "selenium/webdriver"

Capybara.register_driver :chrome do |app|
  Capybara::Selenium::Driver.new(app, browser: :chrome)
end

Capybara.register_driver :headless_chrome do |app|
  capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
  chromeOptions: { args: %w(headless disable-gpu) }
)

Capybara::Selenium::Driver.new app,
  browser: :chrome,
  desired_capabilities: capabilities
end

Capybara.javascript_driver = :headless_chrome
现在,我想转到headless_chrome,我已经做了以下工作:

文件中的更改

Gemfile:
gem 'capybara-selenium'
gem 'webdrivers'
我已经移除了恶灵和幽灵相关的宝石

spec_helper.rb中的更改

spec_helper.rb :
Capybara.javascript_driver = :poltergeist
Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {:phantomjs => Phantomjs.path, :timeout => 250})
end
spec_helper.rb :
require 'webdrivers'
require "selenium/webdriver"

Capybara.register_driver :chrome do |app|
  Capybara::Selenium::Driver.new(app, browser: :chrome)
end

Capybara.register_driver :headless_chrome do |app|
  capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
  chromeOptions: { args: %w(headless disable-gpu) }
)

Capybara::Selenium::Driver.new app,
  browser: :chrome,
  desired_capabilities: capabilities
end

Capybara.javascript_driver = :headless_chrome
但不知何故,单击某个元素不起作用:

find("#element_id").click
expect(page).to have_css("#element_on_page_after_clicking")
它告诉我选择器不存在的错误

这意味着单击元素不起作用


如果有人能让我知道如何解决这个问题,那将非常有帮助

你用的是哪个版本的Chrome?我不知道怎么知道这个版本。但是从场景中删除js:true解决了问题。@aria删除js:true并不能解决问题,它只是意味着你正在一个不支持js(rack_test driver)的假浏览器中运行测试-我猜它以前失败过,因为你的页面中有一个js错误-检查你的开发人员控制台并修复你的js错误。