Я пытаюсь искать элементы DOM, используя свойства узла DOM , например innerText
и textContent
, в качестве фильтров, но безуспешно.
Взять этот HTML, например:
<html>
<body>
<div class="one">
<div class="two">
<div class="three">
<div>Text Here</div>
</div>
</div>
</div>
</body>
</html>
Если я ищу узел с помощью атрибута класса, я могу получить доступ к свойству innerText
, как с помощью функций XPath (оценка), так и CSS Selector (querySelectorAll):
document.evaluate("//div[@class = 'one']",
document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue.innerText;
document.querySelectorAll("div.one")[0].innerText;
Однако использование свойства innerText
вместо class
не дает результата:
document.evaluate("//div[@innerText = 'Text Here']",
document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue;
document.querySelectorAll("div[innerText='Text Here']")[0];
Я тестировал с nodeName
и textContent
, и он тоже не удался, поэтому я думаю, что это связано со свойствами DOM, которые не являются атрибутами тегов.
Я пытался использовать функцию XPath text()
, но использование ее на <div class="one">
из приведенного выше примера не вернет "Text Here".
Все тесты были сделаны на Google Chrome v67, на Linux Mint.
Почему это происходит? Есть ли какое-либо решение или обходной путь для того, что я пытаюсь сделать?