水豚阻止将 onsubmit 事件附加到表单
Capybara prevents attaching onsubmit event to form
在我的 rails 应用程序中,我使用 jquery 将 onsubmit 事件附加到我的表单,如下所示:
$("form.my_form").submit(function(){
alert("test")
return true;
});
当我手动打开页面并提交表单(单击提交按钮)时,这工作正常 - 我看到了警告 "test"
但是我有一个 Capybara 测试(通过 Selenium)加载页面,在表单中填写一些值,然后单击提交。
并且该功能未被触发。
注意1:当运行测试确实提交了表单,DB中记录了新值等所以点击提交按钮本身没有问题
注意 2:如果不是 jquery,在 rails 视图的 form_for
标签中我放了
html: {onsubmit: "onsubmitfunc();"}
使用 onsubmitfunc() 中的警报 - 在水豚测试中一切正常
注意 3:为了 jquery 的工作方式,js 文件被延迟加载,例如:
<%= javascript_include_tag 'application', defer: true %>
我是 JQuery 的新手,我是不是在做什么犯罪活动?
还是水豚有问题?延迟加载 JS 文件?或者用 JQuery?有什么想法吗?
由于您使用的是 Selenium - 最常见的原因是您的 JS 资产之一存在错误。在开发环境中,所有 JS 资产都在单独的文件中提供,这意味着一个文件中的错误不会阻止其他文件的处理。在测试环境(和生产环境)中,资产被连接到一个文件中,这意味着任何文件中的错误都可能导致在它之后连接的资产无法处理。
检查浏览器控制台日志是否有任何 JS 错误并修复它们。
在我的 rails 应用程序中,我使用 jquery 将 onsubmit 事件附加到我的表单,如下所示:
$("form.my_form").submit(function(){
alert("test")
return true;
});
当我手动打开页面并提交表单(单击提交按钮)时,这工作正常 - 我看到了警告 "test"
但是我有一个 Capybara 测试(通过 Selenium)加载页面,在表单中填写一些值,然后单击提交。 并且该功能未被触发。
注意1:当运行测试确实提交了表单,DB中记录了新值等所以点击提交按钮本身没有问题
注意 2:如果不是 jquery,在 rails 视图的 form_for
标签中我放了
html: {onsubmit: "onsubmitfunc();"}
使用 onsubmitfunc() 中的警报 - 在水豚测试中一切正常
注意 3:为了 jquery 的工作方式,js 文件被延迟加载,例如:
<%= javascript_include_tag 'application', defer: true %>
我是 JQuery 的新手,我是不是在做什么犯罪活动? 还是水豚有问题?延迟加载 JS 文件?或者用 JQuery?有什么想法吗?
由于您使用的是 Selenium - 最常见的原因是您的 JS 资产之一存在错误。在开发环境中,所有 JS 资产都在单独的文件中提供,这意味着一个文件中的错误不会阻止其他文件的处理。在测试环境(和生产环境)中,资产被连接到一个文件中,这意味着任何文件中的错误都可能导致在它之后连接的资产无法处理。
检查浏览器控制台日志是否有任何 JS 错误并修复它们。