Cucumber / Capybara:在PhantomJS下随机测试失败

时间:2013-09-09 07:49:59

标签: exception cucumber capybara phantomjs

当我在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

2 个答案:

答案 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毫秒就会向服务器发送请求:)。