Как автоматически заполнять формы и нажимать кнопки в Playwright

🖱️ Кратко: Научитесь автоматически заполнять формы и кликать по кнопкам в Playwright на Python — с ожиданием элементов, обработкой ошибок и проверкой на реальном демо-сайте.
python playwright заполнить форму

Недавно мне нужно было автоматизировать тестовый вход на сайт: ввести email, пароль и нажать «Войти». Первое, что пришло в голову — вручную эмулировать нажатия. Но потом я вспомнил Playwright — и за 7 строк кода всё заработало.

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

  • Найти поля ввода и кнопки
  • Заполнить форму с page.fill()
  • Нажать кнопку с page.click()
  • Дождаться появления элемента, чтобы избежать ошибок

Всё — на реальном демо-сайте, без «вымышленных» примеров.

Почему Playwright — лучший выбор для автоматизации форм?

Playwright от Microsoft — современная библиотека, которая:

  • Поддерживает Chromium, Firefox и WebKit
  • Имеет встроенные ожидания (никаких time.sleep())
  • Позволяет легко находить элементы по селекторам, placeholder’ам, тексту
  • Работает с динамическими сайтами (React, Vue и т.д.)

И главное — работает на Python, а не только на JavaScript.

📚 Документация: Playwright Python API

Подготовка: установка и запуск

Установите Playwright:

pip install playwright
playwright install chromium

Создайте скрипт form_auto.py.

Шаг 1. Выбор демо-сайта для практики

Для примера мы будем использовать официальный тестовый сайт:
👉 https://demoqa.com/text-box

Там есть:

  • Поле «Full Name»
  • Поле «Email»
  • Кнопка «Submit»

Идеально для примера!

Шаг 2. Заполнение формы и клик по кнопке

Базовый скрипт

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=200)
    page = browser.new_page()
    page.goto("https://demoqa.com/text-box")

    # Заполняем поля
    page.fill("#userName", "Иван Петров")
    page.fill("#userEmail", "ivan@example.com")

    # Нажимаем кнопку
    page.click("#submit")

    # Делаем скриншот результата
    page.screenshot(path="form_result.png")
    browser.close()

✅ Готово! Вы увидите, как браузер сам заполняет форму и кликает.

Как найти селектор элемента на любой странице (инструкция для новичков)

Чтобы автоматизировать форму, нужно знать, как именно обратиться к нужному полю или кнопке. Playwright позволяет это делать через селекторы — специальные строки вроде #userName, .btn-submit или input[name='email'].

Вот как найти их вручную:

Шаг 1. Откройте сайт в браузере

Например: https://demoqa.com/text-box

Шаг 2. Наведите курсор на нужный элемент

— Это может быть поле ввода, кнопка, чекбокс и т.д.

Шаг 3. Нажмите ПКМ → «Просмотреть код»

(Или просто откройте DevTools клавишей F12, затем нажмите иконку «курсор» в левом верхнем углу и кликните по элементу на странице.)

Шаг 4. В коде вы увидите что-то вроде:

<input type="text" id="userName" placeholder="Full Name">

Здесь есть несколько полезных атрибутов:

АТРИБУТСЕЛЕКТОР В PLAYWRIGHTКОГДА ИСПОЛЬЗОВАТЬ
id=»userName»«#userName»Лучший вариант— ID уникален
class=»form-control»«.form-control»Если ID нет, но класс описательный
placeholder=»Full Name»«input[placeholder=’Full Name’]»Если поле отличается только по placeholder
Текст кнопки «Submit»«text=’Submit'»Для кнопок с понятным текстом

💡 Playwright поддерживает CSS-селекторы, XPath, а также собственные селекторы по тексту и атрибутам.

Шаг 5. Проверьте селектор в консоли (опционально)

В DevTools перейдите во вкладку Console и введите:

document.querySelector("#userName")

Если в ответе появился элемент — селектор правильный.

Советы для сложных случаев

  • Если ID динамический (меняется при каждой загрузке, например input_123abc) — ищите по placeholder, name, родительскому блоку или тексту рядом.
  • Если несколько элементов с одинаковым классом — уточните путь:
page.fill("form#login-form input[name='email']", "test@example.com")
  • Используйте page.locator() для сложной логики (Playwright v1.20+):
page.locator("input", has_text="Email").fill("test@example.com")

📚 Подробнее: Playwright — Selectors

Шаг 3. Надёжная автоматизация: ожидание элементов

Если сайт грузится медленно, page.fill() может вызвать ошибку.
Решение — дождаться появления элемента:

page.wait_for_selector("#userName", timeout=10000)
page.fill("#userName", "Анна Сидорова")

⏱️ timeout=10000ждать до 10 секунд. Если элемент не появится — будет исключение.

Другие полезные методы

Заполнение по placeholder

page.fill("input[placeholder='name@example.com']", "test@domain.com")

Клик по тексту кнопки

page.click("text='Submit'")

Проверка результата (например, появилось ли сообщение)

page.wait_for_selector("#output")
print("&#x2705; Форма успешно отправлена!")

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

Вы можете использовать это для:

  • Автоматического входа в личный кабинет
  • Тестирования UI-форм
  • Парсинга сайтов с авторизацией
  • Отправки отчётов через веб-интерфейс

Пример: ежедневная загрузка данных через форму — без участия человека.

Советы для стабильной работы

  • Всегда используйте wait_for_selector() перед взаимодействием
  • В разработке — headless=False, в продакшене — headless=True
  • Храните селекторы в константах, если скрипт растёт
  • Добавьте обработку ошибок через try/except

Заключение

Теперь вы умеете:

✅ Находить поля и кнопки
✅ Заполнять формы с page.fill()
✅ Кликает по элементам с page.click()
✅ Делать это надёжно, с ожиданием загрузки

Playwright превращает рутинные действия в браузере в автоматизированные скрипты, которые работают мгновенно и без ошибок.

🐍 Попробуйте запустить пример выше — и вы убедитесь, насколько это просто.

Если что-то осталось непонятным — пишите в комментариях! С радостью уточню, дополню или помогу с вашим кодом.

А чтобы не пропустить новые простые и полезные гайды по Python, автоматизации и разработке — подписывайтесь на мой Telegram-канал: PythonAuto 🐍

Ваш интерес — лучшая мотивация для новых статей!

Оставьте комментарий