有没有办法在 mink 中模拟 link/button 的点击?
Is there a way to simulate a link/button click in mink?
我正在使用无头浏览器 (phantomjs) 结合 Mink 在我的网站上进行一些功能测试。
现在在此设置中,无法定期下载文件,例如:通过单击 link。所以我必须从 link 或 按钮 中提取 url,然后手动下载文件。
正如我刚才所说,有时没有 link () 可供下载,但在表单 中有一个 按钮(例如:在表格中输入报告数据,并在提交时收到报告文件)。
所以我需要做的是 simulate 单击 link 或按钮并提取请求的数据本应 发送,并使用该数据手动下载文件。
有办法吗?
注意:我正在使用guzzle
实际下载文件。
嗯...我不知道你是否解决了这个问题,只是作为典型的 mink 方法的替代方法。由于 Phantomjs 是基于 javascript 的浏览器引擎,您尝试过使用 javascript 吗?
您可以尝试这样的操作:
public function getElementHref($element)
{
/* @var FeatureContext $this */
$function = "(function(){
//Javascript method to get the href.
})()";
try {
return $this->featureContext->getSession()->evaluateScript($function);
} catch (Exception $e) {
throw new Exception('Element not found');
}
}
您可以在 javascript 中找到执行此操作的方法:How to get anchor text/href on click using jQuery?
然后使用 file_get_contents 返回的 URL(取决于文件类型)就可以了。
我正在使用无头浏览器 (phantomjs) 结合 Mink 在我的网站上进行一些功能测试。
现在在此设置中,无法定期下载文件,例如:通过单击 link。所以我必须从 link 或 按钮 中提取 url,然后手动下载文件。
正如我刚才所说,有时没有 link () 可供下载,但在表单 中有一个 按钮(例如:在表格中输入报告数据,并在提交时收到报告文件)。
所以我需要做的是 simulate 单击 link 或按钮并提取请求的数据本应 发送,并使用该数据手动下载文件。
有办法吗?
注意:我正在使用guzzle
实际下载文件。
嗯...我不知道你是否解决了这个问题,只是作为典型的 mink 方法的替代方法。由于 Phantomjs 是基于 javascript 的浏览器引擎,您尝试过使用 javascript 吗?
您可以尝试这样的操作:
public function getElementHref($element)
{
/* @var FeatureContext $this */
$function = "(function(){
//Javascript method to get the href.
})()";
try {
return $this->featureContext->getSession()->evaluateScript($function);
} catch (Exception $e) {
throw new Exception('Element not found');
}
}
您可以在 javascript 中找到执行此操作的方法:How to get anchor text/href on click using jQuery?
然后使用 file_get_contents 返回的 URL(取决于文件类型)就可以了。