Проверьте, удовлетворяет ли существующий экземпляр элемента узла условию xpath

Выполнение запроса xpath может вернуть нам узел, атрибут узла, результат функции и т. Д. Выполнение xpath в Mink должно вернуть элемент узла в find(), findAll() а также has() методы NodeElement учебный класс.

Существуют ситуации, когда у нас есть выбранный элемент узла, и мы хотим утверждать, что у него есть класс или что некоторое выражение xpath для этого элемента удовлетворяет условию.

Каков будет правильный и самый элегантный способ сделать это?

0

Решение

В 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 ")]');
1

Другие решения

Других решений пока нет …