如何在功能测试期间单击不是表单提交按钮的按钮

Posted

技术标签:

【中文标题】如何在功能测试期间单击不是表单提交按钮的按钮【英文标题】:How to click a button which is not a form submit button during a functional test 【发布时间】:2019-10-07 20:44:03 【问题描述】:

在功能测试期间,我需要单击一个按钮来发出 ajax 请求。 在浏览 symfony 测试文档时,我意识到你可以点击:

链接 或 表单的提交按钮

我的按钮有以下 id = "js-scroll-down"

当我尝试这个时:

  $btn = $crawler->filter('#js-scroll-down')->eq(0)->link();
  $crawler = $client->click($btn);

我收到以下错误: LogicException:无法从“按钮”标签导航。

【问题讨论】:

你不能用symfony/dom-crawler组件发出ajax请求,为了测试这种行为建议使用Panther。 我使用 Panther 时遇到同样的错误:无法从“按钮”标签导航 【参考方案1】:

Client#click() 只需要链接。

但是你可以执行脚本,例如$client->executeScript("document.querySelector('#js-scroll-down').click()");

【讨论】:

以上是关于如何在功能测试期间单击不是表单提交按钮的按钮的主要内容,如果未能解决你的问题,请参考以下文章

多次点击提交后如何只提交一次表单?

bootstrap如何让表单的提交按钮不换行?

单击按钮时不会触发表单验证

单击属于表单的另一个按钮时如何禁用提交表单

防止表单数据无效时单击多个(提交)按钮(vee-validate)

单击另一个表单中的按钮提交时如何在c#中重新加载表单?