我正在尝试使用Mink和Goutte驱动程序在Magento安装上执行测试,而当我尝试在按钮上使用click()或press()函数时,它将失败.
码:
$page = $this->getSession()->getPage();
$checkout = $page->find('css', '.btn-proceed-checkout');
$checkout->click();
如何获得这项工作?为什么Mink实际上需要表单来单击按钮元素?还是与Goutte无法获取JS有关的问题?
解决方法:
TL; DR:使用其他驱动程序或确保表单元素实际上在表单内部.
Goutte驱动程序很棒,但不如真正的浏览器那么出色.它获取响应内容并使用Goutte抓取器对其进行分析.为了增加一些测试的趣味性,它允许您通过拦截值设置调用并将表单数据存储在对象中来输入和提交表单数据.当您单击按钮时(我假设仅在type =“ submit”上输入),表单数据将添加到请求数据中并发送到服务器.
为了创建该表单对象,它搜索最接近的父表单以获取基本的表单详细信息.因此,当您尝试在不属于表单的输入中设置一个值,或者在没有表单的情况下进行提交时–它找不到表单并抛出异常.
确保将表单元素放在form标记内应该可以解决此类问题.另外,您可以使用Selenium2驱动程序–它使用完全不同的机制.
标签:mink,magento,php
来源: https://codeday.me/bug/20191121/2051158.html