我有一个发送带有多个提交按钮的PATCH请求的表格
button_tag "Save", type: "submit", class: "btn btn-secondary", name: "commit", value: "save"
button_tag "Submit", type: "submit", class: "btn btn-secondary", name: "button", value: "submit"
有控制器动作来检查单击的按钮值。
def update
params[:commit].to_s.downcase == "save"
....
end
对于开发模式和使用Selenium驱动程序,它返回true,当我使用poltergeist javascript_driver时,它变为无头模式。在这种情况下,该值不存在。
我已经使用click_on“保存”命令对其进行了测试
无头浏览器有什么问题,我最终无法获得价值来比较单击哪个按钮?
非常感谢您的建议。
答案 0 :(得分:1)
我猜该提交是使用实际的PATCH请求(而不是通过将隐藏的_method
参数设置为'PATCH'的POST请求)进行AJAX驱动的。
由于QtWebkit的版本,PhantomJS(由Poltergeist用作其“浏览器”)是内置的,因此存在一个问题,即实际补丁请求的主体始终为空。基于QtWebkit(已经过EOL),PhantomJS大约相当于6-7年的浏览器,并且越来越无法测试现代JS驱动的应用程序。仅使用带有无头铬的Selenium来进行无头测试可能会更好。
答案 1 :(得分:0)
我认为这是浏览器支持问题。查看button_tag
的文档,它指出:
您可以将button标记用作常规的提交标记,但是旧版浏览器不支持该标记
您最好使用复选框在此处指示状态差异。
此外,您正在update
方法中混合考虑问题–实际上,它仅应负责更新相关记录,而不是提交记录。您最好使用其他控制器和button_to
来实现“提交”功能。 More reading主题。