检查现有节点元素实例是否满足xpath条件


Check if existing node element instance satisfies an xpath condition

执行xpath查询可以返回节点、节点属性、函数结果等。在Mink中执行xpath必须返回NodeElement类的find()findAll()has()方法中的节点元素。

有些情况下,我们有一个选定的节点元素,并且我们想要断言它有一个类,或者该元素上的某个xpath表达式满足条件。

做这件事最恰当、最优雅的方式是什么?

在xpath中,我们可以使用self轴引用元素本身。其想法是选择具有所需条件的self,如果它满足条件,则Mink将获得相同的元素(而不是函数或表达式结果、属性或其他任何元素),因此不会抛出异常。

$element = $this->getSession()->getPage()->find('//div');
$element->has('/self::*[position() = 1]');
$element->has('/self::*[contains(concat(" ", normalize-space(@class), " "), " my-class ")]');