Методы WebDriver в Selenium

Основные методы webdriver в библиотеке Selenium

В Selenium 4, методы поиска элементов немного изменены в сравнении с предыдущими версиями. Тем не менее, основные функциональные возможности остаются теми же. В этой статье мы подробно рассмотрим ключевые методы WebDriver в Selenium 4.

Инициализация WebDriver

Первым делом, нам нужно импортировать 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

Получение всех 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

Выполнение произвольного 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 с использованием Selenium

Рассмотрим, как автоматизировать процесс поиска на 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. Поэтому всегда рекомендуется следить за обновлениями документации и библиотеки.

Содержание: