为什么看起来Capybara“等待页面加载”计时器适用于匹配器但不适用于查找器?

时间:2011-10-07 17:17:19

标签: ruby capybara

我目前正在运行一项检查特定元素的测试,然后对其进行一些处理。该元素需要一些javascript完成踢,但在计时器我已经有Capybara设置。

出于某种原因

assert session.has_xpath?(xpath_route)

工作正常,但

assert link=session.first(:xpath, xpath_route)

失败,说无法找到该元素。并且很快 - 在等待计时器用完之前很久。

我只能假设这意味着计时器只适用于匹配器,而不适用于探测器,这很好,但我怎么能强迫它继续观察直到找到我正在寻找的元素?

1 个答案:

答案 0 :(得分:5)

使用first时,假设超时不适用,这是正确的。但是你可以使用wait_until方法,它会一直重试,直到超时到期,或者块返回真值,所以:

page.wait_until() do
  session.first(:xpath, xpath_route)
end