在 Asynchronous Javascript 下,capybara README提供了以下等待Ajax的示例:
page.should have_text('baz')
这是一个RSpec构造,但我正在使用Test :: Unit + shoulda。 Test :: Unit / shoulda中的等价物是什么?这是我的代码:
assert_equal 'foo', find('.bar').text
之前的行触发Ajax事件。如果在ajax完成后执行,我的断言将成功,但如果之前失败则失败。在成功或超过Capybara.default_wait_time之前,如何让它继续重试?
答案 0 :(得分:3)
水豚邮件列表比Stack Overflow工作得更好,尽管由于土耳其日,主持人超过24小时批准我的帖子。这是Jonas Nicklas' response:
assert page.has_text?('test')
请注意,否定形式为:
assert page.has_no_text?('test')
和NOT:
assert !page.has_text?('test')
这是错误的,不要这样做。 RSpec现在没有这个问题 已经安全了,所以:
page.should_not have_text('test')
/ Jonas
答案 1 :(得分:3)
点击某处或访问新路径后,我使用水豚和Selenium 和wait_until
:
somebutton.click
wait_until { something to be true }
或强>
somebutton.click
wait_until(n) { something to be true }
其中“n”是等待的秒数
答案 2 :(得分:0)
我也想到了其他有用的东西。我更喜欢乔纳斯的回答,但这也有效:
assert find('.bar:contains("foo")')
断言不是必需的,因为find会抛出异常 失败,它只是证明这是一个测试。