Автозаполнение формы
Соберём всё вместе: программа сама заполнит форму регистрации, отправит её и проверит, что ответил сайт.
Заполнение по словарю
data = {"name": "Аня", "email": "anya@mail.ru", "age": "15"}
for name, value in data.items():
fields = driver.find_elements(By.NAME, name)
if not fields:
continue # такого поля нет — пропускаем
fields[0].clear()
fields[0].send_keys(value)
- поля ищут по
name— он стабильнее классов иid, его использует сам сайт при отправке; - поле очищают перед вводом — в нём могло остаться значение;
find_elementsвместоfind_elementпозволяет спокойно пропустить отсутствующее поле.
Переключатели и списки
driver.find_element(By.CSS_SELECTOR, "input[name=gender][value=f]").click()
Select(driver.find_element(By.NAME, "plan")).select_by_visible_text("Премиум")
Отправка и результат
После нажатия кнопки сайт может ответить по-разному — успехом или ошибками. Ждут любого из вариантов, а потом смотрят, какой случился:
WebDriverWait(driver, 5).until(
lambda d: d.find_elements(By.ID, "success") or d.find_elements(By.CSS_SELECTOR, ".error")
)
if driver.find_elements(By.ID, "success"):
print("Готово!")
else:
print([e.text for e in driver.find_elements(By.CSS_SELECTOR, ".error")])
Ответственность
Автоматизируйте только то, на что у вас есть право: свои аккаунты, свои сайты, рабочие задачи. Многие сайты запрещают роботов в правилах и защищаются капчами; обходить такую защиту нельзя. Не отправляйте формы слишком часто — это нагрузка на чужой сервер.
Что дальше
- Тестирование своих сайтов: Selenium +
pytestпроверяют, что после каждого изменения регистрация, корзина и оплата работают; - Page Object — класс на каждую страницу сайта с методами
login(),search(): тесты становятся короче и понятнее; - Playwright — более новая библиотека с похожими идеями и встроенными ожиданиями.
Итог
- заполнение по словарю:
find_elements(By.NAME, …),clear(),send_keys(); - переключатели — клик по
[name=…][value=…], списки —Select; - после отправки — ждать успеха или ошибок и прочитать результат;
- автоматизировать — только с разрешения.