我们有一个后台进程,当处理(从另一个服务器,UNIX进程)完成时,我们轮询并重新加载图表.
我不能让Capybrara正确等待(尽管普遍认为应该这样做)
它是一个AJAX事件,它轮询数据库,然后在完成后刷新页面内容.即使是测试,时间也是多种多样的 – 睡眠n.seconds有时会起作用,但并非总是如此.
>我尝试过expect(page.has_content),断言page.has_text,find和has_content.
似乎没有人真正等待.
>我将超时设置为90秒.通常后台进程超过20秒.
>我尝试了不同的default_wait_time
我发现很多文章声称它应该在默认的轮询/超时内等待.我们应该检查一下吗?请注意,我们通过Poltergeist无头.
没有CSS对象在显示上发生变化,它只是一个字符串(这是从一个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)
解决方法
在spec_helper中,您有以下代码:
Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app,{debug: false,:default_wait_time => 30,:timeout => 90}) end
我的猜测是这个超时基本上被忽略了,因为Capybara本身将根据Capybara.default_wait_time设置超时.这可以解释为什么你的时间在规范内设置为2.
poltergeist docs建议您在spec_helper中使用它:
require 'capybara/poltergeist' Capybara.javascript_driver = :poltergeist
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。