Приятной особенностью 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
, которые находятся в нижнем колонтитуле.