В Selenium 4, методы поиска элементов немного изменены в сравнении с предыдущими версиями. Тем не менее, основные функциональные возможности остаются теми же. В этой статье мы подробно рассмотрим ключевые методы WebDriver в Selenium 4.
Первым делом, нам нужно импортировать WebDriver и инициализировать его. В этом примере мы будем использовать Firefox.
from selenium import webdriver
driver = webdriver.Firefox()
Переход на URL
С помощью метода get()
, можно открыть нужную веб-страницу.
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://about.google/")
Обновление страницы
Для обновления текущей страницы можно использовать метод refresh()
.
driver.refresh()
Переход назад
Чтобы вернуться на предыдущую страницу, используйте метод back()
.
driver.back()
Переход вперед
Если вы вернулись на предыдущую страницу и хотите вернуться обратно, используйте метод forward()
.
driver.forward()
Получение текущего URL
Если вам нужно узнать текущий URL, используйте свойство current_url
.
current_url = driver.current_url
print(current_url)
Получение заголовка страницы
Для получения текущего заголовка страницы можно использовать свойство title
.
Давайте рассмотрим простой пример использования этих методов:
from selenium import webdriver
import time
# Инициализация WebDriver
driver = webdriver.Firefox()
# Переход на Google
driver.get("https://www.google.com")
time.sleep(2) # Ожидание 2 секунды
# Переход на Яндекс
driver.get("https://ya.ru")
time.sleep(2)
# Возвращение на главную страницу Google
driver.back()
time.sleep(2)
# Обновление страницы
driver.refresh()
time.sleep(2)
# Переход вперед на Яндекс
driver.forward()
time.sleep(2)
# Закрытие браузера
driver.quit()
В Selenium 4, методы поиска элементов стали более обобщенными.
Поиск по ID элемента:
element = driver.find_element(By.ID, "some_id")
Поиск по имени класса:
element = driver.find_element(By.CLASS_NAME, "some_class")
Поиск по имени тега:
element = driver.find_element(By.TAG_NAME, "h1")
Поиск по селектору CSS:
element = driver.find_element(By.CSS_SELECTOR, "#some_id .some_class")
Получение всех cookies:
all_cookies = driver.get_cookies()
Получение cookie по имени:
cookie_value = driver.get_cookie("cookie_name")
Добавление cookie:
cookie_data = {"name": "new_cookie", "value": "cookie_value"}
driver.add_cookie(cookie_data)
Удаление cookie:
driver.delete_cookie("cookie_name")
Выполнение произвольного JavaScript кода:
driver.execute_script("alert('Hello from Selenium 4!')")
Скроллинг страницы
Вы можете скроллить страницу вниз или вверх, используя JavaScript.
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Скролл до конца страницы
driver.execute_script("window.scrollTo(0, 0);") # Скролл до верха страницы
Изменение свойств элементов
JavaScript можно использовать для изменения свойств DOM элементов.
element = driver.find_element(by=webdriver.common.by.By.ID, value="some_id")
driver.execute_script("arguments[0].value = 'new_value';", element)
Получение свойств и атрибутов
Получить атрибуты или свойства элемента тоже можно через JavaScript.
attribute = driver.execute_script("return arguments[0].getAttribute('attr_name');", element)
Вызов JavaScript функций страницы
Если на странице определены какие-то JavaScript функции, их тоже можно вызвать.
driver.execute_script("someFunction(arguments[0], arguments[1]);", arg1, arg2)
Работа с локальным и сессионным хранилищем
JavaScript позволяет работать с localStorage и sessionStorage.
# Запись в localStorage
driver.execute_script("localStorage.setItem('key', 'value');")
# Чтение из localStorage
local_storage_data = driver.execute_script("return localStorage.getItem('key');")
click()
: используется для клика по элементу формы, такому как кнопка или радио-кнопка.element = driver.find_element(By.ID, "submit_button")
element.click()
clear()
: используется для очистки текстового поля ввода перед вводом нового значения.text_field = driver.find_element(By.ID, "text_field")
text_field.clear()
is_selected()
: проверяет, выбран ли радио-кнопка или флажок (checkbox).radio = driver.find_element(By.ID, "radio_button")
is_selected = radio.is_selected()
is_enabled()
: проверяет, доступен ли элемент для взаимодействия.button = driver.find_element(By.ID, "button")
is_enabled = button.is_enabled()
submit()
: этот метод отправляет форму. Обычно это эквивалентно нажатию кнопки "Отправить" в форме.element = driver.find_element(By.ID, "submit_button")
element.submit()
send_keys()
: этот метод используется для автоматического ввода текста в поля формы.text_field = driver.find_element(By.ID, "text_field")
text_field.send_keys("Hello, World!")
Снимок всей страницы
Стандартный метод для создания снимка экрана — это save_screenshot()
.
driver.save_screenshot("screenshot.png")
Снимок определенного элемента
В Selenium вы можете сделать скриншот конкретного веб-элемента.
element = driver.find_element(by=webdriver.common.by.By.ID, value="some_id")
element.screenshot("element_screenshot.png")
Сохранение в памяти
Вместо сохранения скриншота в файл, вы можете сохранить его в переменную, используя метод get_screenshot_as_png()
или get_screenshot_as_base64()
.
screenshot_as_png = driver.get_screenshot_as_png()
screenshot_as_base64 = driver.get_screenshot_as_base64()
Снимок экрана в разных разрешениях
Можно изменить размер окна браузера перед снятием снимка экрана.
driver.set_window_size(800, 600)
driver.save_screenshot('screenshot_800x600.png')
Рассмотрим, как автоматизировать процесс поиска на Google с использованием Python и Selenium WebDriver. Этот пример поможет вам понять основы автоматизации браузера: от открытия браузера и ввода текста в поисковую строку до создания скриншота результатов поиска.
from selenium import webdriver
from selenium.webdriver.common.by import By
# Инициализация WebDriver
driver = webdriver.Chrome()
# Открытие Google
driver.get("https://www.google.com")
# Находим поле для ввода текста
search_box = driver.find_element(By.NAME, "q")
# Ввод данных в элемент
search_box.send_keys("Selenium 4.3.0")
# Отправка формы
search_box.submit()
# Создаём скриншот результатов
driver.save_screenshot("search_results.png")
# Закрываем браузер
driver.quit()
В этой статье мы подробно рассмотрели основные методы WebDriver в Selenium, узнали, как находить элементы на веб-страницах, как работать с формами и выполнять навигацию. Также мы познакомились с выполнением JavaScript-кода в браузере и возможностью создания скриншотов. Для демонстрации мы рассмотрели практический пример, в котором провели автоматизированный поиск в Google и сохранили скриншот результатов.
Такая автоматизация может быть крайне полезна для решения различных задач: от простого тестирования веб-приложений до сложных операций, таких как автоматизация рутинных действий. Selenium с его мощными возможностями дает вам инструменты, которые делают эти задачи выполнимыми и эффективными.
Однако стоит помнить, что методы и их применение могут изменяться с выходом новых версий Selenium. Поэтому всегда рекомендуется следить за обновлениями документации и библиотеки.
Содержание: