我的水豚测试出现间歇性故障,因为模态没有足够快地关闭,因此覆盖了要点击的按钮。 Capybara的错误消息告诉我尝试node.triger('click')
。当我使用以下代码尝试此操作时
find_button('Update').trigger('click')
我收到此错误:
Failure/Error: find_button('Update').trigger('click')
Capybara::NotSupportedByDriverError:
Capybara::Driver::Node#trigger
我正在使用恶作剧司机,例如在我的rails_helper中我有
Capybara.javascript_driver = :poltergeist
发生了什么事?
答案 0 :(得分:4)
当您需要完成请求或动画以便下一个测试工作时,一个可靠的策略是编写一个测试,使Capybara等到它通过。例如,如果单击“确定”按钮后,带有选择器.modal
的模态消失,则可以编写如下测试:
click_button 'OK'
expect(page).not_to have_css '.modal'
click_button 'Update'
默认情况下,Capybara等待动画和异步请求两秒钟才能完成测试失败。可以使用Capybara.default_max_wait_time = 5
将其配置为例如将其更改为5.
答案 1 :(得分:1)
有时候,只要写出问题,我就找到了答案。在特定的测试中,我没有设置js: true
。我收到原始错误消息的同一文件中的另一个测试确实有js: true
。一旦我在文件的所有测试中设置js: true
,我确实收到了一致的错误消息,并且可以使用```.trigger('点击')。