无法用Capybara强制点击隐藏元素

时间:2017-01-07 06:25:42

标签: rspec capybara poltergeist

我的水豚测试出现间歇性故障,因为模态没有足够快地关闭,因此覆盖了要点击的按钮。 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

发生了什么事?

2 个答案:

答案 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('点击')。