ruby - 为什么 Capybara "wait for page to load"计时器似乎适用于匹配器而不适用于发现器?

标签 ruby capybara

我目前正在运行一个测试来检查一个特定的元素,然后对它做一些事情。该元素需要一点时间才能让 javascript 完成启动,但在我为 Capybara 设置的计时器内。

出于某种原因

assert session.has_xpath?(xpath_route)

工作正常,但是

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

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

我只能假设这意味着计时器只适用于匹配器,而不适用于查找器,这很好,但我如何才能强制它继续查找直到找到我要查找的元素?

最佳答案

假设在使用first 时超时不适用,您是正确的。但是您可以使用 wait_until 方法,它会一直重试直到超时到期,或者 block 返回一些真实的东西,所以:

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

关于ruby - 为什么 Capybara "wait for page to load"计时器似乎适用于匹配器而不适用于发现器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7690624/

相关文章:

rspec - 如何使用 Capybara 断言元素数量并提供正确的错误消息?

ruby-on-rails - Cucumber/Capybara/Email 规范无法与 Selenium 驱动程序一起正常工作

ruby - Cucumber/Capybara - 使用具有 "Page Object"模式的 RSpec 匹配器

ruby - 如何计算一个字符在一行中出现了多少次

ruby-on-rails - Ruby:基于模型属性的元编程方法

ruby - 如何让 rspec 不显示数据库查询而只显示带有 rails_12factor 的点?

ruby - `Class` 和 `class` 有什么区别

ruby-on-rails - 不要在路由前加上 Rails 引擎名称

capybara - 如何从 Capybara 的默认 Rack::Test 驱动程序设置 cookie?

ruby-on-rails - 未定义的方法 'should' 将 Capybara 与 Cucumber 一起使用时