2

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

4

2 回答 2

3

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
于 2013-09-25T19:26:39.837 回答
-1

检查 Capybara.automatic_reload 参数。默认情况下,它是 true 并且 capybara 每 50 毫秒向服务器发送一次请求,如果它没有看到它想要的内容:)。

于 2014-06-02T09:24:49.400 回答