Использование XPath и Selenium с произвольным элементом документа как root - PullRequest
0 голосов
/ 08 апреля 2020

Приятной особенностью Selenium является то, что область действия find_elements() и связанные методы могут быть ограничены любым узлом в документе. Например,

from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome(executable_path = 'chromedriver.exe')

driver.get("https://www.wikipedia.org/")
driver.find_elements(By.TAG_NAME, "div")

вернет все элементы div в документе, а

footerElement = driver.find_element(By.CLASS_NAME, "footer")
footerElement.find_elements(By.TAG_NAME, "div")

вернет только те элементы div в нижнем колонтитуле. Есть ли способ получить подобную функциональность при поиске элементов с By.XPATH? Я спрашиваю, потому что footerElement.find_elements(By.XPATH, "//div") возвращает все элементы div в документе - не только те, что находятся в нижнем колонтитуле, что я и хотел бы сделать.

Чтобы было ясно: я знаю, как создать Оператор XPath, чтобы получить только элементы div в нижнем колонтитуле. Но я хочу знать, возможно ли начать с любого произвольного узла, например footerElement в приведенном выше примере, а затем использовать очень простой синтаксис, например footerElement.find_elements(By.XPATH, "//div"), чтобы получить только те элементы div, которые находятся в нижнем колонтитуле.

1 Ответ

1 голос
/ 08 апреля 2020

Я могу найти только те div в нижнем колонтитуле, используя footer.find_elements(By.XPATH, ".//div").

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