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