Автоматизация веб-форм
Форма — самый частый сценарий после «просто открыть URL». Надёжный порядок: сначала дождаться полей, потом писать в них, и только затем кликать submit. Так меньше плавающих ошибок на медленных страницах и SPA.
1. Открыть страницу и дождаться формы
Через browser откройте URL и дождитесь появления ключевого поля (например input логина), а не просто «документ загружен». На SPA форма часто рисуется позже.
$browser->navigate("https://example.com/register");
// дальше — wait/exists по полю формы, а не фиксированный sleep
2. Как искать поля
Базовые объекты: input, textarea, listbox, checkbox, radiobox.
Когда селекторы нестабильны, берите универсальные приёмы из a_common:
- by_name — если есть стабильный атрибут name;
- by_attribute — data-testid / placeholder / aria-label;
- by_number — запасной вариант, хрупкий при смене вёрстки.
Быстрый поиск методов: input, click_by_name.
3. Заполнение данных
Сначала заполните текстовые поля, затем select/checkbox — так проще читать лог. Для массовых тестовых ФИО/email/телефонов используйте submitter и объект submitter.
4. Отправка
Кликните button / inputimage / submit. Не отправляйте форму «вслепую» Enter-ом, если на странице несколько форм. После клика:
- дождитесь индикатора успеха или ошибки;
- проверьте URL / текст / появление следующего шага wizard;
- если капча — см. сервисы капчи.
5. Что считать успехом
Заранее определите критерий: текст «Спасибо», редирект на /done, исчезновение формы. Это и есть assertion в QA-сценарии.
На защищённых страницах совмещайте заполнение с антибот-чеклистом.
FAQ
Поле находится, но текст не появляется. Попробуйте click → clear → type; иногда сайт слушает события клавиатуры, а не прямую установку value.
Нашёл не то поле. Уточните атрибут или сузьте область поиска (внутри формы / iframe — смотрите frame).
Капча только на submit. Нормально: решайте её в момент появления, не до заполнения всех полей.
См. также: отправка данных, роадмап QA.