Перейти до вмісту

Заповнення форм

Заповнення форми та її надсилання — найпоширеніше завдання автоматизації. Цей посібник показує процес, який працює на більшості сторінок, зокрема на анімованих формах і кастомних випадних списках. Кожна дія виконується через довірені, гуманізовані події всередині антидетект-браузера профілю, тож форма бачить реального користувача.

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

  1. Перейдіть на сторінку.
  2. Зробіть snapshot, щоб побачити поля та їхні селектори.
  3. Заповніть сторінку — задайте кожне поле та надішліть форму одним викликом.
  4. Зробіть повторний snapshot лише якщо надсилання завантажило нову сторінку чи крок.
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

Snapshot — це дерево доступності з ідентифікатором [ref=eN] для кожного елемента, а також ролями та мітками. Використовуйте його, щоб обрати селектори.

fill-page — основний ендпоінт

Section titled “fill-page — основний ендпоінт”

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 походить зі snapshot; selector — це CSS-селектор.
type"text" (за замовчуванням) або "combobox" для ARIA-випадних списків.
nthКоли селектор збігається з кількома видимими елементами, обирає N-й (відлік від 0).
valueТекст для набору або мітка опції для вибору.

submit клікає по відповідній кнопці; waitAfterSubmit (мс) чекає, поки наступна сторінка усталиться, перш ніж виклик поверне результат.

Коли використовувати інші ендпоінти

Section titled “Коли використовувати інші ендпоінти”
ЕндпоінтДля чого використовувати
fill-pageЗа замовчуванням для будь-якої форми — текстові поля, випадні списки й надсилання одним викликом.
batchПослідовності поза формами — клік по посиланнях, наведення, навігація, очікування — або дії на основі ref зі snapshot.
fill-formПрості форми на «слухняних» сторінках; спершу пробує локатор, відкочується до координат.
  • Нативний <select> (показується як select у snapshot) → select-option зі значеннями опцій.
  • ARIA combobox (роль combobox) → задайте type: "combobox" у fill-page або викличте select-combobox.
  • Відокремлені оверлеї — деякі сайти рендерять список опцій поза combobox. Якщо select-combobox вичерпує час очікування, не повторюйте його. Відкрийте випадний список реальним click, прочитайте координати опції через evaluate (лише читання), а потім клікніть по них за допомогою mouse/click:
Terminal window
# 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, потім повторний snapshot наступного кроку. Перезавантажуйте сторінку між кроками, якщо вона залишає застарілий DOM.