我正在尝试使用 Mink 和 Goutte 驱动程序对我的 Magento 安装进行测试,当我尝试使用时失败click()
or press()
按钮上的功能。
Code:
$page = $this->getSession()->getPage();
$checkout = $page->find('css', '.btn-proceed-checkout');
$checkout->click();
如何获得这份工作?为什么 Mink 实际上需要一个表单来单击按钮元素?或者问题与 Goutte 无法获取 JS 有关?
TL;DR:使用不同的驱动程序或确保表单元素实际上位于表单内。
Goutte 驱动程序非常棒,但不如真正的浏览器那么好。它获取响应内容并使用Gouttescraper来分析它。为了给您的测试增添一些趣味,它允许您通过拦截值设置调用并将表单数据存储在对象中来输入和提交表单数据。当你点击一个按钮时(我假设只在type="submit"
)将表单数据添加到请求数据中并发送给服务器。
为了创建该表单对象,它会搜索最接近的父表单以获取基本表单详细信息。因此,当您尝试在不属于表单的输入上设置一个值,或者在没有表单的情况下进行提交时,它无法找到表单并引发异常。
确保表单元素位于表单标记内应该可以解决此类问题。或者,您可以使用 Selenium2 驱动程序 - 它使用完全不同的机制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)