behat - 我可以让 Behat/ZombieJS/Mink 模拟点击 "non-link"元素来触发 JS 监听器吗?

标签 behat zombie.js mink

我正在使用Behat用于测试,使用 ZombieJS驱动程序,到目前为止一切都工作得很好,但有一件事困扰着我,我似乎无法弄清楚如何让 Behat 模拟对非链接元素的点击。我猜这是因为 Mink 是一个“跨浏览器”驱动程序,点击非链接元素并没有真正的意义。但对于我的用例,我需要它,因为页面上有几个元素附加了 javascript 事件监听器,并且我想测试这些功能。

我尝试使用

Then I follow "div.sa"

但它失败并出现预期错误:

01. Link with id|title|alt|text "div.sa" not found.

因为它不是链接元素。 Behat 中也有类似的步骤:

我按“button.class”

但是这个仅适用于按钮。

有没有办法让 Behat 点击非标签的元素?

最佳答案

进行一些错误处理:

/** Click on the element with the provided xpath query
 *
 * @When /^(?:|I )click on the element "([^"]*)"$/
 */
public function iClickOnTheElement($locator)
{
    $session = $this->getSession(); // get the mink session
    $element = $session->getPage()->find('css', $locator); // runs the actual query and returns the element

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

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

关于behat - 我可以让 Behat/ZombieJS/Mink 模拟点击 "non-link"元素来触发 JS 监听器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13365910/

相关文章:

BDD 和 Behat 特殊字符

symfony - Behat 验证 Symfony2 用户

facebook - 在 Behat Mink 中的场景之间重置 session 。怎么禁用?

zombie.js - Zombie.js 可以与静态 HTML 文件或文件 ://protocol? 一起使用吗

node.js - 为什么zombie.js浏览器在使用Bootstrap时返回空HTML?

php - Mink 实例尚未在 Mink 上下文类上设置。您是否启用了 Mink 扩展? (运行时异常)

php - 我可以使用 Mink 和 Selenium2 发送原始键盘输入吗?

behat - 努力让 Mink 与 Behat 合作

javascript - D3 渲染 SVG。我如何以编程方式获取该 SVG?

php - 如何访问 Behat 中值属性的间隔字符串?