Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Behat/Mink无法模拟页脚中的单击按钮_Javascript_Behat_Mink - Fatal编程技术网

Javascript Behat/Mink无法模拟页脚中的单击按钮

Javascript Behat/Mink无法模拟页脚中的单击按钮,javascript,behat,mink,Javascript,Behat,Mink,尝试对页脚中的项目使用“Then I press”(用于按钮)或“Then I follow”(用于链接)正则表达式失败,错误为“未找到id为| link | name的元素/链接…”。例如,我在以下公共网站上发现了此异常:earthdata.nasa.gov网站(我们的网站尚未激活)。屏幕左侧显示“反馈”的按钮不可点击(原文如此) 我正在对selenium 2.29.0服务器运行测试。如何扩展Mink,使其能够定位并“单击”上面提到的“反馈”按钮之类的链接?您可以使用XPath来单击链接,而不

尝试对页脚中的项目使用“Then I press”(用于按钮)或“Then I follow”(用于链接)正则表达式失败,错误为“未找到id为| link | name的元素/链接…”。例如,我在以下公共网站上发现了此异常:earthdata.nasa.gov网站(我们的网站尚未激活)。屏幕左侧显示“反馈”的按钮不可点击(原文如此)


我正在对selenium 2.29.0服务器运行测试。如何扩展Mink,使其能够定位并“单击”上面提到的“反馈”按钮之类的链接?

您可以使用XPath来单击链接,而不是使用id来单击链接。XPath是在DOM中标识对象的通用方法,因此它总是有效的

对于那些没有使用Behat的用户,请使用此链接阅读更多信息。它基本上是对Selenium工具的包装

并使用此选项访问Selenium web自动化测试站点:

编辑:

伊恩:多亏了麦基弗的指点,这里有了解决方案:


你的问题是什么?你试过什么?你的密码在哪里?另外,NASA网站上的反馈按钮对我来说也很好,感谢你的指点。下面是上面插入的一个示例实现。
/** Click on the element with the provided xpath query
 *
 * @When /^I click on the element with xpath "([^"]*)"$/
 */
public function iClickOnTheElementWithXPath($xpath)
{
    $session = $this->getSession(); // get the mink session
    $element = $session->getPage()->find(
        'xpath',
        $session->getSelectorsHandler()->selectorToXpath('xpath', $xpath)
    ); // runs the actual query and returns the element

    // errors must not pass silently
    if (null === $element) {
        throw new \InvalidArgumentException(sprintf('Could not evaluate XPath: "%s"', $xpath));
    }

    // ok, let's click on it
    $element->click();

}