Поскольку у вас есть элемент html (img) , код будет игнорировать тег a , поскольку он не имеет строки Integrations в качестве непосредственного дочернего элемента,(код работает, если строка Integrations остается выше тег img )
См. этот код:
const htmlObj = document.createElement('div')
htmlObj.innerHTML = htmlStr
const elements = document.evaluate('.//a[contains(., "Integrations")]', htmlObj, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
console.log(elements.snapshotItem(0))
Как видите, я изменил '. // * [содержит ( text () , "Интеграция")]' на '. // a [содержит(. , «Интеграция»)] '
Когда вы используете text () , это означает, что вы ищете ближайшего ребенка текстовый узел равен 'Интеграциям'.
, но, если вы используете . , это означает, что вы ищете строку Integration at любая позиция , и поэтому приведенный выше код работает, даже если строка Integration находится ниже img (или любой) html-тега.
ps: Мой английский находится в стадии разработки.Если вы ничего не поняли из того, что я говорю, спросите меня, и я постараюсь объяснить это снова.