Вложенные предикаты в Xpath - PullRequest
0 голосов
/ 19 октября 2018

enter image description here

Я пытаюсь получить доступ к узлу div через

//div[@data-full='2018-1-15']

Обычно я просто выполняю поиск по Xpath и получаю этот узел.Однако характер сайта заключается в том, что существует несколько узлов с этим свойством, и только один из них является кликабельным.

Из-за этого мне нужно сначала захватить узел

//div[@class='dw-cal-slide dw-cal-slide-a'] 

, а затем шагнуть вниз.Я знаю, что пытаюсь сделать что-то вроде этого:

Шаг вниз на один узел:

//div[@class='dw-cal-slide dw-cal-slide-a']/div/

А затем искать дочерние узлы, у которых есть собственный дочерний узел со свойством

//div[@data-full='2018-1-15']. 

Возникли проблемы с синтаксисом.Любая помощь будет отличной!

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Как вы сказали, существует несколько узлов с одинаковым свойством, и только один из них доступен для нажатия.Вы можете нажать на узел, проверив isEnable.Другая вещь, которую вы можете попробовать с последующим или предшествующим.Пример можно найти по ссылке ниже:

0 голосов
/ 19 октября 2018

Попробуйте

//div[contains(@class, 'dw-cal-slide') and contains(@class, 'dw-cal-slide-a')]//div[@data-full='2018-1-15']

Но ИМХО лучше (более короткое выражение) использовать селектор CSS

div.dw-cal-slide.dw-cal-slide-a div[data-full='2018-1-15']

Если вы хотите найти предок и потомок div в двух строках кода, тогда выможно использовать ( пример Python )

ancestor = driver.find_element_by_xpath("//div[contains(@class, 'dw-cal-slide') and contains(@class, 'dw-cal-slide-a')]")

и

descendant = ancestor.find_element_by_xpath(".//div[@data-full='2018-1-15']")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...