Mink:这些方法是在哪里定义的?

Mink: Where are these methods defined?

我正在学习 Mink,想找一份 API 参考资料。我已深入研究 Mink 源代码寻找答案,但感到困惑。

文档给出了它的使用示例:

$session->getPage()->hasContent("bla");
$session->getPage()->find('css', 'title')->getText();

但是我在源代码中找不到这些方法getPagegetTextfindhasContent。 (但它们似乎有效)。

Mink 似乎充分利用了 OOP 模式,而我显然还不够聪明,无法弄清楚到底发生了什么! 任何人都可以给我一个 link 到 API 的参考,或者帮助我理解这些方法的定义位置吗?

例如,我一直困惑为什么这不起作用:

$this->assertTrue($session->getPage()->find('css', 'title')->hasContent("Part of the page's Title"));

(我收到错误 Call to undefined method Behat\Mink\Element\NodeElement::hasContent()

但是我找不到一个叫做NodeElement的玻璃杯,更不用说它有什么方法可以使用了。

好吧,从未使用过 Mink,但来源在 github:

来自https://github.com/minkphp/Mink/blob/master/src/Session.php

/**
 * Returns page element.
 *
 * @return DocumentElement
 */
public function getPage()
{
    return $this->page;
}

由于getPage()returns一个DocumentElement对象,可以看看DocumentElementclass:https://github.com/minkphp/Mink/blob/master/src/Element/DocumentElement.php

由于 DocumentElement 扩展了 TraversibleElement,而 TraversibleElement 又扩展了 Element,您最终会在 Element 中找到 find() 函数。这是 IDE 真正帮助您遍历代码库以找到所调用函数的实际位置的地方。

我希望我指的是同一只 Mink。在 github.

查看源代码

对于getPage(),例如,看这个 https://github.com/minkphp/Mink/blob/master/src/Session.php

首先,您应该从 MinkContext 扩展 FeatureContext class。 MinkContext 有很多有用的断言方法和用于页面元素的方法。 F.e.

$this-> assertElementContains('CSS_IDENTIFIER_EXAMPLE', 'Some text');

$this->fillField($field, $value);

用指定的 id|name|label|value 填写表单域。

可用方法的完整列表在 GitHub MinkContext

上检查

这里还有一个 behat cheat sheet,它显示了与 html 元素一起使用的基本信息和方法。