Для того, чтобы найти элементы на странице с помощью Selenium, мы можем воспользоваться функцией find_element
и find_elements
.
Синтаксис:
find_element(By.Attribute, 'name_attribute')
Давайте рассмотрим по каким атрибутам мы можем вести поиск:
В таблице функция с атрибутом -> получаемый html
Python | HTML | ОПИСАНИЕ |
---|---|---|
find_element(By.ID, 'user') | <div id="user">text</div> | Поиск по ID элемента |
find_element(By.NAME, 'username') | <input name="username" type="text"> | Поиск по имени элемента |
find_element(By.LINK_TEXT, 'login') | <a href="/login">Login</a> | Поиск по тексту ссылки элемента |
find_element(By.PARTIAL_LINK_TEXT, 'Next') | <a href="/next">Next page</a> | Поиск по части текста ссылки элемента |
find_element(By.XPATH, '//div[@id="login"]/input') | <div id="login"> <input type="text"> </div> | Поиск используя XPath |
find_element(By.TAG_NAME, 'body') | <body> .... </body> | Поиск по тегу элемента |
find_element(By.CLASS_NAME, 'table') | <div class="table">text</div> | Поиск по классу элемента |
find_element(By.CSS_SELECTOR, '#login > input[type="text"]') | <form id="login"> <input type="text"> </form> | Поиск по селектору элемента |
Если мы хотим получить список элементов, допустим всех тегов a, мы можем воспользоваться именно функцией find_elements()
Синтаксис:
find_elements(By.Attribute, 'name_attribute')
Давайте рассмотрим пример поиска кнопки меню, нажатия на нее и поиска в этом меню кнопок входа и регистрации:

А в таком виде открывается сайт изначально:

Необходимый код:
import time
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from selenium.webdriver.common.by import By
service = Service('C:\\Users\\Razilator\\Desktop\\Courses\\Selenium\\driver\\chromedriver.exe')
driver = webdriver.Chrome(service=service)
url = 'https://notehunter.net'
try:
driver.get(url=url)
time.sleep(2)
driver.find_element(By.CLASS_NAME, 'navbar-toggler').click() # Кликнем по гамбургер-меню
time.sleep(2) # Ждем 2 секунды для прогрузки дерева
login_btn = driver.find_element(By.XPATH, '//a[@class="nav-link btn btn-sm btn-light p-1"]') # Найдем кнопку по xpath
register_btn = driver.find_element(By.LINK_TEXT, 'Регистрация') # Найдем кнопку по названию ссылки
print(login_btn.text, register_btn.text)
except Exception as ex:
print(ex)
finally:
driver.close()
driver.quit()
Результат:
Вход Регистрация
Пояснение:
- Чтобы искать элементы, мы должны импортировать By:
from selenium.webdriver.common.by import By
driver.find_element(By.CLASS_NAME, 'navbar-toggler').click()
- находим кнопку гамбургер и кликаем на нее.- Ждем 2 секунды для подгрузки HTML.
driver.find_element(By.XPATH, '//a[@class="nav-link btn btn-sm btn-light p-1"]')
- находим кнопку входа по Xpath.driver.find_element(By.LINK_TEXT, 'Регистрация')
- находим кнопку по названию ссылки.
В следующем уроке мы рассмотрим перемещение и вставку в форму необходимых символов, текста и т.д.