无法强制点击水豚的隐藏元素
Unable to force a click of a hidden element with Capybara
我的水豚测试间歇性失败,原因是模式关闭速度不够快,因此覆盖了要单击的按钮。 Capybara 的错误消息告诉我尝试 node.triger('click')
。当我用下面的代码尝试这个时
find_button('Update').trigger('click')
我收到这个错误:
Failure/Error: find_button('Update').trigger('click')
Capybara::NotSupportedByDriverError:
Capybara::Driver::Node#trigger
我正在使用 poltergeist 驱动程序,例如在我的 rails_helper 我有
Capybara.javascript_driver = :poltergeist
发生了什么事?
正如有时发生的那样,只要把问题写出来,我就找到了答案。在所讨论的特定测试中,我没有设置 js: true
。我收到原始错误消息的同一文件中的另一个测试确实有 js: true
。在文件中的所有测试中设置 js: true
后,我确实收到了一致的错误消息并且可以使用 ```.trigger('click').
当您需要一个请求或动画完成以便下一个测试工作时,一个可靠的策略是编写一个让 Capybara 等待直到它通过的测试。例如,如果您的带有选择器 .modal
的模态在单击确定按钮后消失,您可以编写如下测试:
click_button 'OK'
expect(page).not_to have_css '.modal'
click_button 'Update'
默认情况下,Capybara 会在测试失败前等待两秒钟让动画和异步请求完成。可以用 Capybara.default_max_wait_time = 5
配置,例如将其更改为 5。
我的水豚测试间歇性失败,原因是模式关闭速度不够快,因此覆盖了要单击的按钮。 Capybara 的错误消息告诉我尝试 node.triger('click')
。当我用下面的代码尝试这个时
find_button('Update').trigger('click')
我收到这个错误:
Failure/Error: find_button('Update').trigger('click')
Capybara::NotSupportedByDriverError:
Capybara::Driver::Node#trigger
我正在使用 poltergeist 驱动程序,例如在我的 rails_helper 我有
Capybara.javascript_driver = :poltergeist
发生了什么事?
正如有时发生的那样,只要把问题写出来,我就找到了答案。在所讨论的特定测试中,我没有设置 js: true
。我收到原始错误消息的同一文件中的另一个测试确实有 js: true
。在文件中的所有测试中设置 js: true
后,我确实收到了一致的错误消息并且可以使用 ```.trigger('click').
当您需要一个请求或动画完成以便下一个测试工作时,一个可靠的策略是编写一个让 Capybara 等待直到它通过的测试。例如,如果您的带有选择器 .modal
的模态在单击确定按钮后消失,您可以编写如下测试:
click_button 'OK'
expect(page).not_to have_css '.modal'
click_button 'Update'
默认情况下,Capybara 会在测试失败前等待两秒钟让动画和异步请求完成。可以用 Capybara.default_max_wait_time = 5
配置,例如将其更改为 5。