Урок 10. Работа с формами: ввод текста и отправка данных через Selenium

Веб-формы встречаются практически на всех сайтах: регистрация, поиск, обратная связь, авторизация. Умение правильно заполнять поля, нажимать кнопки и отправлять данные критично для автоматизации парсинга и тестирования сайтов.

Почему это важно

С помощью Selenium можно автоматически:

  • Заполнять текстовые поля
  • Выбирать значения из выпадающих списков (select)
  • Ставить галочки и переключатели (checkbox, radio)
  • Нажимать кнопки и отправлять формы
Все эти действия позволяют имитировать поведение реального пользователя.

Пример: поиск на сайте

Допустим, есть поисковая форма на сайте. Мы хотим автоматически ввести текст и отправить поиск.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

driver = webdriver.Chrome()
driver.get("https://parsertools.ru")

# ждём, пока поле поиска появится
search_box = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.NAME, "s"))
)

# вводим запрос и нажимаем Enter
search_box.send_keys("Уроки" + Keys.RETURN)
time.sleep(20) # Это нужно для того чтобы посмотреть текст введённый в поле

driver.quit()

Пример: регистрационная форма

Работа с несколькими полями и кнопкой отправки:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# Создаём драйвер Chrome
driver = webdriver.Chrome()

# Открываем страницу с формой обратной связи
driver.get("https://parsertools.ru/zakazat-parser")
time.sleep(5)  # Пауза для загрузки страницы и визуального контроля

# Находим поле "Ваше имя" и вводим текст
name_field = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.NAME, "your-name"))
)
name_field.send_keys("Иван Иванов")
time.sleep(5)  # Пауза, чтобы увидеть введённое имя

# Находим поле "Ваш e-mail" и вводим адрес
email_field = driver.find_element(By.NAME, "your-email")
email_field.send_keys("ivan@example.com")
time.sleep(5)  # Пауза для визуальной проверки

# Находим поле "Тема" и вводим текст темы сообщения
subject_field = driver.find_element(By.NAME, "your-subject")
subject_field.send_keys("Тестовое сообщение Selenium")
time.sleep(5)  # Пауза для визуальной проверки

# Находим поле "Ваше сообщение" и вводим текст сообщения
message_field = driver.find_element(By.NAME, "your-message")
message_field.send_keys("Это тестовое сообщение, отправленное автоматически через Selenium.")
time.sleep(5)  # Пауза для визуальной проверки

# Находим кнопку "Отправить" и кликаем по ней
submit_button = driver.find_element(By.CSS_SELECTOR, "input.wpcf7-submit")
submit_button.click()
time.sleep(5)  # Пауза для визуального подтверждения отправки

# Сообщение о завершении работы скрипта
print("Форма заполнена и отправлена")

# Закрываем браузер
driver.quit()

Советы при работе с формами

  • Всегда проверяйте наличие поля через try/except, чтобы избежать ошибок
  • Для динамических форм используйте WebDriverWait и ожидание кликабельности
  • Можно комбинировать с вводом клавиш, например Keys.TAB для перехода между полями
  • Соблюдайте паузы (time.sleep) при необходимости, чтобы форма успевала загрузиться

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

Больше уроков по парсингу на parsertools.ru/lessons.