【问题标题】:Sporadically succeeding cucumber tests偶尔成功的黄瓜测试
【发布时间】:2012-07-25 19:41:14
【问题描述】:

我有一个涉及以下内容的黄瓜步骤:

When /^I select from the Open table project with details "([^"]*)"$/ do |details|
  find('.details', :text => details).click
end

失败并显示以下错误消息Unable to find css ".details" (Capybara::ElementNotFound)

这一步在我运行它的大约 90% 的时间里都失败了,但偶尔它会起作用。我检查了页面源代码,该页面确实有一个 css 类 .details,其中包含与详细信息相对应的文本。

这是某种时间问题还是黄瓜的问题?还是更有可能的是,既然 Cucumber 已经把我逼疯了,我看东西不正确?

【问题讨论】:

  • 我对 Cucumber 不熟悉,但尝试在失败时获取页面的摘录,这可能会有所帮助。
  • 您是否使用 Javascript 来使详细信息元素在单击时可见?如果是这样,并且您正在使用 ajax 检索详细信息数据,这可能是时间问题。
  • 这一步我实际上并没有使用ajax,但是javascript是的。紧接在此之前的步骤是单击使其他内容可见的选项卡。如何解决时间问题?

标签: ruby-on-rails cucumber capybara


【解决方案1】:

根据这篇文章:Why does it seem like the Capybara "wait for page to load" timer works for matchers but not finders?

看起来 find 方法并没有等待页面加载完成。这意味着你有一个竞争条件,黄瓜大约 90% 的时间都在丢失。

您可以在 wait_until 块中对其进行变形以指定您自己的超时并通过测试

page.wait_until(5) { find('.details', :text => details) }
find('.details', :text => details).click

【讨论】:

    猜你喜欢
    • 2017-09-23
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多