Как интерпретировать XPath? - PullRequest
0 голосов
/ 26 июня 2018

Может кто-нибудь сказать мне, правильно ли я интерпретировал следующий XPath:

 driver.find_elements_by_xpath ("//span[contains(., 'Cardiovascular')]/parent::*/parent::*/descendant-or-self::node()/a/span"
  1. ищите теги span, которые имеют "сердечно-сосудистые", как часть их текста в любом месте документа
  2. Как только он найден, проверьте его непосредственного родителя и всех его потомков или других родителей в любом месте документа и сам узел
  3. Затем перейдите к непосредственному тегу
  4. Затем перейдите к тегу немедленного span?

Более конкретно, может кто-нибудь сказать, что означает / parent :: * / parent?Что означает / parent :: / origin / or-self :: node ()?почему у нас есть функция node () там

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Майкл Кей уже объяснил, что выбирает XPath.Вот ответы на ваши дополнительные вопросы:

В частности, может кто-нибудь сказать, что означает /parent::*/parent [sic]?

  • parent::*означает выбрать родительский элемент (* соответствует элементам любого имени) узла контекста.
  • parent::*/parent::* означает выбрать элемент прародителя узла контекста.

Что означает /parent::/descendant-or-self::node() [sic]?

Почему у нас есть функция node () в качестве функции

  • См. Выше, что означает parent::* (и обратите внимание, что вы забыли *).
  • descendant-or-self::node() совпадает с .//node();он выбирает узел контекста и всех его потомков.Здесь node() - это не функция, а проверка узла .Если бы это было element(), он бы выделил только элементы;comment(), только комментарии;и т. д.
0 голосов
/ 26 июня 2018

Почти.

Найдите теги span, которые имеют "сердечно-сосудистые" как часть их текста;найти их элементы прародителя;затем в этих элементах-прародителях найдите все элементы span, у которых элемент a является родительским.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...