documentation for Rails 5.1 system tests有点稀疏。我无法获得执行javascript运行的无头测试。我认为一种方法需要安装和运行xvf。但是这是比我在其他版本的rails中运行水豚时习惯的更人工设置。如何在Rails 5.1中运行无头浏览器系统测试?
什么是最直接的方法来实现这一目标?
documentation for Rails 5.1 system tests有点稀疏。我无法获得执行javascript运行的无头测试。我认为一种方法需要安装和运行xvf。但是这是比我在其他版本的rails中运行水豚时习惯的更人工设置。如何在Rails 5.1中运行无头浏览器系统测试?
什么是最直接的方法来实现这一目标?
在Rails 5.1系统测试中,所使用的驱动程序由ApplicationSystemTestCase(test/application_system_test_case.rb)中的driven_by
调用设置。/MAC假设你已经注册了水豚,WebKit的驱动程序“的webkit”你应该可以,如果你在Linux上使用Chrome 59+做
driven_by :webkit
另一个潜在选择是使用无头铬
Capybara.register_driver :headless_chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome, :args => ['headless'])
end
,然后在你的测试用例类
driven_by :headless_chrome
这就给了你铬的无头版本,所以没有水豚的-的WebKit /骚灵的不支持当前的Web标准的问题。不幸的是,目前,chromedriver在JS系统模式(警报,确认,提示 - 水豚主分支中的解决方法)方面存在问题,并且在您的测试过程中尝试关闭窗口时挂起。希望这两个问题很快就会解决。
另请注意,由于在测试模式下已经处理多个线程之间的单个数据库连接的共享,因此对于大多数人来说,rails 5.1应该已经不再需要database_cleaner测试。
谢谢! “假设你已经将你的capybara-webkit驱动程序注册为'webkit'” - 我该怎么做? –
@JohnBachir使用'Capybara.register_driver' - 当您的项目中包含capybara-webkit时,将会有一个自动注册 - 如果您需要更改只能通过驱动程序注册进行配置的设置,则只需更改该设置即可 - https ://github.com/teamcapybara/capybara#configuring-and-adding-drivers –
为了避免弃用信息,您需要使用[Selenium :: WebDriver :: Chrome ::的add_argument语法Options'](https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/Chrome/Options.html#add_argument-instance_method)。 – croceldon