Использование Xpath для определения, есть ли какие-либо вхождения текста в любой дочерний элемент?

Я видел такой вопрос о XML-документе, но у меня есть HTML-документ и я хочу знать, работает ли он так же.

Я пытаюсь перелистать много HTML-страниц и определить, есть ли какие-либо экземпляры элемента span, который содержит текст » text»:

//*[@id="all_totals"]/div[1]/div/span[7]//span[text()="Export"]

ссылка на изображение HTML: http://f.cl.ly/items/290L2v373y3c3P050x2m/Image%202016-05-05%20at%202.59.25%20PM.png

В приведенном выше Xpath, родительский элемент, который я хочу, заканчивается на втором «div». Я добавил остальное («/span[7]…») как конкретный элемент, который я хочу захватить. Я хочу проверить, содержит ли какой-либо из промежутков, содержащихся в родительском элементе, текст «text», потому что, если любой из них, элемент span, который я хотел бы, был бы [6] вместо [7] («text» span-это случайный дополнительный, который происходит перед тем, который я хочу, ведущий к положительному приращению 1 места)

Я уверен, что я делаю это неправильно, поэтому любая помощь очень ценится.

Надеюсь, это имеет смысл. Счастлив уточнить больше если нужно!

1 ответ

  1. Для проверки » родителей“ на любом уровне используйте ancestor

    Попробуйте что-то вроде этого (не протестировано) :

     (//*[@id="all_totals"]/div[1]/div
         /span[ ancestor::*/span[contains( text(), "text" )] and position() = 6 
             or position() = 7 ])[1]