Php 所选节点没有表单祖先-Mink错误

Php 所选节点没有表单祖先-Mink错误,php,magento,mink,Php,Magento,Mink,我正在尝试使用Mink with Goutte驱动程序对我的Magento安装执行测试,当我尝试在按钮上使用click()或press()函数时,测试失败 代码: 如何得到这份工作?为什么Mink实际上需要一个表单来单击按钮元素?或者问题与痛风不能获取JS有关?TL;DR:使用不同的驱动程序或确保表单元素实际位于表单内部 Goutte驱动程序非常棒,但没有真正的浏览器那么棒。它获取响应内容,并使用Goutte刮刀对其进行分析。为了在测试中添加一些香料,它允许您通过拦截值设置调用并将表单数据存储在

我正在尝试使用Mink with Goutte驱动程序对我的Magento安装执行测试,当我尝试在按钮上使用
click()
press()
函数时,测试失败

代码:


如何得到这份工作?为什么Mink实际上需要一个表单来单击按钮元素?或者问题与痛风不能获取JS有关?

TL;DR:使用不同的驱动程序或确保表单元素实际位于表单内部

Goutte驱动程序非常棒,但没有真正的浏览器那么棒。它获取响应内容,并使用Goutte刮刀对其进行分析。为了在测试中添加一些香料,它允许您通过拦截值设置调用并将表单数据存储在对象中来输入和提交表单数据。当您单击一个按钮时(我假设只有在
type=“submit”
),表单数据被添加到请求数据中并发送到服务器

为了创建该表单对象,它搜索最近的父表单以获取基本表单详细信息。因此,当您试图在输入上设置一个不属于表单的值,或者在没有表单的情况下进行提交时,它找不到表单并抛出异常


确保表单元素位于表单标记内部应该可以解决这些问题。或者,您可以使用Selenium2驱动程序–它使用完全不同的机制。

问题在于DOM。我通过将
放在DOM树中靠近
的位置来进行调试


在我的例子中,问题是
中的一些
块(角度模板)

有帮助吗?你能详细说明一下吗?
块是如何干扰的?你是如何解决你的问题的?当然。就我所记得的,我有角度模板(像``这样的东西,里面有很多代码)。这破坏了html解析器。我通过将所有的页面移出并移到页面底部进行了修复。
$page = $this->getSession()->getPage();
    $checkout = $page->find('css', '.btn-proceed-checkout');
    $checkout->click();