加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

rspec – Capybara似乎没有等待(因为它应该做!?)(Async ajax事

发布时间:2020-12-16 02:52:21 所属栏目:百科 来源:网络整理
导读:我们有一个后台进程,当处理(从另一个服务器,UNIX进程)完成时,我们轮询并重新加载图表. 我不能让Capybrara正确等待(尽管普遍认为应该这样做) 它是一个AJAX事件,它轮询数据库,然后在完成后刷新页面内容.即使是测试,时间也是多种多样的 – 睡眠n.seconds有时会
我们有一个后台进程,当处理(从另一个服务器,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

您不需要注册或重新注册驱动程序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读