【问题标题】:Is there a way to simulate a link/button click in mink?有没有办法模拟水貂中的链接/按钮点击?
【发布时间】:2016-09-29 15:24:30
【问题描述】:

我正在使用无头浏览器 (phantomjs) 与 Mink 一起在我的网站上进行一些功能测试。
现在在此设置中,无法定期下载文件,例如:通过单击链接。所以我必须从 linkbutton 中提取 url,然后手动下载文件。

正如我刚才所说,有时没有下载链接(),而是表单中的按钮(例如:在表单中输入报告的数据,并在提交时收到报告文件)。

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

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

【问题讨论】:

  • 你应该有一个来自 Mink 的 find 方法,你可以用它来查找元素,这个方法将返回一个对象,你可以从那里使用 click 或者你可以获得应该给你的 href 属性你需要的网址。对于单击,您应该使用通过 css 查找并单击。
  • 我知道,这就是为什么指出它不一定是链接。为文件发送的请求甚至可以是POST

标签: phantomjs functional-testing mink


【解决方案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?

然后使用 file_get_contents 返回的 URL(取决于文件类型)就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2021-09-16
    • 2012-09-07
    • 1970-01-01
    相关资源
    最近更新 更多