Найди div, a, id итд которые содержат текст
//*/div[contains(text(),"some writing")]
a[normalize-space(text())="ANCHOR TEXT"]
В данном примере сначала находим родительскй PARENT_ID и после этого ищем текст SOME_TEXT В данном примере нам все равно где находится дочерний элемент (прямо под родителем или где-то далеко внутри) a он просо проверяет все дочерние записи под PARENT_ID
//*[@id="PARENT_ID"]//*/a[contains(text(), "SOME_TEXT")]
'//tr[contains(@id,"SOME_ID")]
//*/td[@scope="row" and @type="varchar"]
Находим ребенка и идем вверх
<div>
<a>txt</a>
</div>
//*/a[contains(text(),"txt")]/parent::div
//*/a[contains(text(),"txt")]/ancestor::*/div
Сначала вы находим базовый элемент (TR) после этого внутри квадратных скобок мы указываем все идентификаторы (ID) и даже дочерний элемент (B)!
Vid: https://youtu.be/2kKW9ly2j7k
Данный пример позволит найти div2 который по соседтству с div1
<div1>
</div1>
<div2>
<select>
</div2>
//*/div[contains(text(),"LABEL_STRING")]/following-sibling::div/select
Ссылки:
- https://stackoverflow.com/a/16728174/1907888 (Very useful and straightforward)
- https://devhints.io/xpath
- https://navyuginfo.com/preceding-sibling-following-sibling-xpath/