Урок 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.
