Перейти к содержимому

Заполнение форм

Заполнить форму и отправить её — самая частая задача автоматизации. Это руководство показывает сценарий, который работает на большинстве страниц, включая анимированные формы и кастомные выпадающие списки. Каждое действие выполняется через доверенные, гуманизированные события внутри антидетект-браузера профиля, поэтому форма видит реального пользователя.

Во всех примерах предполагается запущенный профиль, чей id находится в $PROFILE (см. Запуск профилей), и базовый адрес автоматизации http://localhost:7891/api/automation/$PROFILE.

  1. Перейдите на страницу.
  2. Снимите снапшот, чтобы увидеть поля и их селекторы.
  3. Заполните страницу — задайте все поля и отправьте форму одним вызовом.
  4. Снимите снапшот заново, только если отправка загрузила новую страницу или шаг.
1 · Navigate
curl -s localhost:7891/api/automation/$PROFILE/navigate -X POST \
-H 'Content-Type: application/json' -d '{"url":"https://example.com/signin"}'
2 · Snapshot — read the form
curl -s localhost:7891/api/automation/$PROFILE/snapshot -X POST | jq -r .data.snapshot

Снапшот — это дерево доступности с id [ref=eN] для каждого элемента, а также с ролями и метками. Используйте его для выбора селекторов.

fill-page заполняет все поля и отправляет форму одним запросом. Он кликает и печатает по реальным координатам, поэтому работает на анимированных страницах, где обычные локаторы упираются в таймаут, и обрабатывает выпадающие списки с автоповтором.

3 · Fill every field and submit
curl -s localhost:7891/api/automation/$PROFILE/fill-page -X POST \
-H 'Content-Type: application/json' -d '{
"fields": [
{"selector": "#email", "value": "user@example.com"},
{"selector": "#password", "value": "s3cret"},
{"selector": "[role=combobox]", "value": "English", "type": "combobox"}
],
"submit": {"text": "Sign in"},
"waitAfterSubmit": 2000
}'

Параметры поля:

ПараметрЗначение
selector / refЭлемент для заполнения. ref берётся из снапшота; selector — это CSS-селектор.
type"text" (по умолчанию) или "combobox" для ARIA-выпадающих списков.
nthКогда селектор совпадает с несколькими видимыми элементами, выбирает N-й (отсчёт с 0).
valueТекст для ввода или метка опции для выбора.

submit кликает по подходящей кнопке; waitAfterSubmit (мс) ждёт, пока следующая страница устаканится, прежде чем вернуть ответ.

ЭндпоинтДля чего использовать
fill-pageПо умолчанию для любой формы — текстовые поля, выпадающие списки и отправка одним вызовом.
batchНе-формовые последовательности — клики по ссылкам, наведение, навигация, ожидание — или действия по ref из снапшота.
fill-formПростые формы на «послушных» страницах; сначала пробует локатор, затем переходит к координатам.
  • Нативный <select> (отображается как select в снапшоте) → select-option со значениями опций.
  • ARIA combobox (роль combobox) → задайте type: "combobox" в fill-page или вызовите select-combobox.
  • Отсоединённые оверлеи — некоторые сайты отрисовывают список опций вне combobox. Если select-combobox упирается в таймаут, не повторяйте его. Откройте выпадающий список реальным click, считайте координаты опции через evaluate (только чтение), затем кликните по ним через mouse/click:
Окно терминала
# open the dropdown
curl -s localhost:7891/api/automation/$PROFILE/click -X POST -d '{"ref":"e12"}'
# read the option's center (evaluate is read-only)
curl -s localhost:7891/api/automation/$PROFILE/evaluate -X POST -d '{"code":"const o=[...document.querySelectorAll(\"li[role=option]\")].find(e=>e.textContent.trim()===\"English\"); const r=o.getBoundingClientRect(); JSON.stringify({x:r.x+r.width/2,y:r.y+r.height/2})"}'
# click the coordinates (trusted, humanized)
curl -s localhost:7891/api/automation/$PROFILE/mouse/click -X POST -d '{"x":512,"y":340}'

Часто проще клавиатурный type-ahead: откройте combobox, затем через press-key наберите первые буквы опции и Enter, чтобы подтвердить.

  • Анимированные формы — поля двигаются во время CSS-переходов, поэтому локаторы сообщают «not stable». fill-page обходит это вводом по координатам. Таймаут действия короткий (2 с), поэтому неверный путь падает быстро.
  • Кнопка отправки за пределами экрана — если кнопка отправки ниже видимой области, перейдите к ней клавишей Tab из последнего поля и нажмите Enter либо считайте её координаты и сделайте mouse/click.
  • Многошаговые формы — один fill-page на шаг, с waitAfterSubmit, затем снимайте снапшот следующего шага заново. Перезагружайте страницу между шагами, если после неё остаётся устаревший DOM.