我正在尝试使用 Capybara-webkit 在无头模式下运行一个简单的谷歌搜索测试。
我已将驱动程序设置为 env.rb 文件:
Capybara.default_driver = :webkit
Capybara.current_driver = :webkit
Capybara.javascript_driver = :webkit
特征文件有一个简单的场景大纲,用于搜索输入并验证结果是否包含预期的输出:
Given User opens the google page
When she searches for "<input>"
Then verify that the result has "<output>"
Examples:
|input | output |
|Agile Samurai author name|Jonathan Rasmusson|
|Eloquent Ruby author name|Russ Olsen |
在步骤定义中,访问google页面并在文本框中输入输入并单击搜索按钮。
Given /^User opens the google page$/ do
visit "http://google.com"
end
When /^she searches for "(.*?)"$/ do |search_query|
fill_in "gbqfq", :with => search_query
click_button "gbqfba"
end
Then /^verify that the result has "(.*?)"$/ do |output|
should have_content output
end
当我运行这些测试时,我得到了错误:
找不到字段“gbqfq”(Capybara::ElementNotFound)
但是,如果我将驱动程序更改为硒:
Capybara.default_driver = :selenium
Capybara.current_driver = :selenium
Capybara.javascript_driver = :selenium
然后,测试运行并且所有步骤都通过。
在无头模式下,是否以其他方式找到元素?我的方法错了吗?我无法理解为什么在浏览器模式(打开 firefox 实例)下工作正常时,在无头模式下找不到该元素。
我是这个领域的新手,所以任何帮助都将不胜感激。先感谢您。