Как использовать метод поиска элемента по xpath в Selenium Python
Table Of Content
- Что такое XPath?
- Что такое метод find_element_by_xpath?
- Создание экземпляра веб-драйвера
- Переход на веб-страницу
- Поиск всех заголовков блогов на странице с использованием выражения XPath
- Вывод всех заголовков в консоль
- Закрытие окна браузера
- Напишите динамический XPath для поиска элемента
- 1. Использование одного атрибута (тип относительного XPath):
- Поиск по атрибуту HREF
- Поиск по ID
- Поиск по имени класса
- Поиск по имени
- Поиск по другому/пользовательскому атрибуту
- 2. Использование нескольких атрибутов (тип относительного XPath)
- 3. Поиск с использованием ключевого слова starts-with в XPath
- 4. Поиск с использованием ключевого слова contains в XPath
- 5. Использование ключевого слова text() для поиска в XPath
- 6. Использование ключевого слова text() для поиска с помощью contains в XPath
- Заключение:
Selenium - это инструмент автоматизации тестирования с открытым исходным кодом, который может использоваться для автоматизации действий веб-браузера. Python является популярным языком для автоматизированного тестирования и парсинга, и Selenium предоставляет привязку для Python для этой цели.
Существует множество методов для поиска элементов на веб-странице. В Selenium есть 8 различных методов для поиска элементов. Один из методов, который Selenium предоставляет для поиска элементов на веб-странице, это метод find_element (By.XPATH, xpath) (ранее find_element_by_xpath(xpath)). В этом блоге мы подробно рассмотрим метод поиска элемента по xpath в Selenium Python.
Что такое XPath?
XPath (XML Path Language) - это язык, используемый для обхода XML- и HTML-документов. Выражения XPath используются для навигации по элементам и атрибутам в XML- или HTML-документе. XPath использует нотацию пути, аналогичную путям файловой системы, где каждый элемент в пути представляет собой узел в документе.
Что такое метод find_element_by_xpath?
Метод find_element_by_xpath - это метод Selenium Python, который можно использовать для поиска элемента на веб-странице с использованием выражений XPath. Этот метод принимает один аргумент, который представляет собой выражение XPath, используемое для поиска элемента.
Синтаксис:
find_elements(By.XPATH, xpath)
find_element(By.XPATH, xpath)
Параметры: xpath: Строка, представляющая выражение XPath, используемое для поиска элемента.
Возвращаемое значение: Этот метод возвращает объект WebElement, представляющий первый элемент, соответствующий выражению XPath.
Пример:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# Создание экземпляра веб-драйвера
driver = webdriver.Chrome(service=Service(r"C:\chromedriver.exe"))
# Переход на веб-страницу
driver.get("https://www.kushalstudy.com")
# Поиск всех заголовков блогов на странице с использованием выражения XPath
titles = driver.find_elements(By.XPATH, "//a[@class='wp-block-latest-posts__post-title']")
# Вывод всех заголовков в консоль
for title in titles:
print(title.get_attribute('innerText'))
# Закрытие окна браузера
driver.close()
В приведенном выше коде мы сначала создаем экземпляр webdriver и переходим на веб-страницу. Затем мы используем метод find_elements(By.XPATH, …) для поиска элемента на веб-странице с использованием выражения XPath. В приведенном выше примере мы парсим все заголовки блогов, отображаемые на странице. После получения элемента мы можем выполнять действия с ним с помощью различных методов, предоставляемых классом WebElement.
Выражения XPath могут быть довольно сложными, но они предоставляют мощный способ поиска элементов на веб-странице. Некоторые распространенные выражения XPath, используемые для поиска элементов:
- //tagname: Выбирает все элементы с указанным именем тега.
- //tagname[@attribute=’value’]: Выбирает все элементы с указанным именем тега и значением атрибута.
- //tagname[text()=’text’]: Выбирает все элементы с указанным именем тега и текстовым значением.
В Selenium существует два типа XPath:
- Абсолютный путь: XPath можно использовать для поиска элемента в абсолютных терминах. Абсолютное выражение XPATH содержит все элементы от корневого узла (HTML), от начала пути до нужного элемента. В нашем примере HTML-кода нам нужно найти текст Open Website, тогда код Selenium будет выглядеть следующим образом:
driver.find_element(By.XPATH, "/html/body/div/div/a")
- Относительный путь: Если у элемента есть класс или идентификатор, то мы можем использовать относительный путь. В нашем примере HTML-кода нам нужно найти текст Open Website, тогда код Selenium будет выглядеть следующим образом:
driver.find_element(By.XPATH, "//*[@class='someClassName']")
Напишите динамический XPath для поиска элемента
1. Использование одного атрибута (тип относительного XPath):
Ниже приведены некоторые примеры для поиска элемента <a>
.
# Поиск по атрибуту HREF
driver.find_element(By.XPATH,"//a[@href='https://www.kushalstudy.com/']")
# Поиск по ID
driver.find_element(By.XPATH,"//a[@id='someIDName']")
# Поиск по имени класса
driver.find_element(By.XPATH, "//a[@class='someClassName']")
# Поиск по имени
driver.find_element(By.XPATH,"//a[@name='someName']")
# Поиск по другому/пользовательскому атрибуту
driver.find_element(By.XPATH, "//a[@data-name='some server data']")
2. Использование нескольких атрибутов (тип относительного XPath)
Вы можете комбинировать два или более атрибутов, разделяя их пробелом. В приведенном ниже коде мы комбинируем ID и класс для поиска элемента.
driver.find_element(By.XPATH,"//a[@id='someIDName'] [@class='someClassName']")
3. Поиск с использованием ключевого слова starts-with в XPath
Вы можете найти элемент, соответствующий значению атрибута, начинающемуся с заданного текста.
driver.find_element(By.XPATH,"//a[starts-with(@id, 'someID')]")
4. Поиск с использованием ключевого слова contains в XPath
Вы можете найти элемент, соответствующий значению атрибута, содержащему заданный текст.
driver.find_element(By.XPATH,"//a[contains(@id, 'meIDNa')]")
5. Использование ключевого слова text() для поиска в XPath
Вы можете найти элементы по тексту тега с точным совпадением, используя следующий код.
driver.find_element(By.XPATH,"//a[text()='Открыть веб-сайт']")
6. Использование ключевого слова text() для поиска с помощью contains в XPath
Вы можете найти элементы по соответствию текста тега любой части текста с помощью следующего кода.
driver.find_element(By.XPATH,"//a[contains(text(), 'Website')]")
Заключение:
Метод find_element_by_xpath в Selenium Python является мощным способом нахождения элементов на веб-странице с использованием выражений XPath. Понимая, как работают выражения XPath и синтаксис метода find_element_by_xpath, вы можете написать мощные и надежные скрипты автоматизации для тестирования и парсинга веб-приложений. Вы также можете проверить блог Как искать и находить элементы в Selenium Python для всех используемых методов в Python Selenium.