2016-09-13 114 views
0

我正在使用无头浏览器(phantomjs)与水貂一起在我的网站上执行一些功能测试。
现在在此设置下,文件无法定期下载,例如:点击链接。所以我必须从链接按钮中提取网址,然后手动下载文件。
有没有办法模拟水貂中的链接/按钮点击?

正如我刚才所说,有时没有为下载没有链接(),但在表格一个按钮(例如:输入数据形式的报告,并接受在提交报告文件) 。

所以我需要做的是模拟点击链接或按钮并请求提取数据本来发送,并使用这些数据来手动下载该文件。

有没有办法做到这一点?
注意:我使用guzzle实际下载文件。

+0

您应该有一个来自Mink的find方法,您可以使用它来查找元素,此方法将返回一个对象,然后您可以使用click或者您可以获得应该为您提供所需url的href属性。对于点击,您应该使用CSS查找并单击。 – lauda

+0

我知道,这就是为什么指出它不一定是一个链接。为文件发送的请求甚至可以是“POST”。 – user2268997

回答

1

嗯......我不知道你是否解决了这个问题,只能作为典型水貂方法的替代品。由于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?

然后使用URL用的file_get_contents(根据文件类型)返回,而已。

+0

我采取了另一种方法,但是这应该起作用。 – user2268997

相关问题