【发布时间】:2017-10-05 18:17:42
【问题描述】:
我有这个简单的 HTML。按钮的那些属性(例如“AAAAA”)将根据外部事件进行传输。实时更新由 AJAX 池执行。
<div class="parent">
<div class="group"><button title="AAAAA"/></div>
<div class="group"><button title="BBBBB"/></div>
<div class="group"><button title="CCCCC"/></div>
</div>
<div class="parent">
...
</div>
假设“AAAAA”将在 XXX 事件之后转换为“DDDDD”。测试脚本就像...
scenario 'test' do
# Before change
page.within(first('.parent')) do
page.within(all('.group')[0]) do
expect(page.find('button')[:title]).to include('AAAAA')
end
page.within(all('.group')[1]) do
expect(page.find('button')[:title]).to include('BBBBB')
end
page.within(all('.group')[2]) do
expect(page.find('button')[:title]).to include('CCCCC')
end
end
XXX
# After change (AJAX polling)
page.within(first('.parent')) do
page.within(all('.group')[0]) do
expect(page.find('button')[:title]).to include('DDDDD')
end
end
end
但是,这不起作用。因为expect(page.find('button')[:title]).to include('DDDDD') 不会等到 AJAX 轮询执行。如果我将sleep(20) 放在XXX 之后,则此测试有效,但是,我猜这不是Capybara 的方式。
我想知道正确处理这种情况的聪明方法。
感谢您的帮助。
【问题讨论】:
标签: javascript html ruby-on-rails ajax capybara