在 Rails 5 应用程序中执行 Cucumber 规范时出现以下错误
ReferenceError: jQuery is not defined (Selenium::WebDriver::Error::JavascriptError)
@http://127.0.0.1:4000/:2:7
@http://127.0.0.1:4000/:3:8
./features/support/lib/common_actions.rb:112:in `finished_all_ajax_requests?'
./features/support/lib/common_actions.rb:106:in `block in wait_for_ajax'
./features/support/lib/common_actions.rb:105:in `wait_for_ajax'
添加了 default_max_wait_time 为 5 秒。 以下版本适用于 capybra 和 selenium 驱动程序 水豚 (3.2.1) 硒网络驱动程序 (3.14)
您在 features/support/lib/common_actions.rb 中有您自己的(或从某处复制的)代码,该代码正在页面中执行 JS,以尝试查看所有 ajax 请求何时完成(根据方法名称假设)。此代码可能会访问
jQuery.active
并检查它是否为零。这从来都不是一个好主意,相反,页面同步应该通过检查页面中实际更改的内容来处理。
鉴于现在已经是 2023 年了,我猜您可能已经从应用程序中删除了 jQuery 的使用(使用
fetch
、现代 JS 功能等),因此您应该更新同步以不需要 wait_for_ajax
之类的东西。如果您还没有删除 jQuery,那么某些 JS 中会出现错误,导致 jQuery 无法加载。检查您的浏览器控制台并修复抛出的任何 JS 错误。