当我在PhantomJS下运行黄瓜场景时,我得到了
Capybara::ElementNotFound: Unable to find css ".given_class"
随机地点的例外
看起来驱动程序不会等待元素外观
我正在使用: Ruby 2.0 黄瓜1.3.6 Capybara 2.1.0 Selenium-webdriver 2.35.1 PhantomJS 1.9.1
答案 0 :(得分:3)
Capybara,尤其是PhantomJS,会非常快速地加载页面,并对元素执行检查。因此,某些元素可能未加载且测试失败。默认情况下,capybara的等待时间为2,您可以增加。也许试试:
Capybara.default_wait_time = 5
像他们在文档here中建议的那样。
您还可以在步骤定义中添加Sleep(1),但这被视为不良形式。
如果这不适合你,请尝试指定页面上应该找到元素的位置。
例如:
Then /^I should see "(.*?)" on the dashboard$/ do |your_element|
within("#your") do
expect(page).to have_content(your_element)
end
end
答案 1 :(得分:-1)
检查Capybara.automatic_reload参数。 默认情况下它是真的,如果它没有看到它想要的东西,capybara每隔50毫秒就会向服务器发送请求:)。