我们有一个后台进程,当处理(从另一台服务器,UNIX 进程)完成时,我们会轮询并重新加载图表。
我不能让 Capybrara 适当地等待(尽管普遍认为它应该)
它是一个 AJAX 事件,它轮询数据库,然后在完成时刷新页面内容。时间,即使是测试,也是多种多样的——sleep n.seconds
有时有效,但并非总是如此。
- 我试过
expect(page.has_content)
,assert page.has_text
,find
和has_content
. 似乎没有人真正等待。 - 我将超时设置为 90 秒。一般后台进程在20秒以上。
- 我尝试过不同的
default_wait_time
我发现很多文章声称它应该在默认轮询/超时内等待。有什么我们应该检查的吗?请注意,我们通过 Poltergeist 是无头的。
显示器上没有改变 CSS 对象,它只是一个字符串(这是从 a 中获取的,puts page.html
用于调试测试)
由此
<div class="bill-summary-strap-line">
Calculating your bill costs
<br/>
</div>
对此
<div class="bill-summary-strap-line">
Calculating finished
<br/>
</div>
我们缺少什么?
下面的RSpec代码,真的希望有人有一些解决这类问题的指导。干杯本
puts page.html # test
#assert page.has_text?('Calculating your bill costs')
expect(page).to have_content 'Calculating your bill costs'
page.driver.render("#{LOGDIR}/output1.png", :full => true)
sleep 30.seconds # would like to remove this
puts page.html # test output
#page.should have_content("Calculating finished")
#expect(page.has_content? "Calculating finished").to be_true
assert page.has_text?("Calculating finished")
page.driver.render("#{LOGDIR}/output2.png", :full => true)