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