Что я делаю в подобных случаях, так это нахожу элемент «якорь», а затем нахожу два (или более) элемента, которые являются дочерними элементами этого якоря.
Чтобы соответствовать опубликованному вами HTML, ясобираюсь искать "Fade Stripe L / S Top" и "Brown".Я собираюсь использовать тег ARTICLE
в качестве своего якоря.
Обычно я начинаю с того, что делаю что-то простое, а затем строю его.Давайте найдем текст «Fade Stripe L / S Top» в теге A
под якорем ARTICLE
.
//article//a[.='Fade Stripe L/S Top']
^ double slash means at any level
^ the ARTICLE tag
^ at any level below that
^ an A tag
^ that contains the exact text "Fade Stripe L/S Top"
Теперь давайте сделаем то же самое, но для текста «Коричневый»
//article//a[.='Brown']
Действительно просто ... из вашего поста, я полагаю, вы могли бы сделать это самостоятельно или, по крайней мере, следовать за ним.Теперь давайте слегка перевернем его и используем ARTICLE
в качестве привязки ... найдите тег ARTICLE
, который имеет тег A
потомка, который содержит "Brown".
//article[.//a[.='Brown']]
Возвращает *Тег 1020 * вместо тега A
, поскольку этот
[.//a[.='Brown']]
^ start looking at the tag previously specified
^ at any level
^ the rest you already know
указывает на то, что это свойство тега ARTICLE
(оно заключено в [] s).Итак, теперь у нас есть ARTICLE
, который содержит ссылку с текстом «Коричневый».Теперь нам просто нужно убедиться, что он также содержит ссылку с текстом "Fade Stripe L / S Top" и вернуть тег A
.
//article[.//a[.='Brown']]//a[.='Fade Stripe L/S Top']
^ this first part is from above
^ this is where the new stuff starts but it should be recognizable
Надеюсь, это имеет смысл.В основном мы находим тег ARTICLE
, который содержит одну из ссылок (используя синтаксис [.//tag[property]]
), а затем находим потомка //tag[property]
и т. Д.
Просто для дальнейшего расширения этого ... мы можемискать любое количество свойств.Надеюсь, это поможет вам лучше увидеть рисунок.
//article [.//a[.='Brown']] [.//a[.='Text2']] [.//a[.='Text3']] //a[.='Fade Stripe L/S Top']
Я добавил пробелы между свойствами для выделения.
//article [.//a [.='Brown']] //a [.='Fade Stripe L/S Top']
//tag [.//tag[property ]] //tag[property]