Exception 黄瓜/水豚:在幻影下测试随机失败

Exception 黄瓜/水豚:在幻影下测试随机失败,exception,cucumber,capybara,phantomjs,Exception,Cucumber,Capybara,Phantomjs,当我在PhantomJS下运行黄瓜场景时,我得到 Capybara::ElementNotFound: Unable to find css ".given_class" 随机地点的例外情况 看起来驱动程序并不等待元素出现 我正在使用: Ruby 2.0 黄瓜1.3.6 水豚2.1.0 Selenium webdriver 2.35.1 PhantomJS 1.9.1Capybara,特别是使用PhantomJS时,将非常快速地加载页面,并执行元素检查。因此,某些元素可能未加载,测试失败。默认

当我在PhantomJS下运行黄瓜场景时,我得到

Capybara::ElementNotFound: Unable to find css ".given_class"
随机地点的例外情况

看起来驱动程序并不等待元素出现

我正在使用: Ruby 2.0 黄瓜1.3.6 水豚2.1.0 Selenium webdriver 2.35.1
PhantomJS 1.9.1

Capybara,特别是使用PhantomJS时,将非常快速地加载页面,并执行元素检查。因此,某些元素可能未加载,测试失败。默认情况下,水豚的等待时间为2,可以增加。也许可以试试:

Capybara.default_wait_time = 5
就像他们在文件中建议的那样

您还可以在步骤定义中添加睡眠(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参数。 默认情况下,这是真的,如果它看不到它想要什么,则每50毫秒就会向服务器发送一次请求:)