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

我目前正在运行一个测试,检查一个特定的元素,然后做一些东西。 该元素需要一些javascript来完成踢,但在计时器我已经有Capybara设置。

由于某些原因

assert session.has_xpath?(xpath_route) 

工作正常,但是

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

失败,说它找不到元素。 并且很快 – 在等待计时器用完之前很久。

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

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

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