Поиск элементов Selenium



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

Локатор — это способ идентификации элементов на странице. Это аргумент, передаваемый методам поиска элементов.

Локаторы играют очень важную роль при работе с Selenium. Они обеспечивают путь к веб-элементам, которые необходимы для автоматизации определенных действий, таких как клик, ввод, установка флага и др.

Для начала, импортируем класс By из модуля selenium.webdriver.common.by:

from selenium.webdriver.common.by import By

Класс By — это, по сути, перечисление, которое содержит различные стратегии поиска элементов на веб-странице. Использование By позволяет сделать код более читаемым и поддерживаемым, так как это стандартизирует способы поиска элементов.

By.ID – Поиск элемента по уникальному идентификатору (id). Этот метод очень быстрый и надежный, но требует, чтобы у элемента был атрибут id

element = driver.find_element(By.ID, "some_id")

By.CSS_SELECTOR – Поиск элемента или элементов, используя селекторы CSS. Это гибкий и мощный метод, который может выразить сложные критерии поиска.

elements = driver.find_elements(By.CSS_SELECTOR, ".some_class")

By.XPATH – Поиск элемента с помощью языка XPath. XPath позволяет создать более сложные запросы, но он менее читаемый и, возможно, будет работать медленнее, чем другие методы.

element = driver.find_element(By.XPATH, "//div[@attribute='value']")

By.NAME – Поиск элемента по атрибуту name. Этот метод хорошо подходит для форм.

element = driver.find_element(By.NAME, "username")

By.TAG_NAME – Поиск элемента по названию HTML-тега. Этот метод полезен, если нужно выбрать, например, все изображения на странице.

images = driver.find_elements(By.TAG_NAME, "img")

By.CLASS_NAME – Поиск элемента или элементов по классу. Этот метод полезен, если у элементов есть общий класс.

buttons = driver.find_elements(By.CLASS_NAME, "btn")

By.LINK_TEXT – Поиск элемента по точному тексту ссылки. Очень удобно, если текст уникален.

element = driver.find_element(By.LINK_TEXT, "Continue")

By.PARTIAL_LINK_TEXT – Поиск элемента по частичному тексту ссылки. Удобно, когда точный текст ссылки неизвестен или динамичен.

element = driver.find_element(By.PARTIAL_LINK_TEXT, "Cont")

Локаторы используются с помощью двух универсальных методов — find_element(), который возвращает ровно один элемент, найденный первым, и find_elements(), который возвращает список найденных элементов.

.find_element()

Метод find_element() используется, когда вам нужно найти один конкретный элемент на странице. Он возвращает первый элемент, который соответствует заданным критериям поиска. Если элемент не найден, Selenium сгенерирует исключение NoSuchElementException.

# Ищем элемент с тегом img
elements = driver.find_element(By.TAG_NAME, 'img')
.find_elements()

Метод find_elements() полезен, когда вы хотите получить список всех элементов, которые соответствуют заданным критериям. В отличие от find_element(), этот метод вернёт пустой список, если ничего не найдено, вместо того чтобы генерировать исключение.

# Ищем все элементы с классом some_class
elements = driver.find_elements(By.CLASS_NAME, 'some_class')

Пример кода с поиском элемента и клика по нему..find_element(By.ID, «sale_button»)

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('https://mob25.com/')
button = browser.find_element(By.ID, "sale_button").click()
time.sleep(10)


Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: