Урок 15. Автоматизация ввода данных в формы и отправка через Selenium

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

Импорт и подготовка

Начнем с импорта необходимых модулей и открытия страницы с формой:

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

driver = webdriver.Chrome()
driver.get("https://example.com/form")  # URL страницы с формой

Заполнение текстовых полей

Чтобы ввести текст в поле, используем метод send_keys():

# Ожидаем появления поля и вводим текст
wait = WebDriverWait(driver, 10)
name_field = wait.until(
    EC.presence_of_element_located((By.NAME, "username"))
)
name_field.send_keys("Ivan Petrov")

Выбор элементов из выпадающих списков

Для работы с <select> используем select из Selenium:

from selenium.webdriver.support.ui import Select

country_select = Select(driver.find_element(By.ID, "country"))
country_select.select_by_visible_text("Россия")

Выбор радиокнопок и чекбоксов

Радиокнопки и чекбоксы можно кликать напрямую после нахождения:

gender_radio = driver.find_element(By.CSS_SELECTOR, "input[name='gender'][value='male']")
gender_radio.click()

subscribe_checkbox = driver.find_element(By.ID, "subscribe")
subscribe_checkbox.click()

Отправка формы

Для отправки формы можно кликнуть по кнопке submit или использовать submit():

submit_btn = driver.find_element(By.XPATH, "//button[@type='submit']")
submit_btn.click()

# Или
# form = driver.find_element(By.ID, "registrationForm")
# form.submit()

Отправка заполненной на сайте формы

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()

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

  • Используйте явные ожидания для всех элементов формы.
  • Проверяйте, что поля очищены перед вводом с помощью clear().
  • Для динамически появляющихся полей сначала дождитесь их видимости.
  • Используйте комбинацию клавиш через Keys для специальных действий, например Keys.TAB.

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

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