Заповнення форм
Заповнення форми та її надсилання — найпоширеніше завдання автоматизації. Цей посібник показує процес, який працює на більшості сторінок, зокрема на анімованих формах і кастомних випадних списках. Кожна дія виконується через довірені, гуманізовані події всередині антидетект-браузера профілю, тож форма бачить реального користувача.
Усі приклади передбачають запущений профіль, ID якого міститься в $PROFILE (див. Запуск профілів), та базову адресу автоматизації http://localhost:7891/api/automation/$PROFILE.
Процес
Section titled “Процес”- Перейдіть на сторінку.
- Зробіть snapshot, щоб побачити поля та їхні селектори.
- Заповніть сторінку — задайте кожне поле та надішліть форму одним викликом.
- Зробіть повторний snapshot лише якщо надсилання завантажило нову сторінку чи крок.
curl -s localhost:7891/api/automation/$PROFILE/navigate -X POST \ -H 'Content-Type: application/json' -d '{"url":"https://example.com/signin"}'curl -s localhost:7891/api/automation/$PROFILE/snapshot -X POST | jq -r .data.snapshotSnapshot — це дерево доступності з ідентифікатором [ref=eN] для кожного елемента, а також ролями та мітками. Використовуйте його, щоб обрати селектори.
fill-page — основний ендпоінт
Section titled “fill-page — основний ендпоінт”fill-page заповнює всі поля та надсилає форму одним запитом. Він клікає й набирає текст за реальними координатами, тому працює на анімованих сторінках, де звичайні локатори вичерпують час очікування, і обробляє випадні списки з автоматичним повтором.
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 | Прості форми на «слухняних» сторінках; спершу пробує локатор, відкочується до координат. |
Випадні списки
Section titled “Випадні списки”- Нативний
<select>(показується якselectу snapshot) →select-optionзі значеннями опцій. - ARIA combobox (роль
combobox) → задайтеtype: "combobox"уfill-pageабо викличтеselect-combobox. - Відокремлені оверлеї — деякі сайти рендерять список опцій поза combobox. Якщо
select-comboboxвичерпує час очікування, не повторюйте його. Відкрийте випадний список реальнимclick, прочитайте координати опції черезevaluate(лише читання), а потім клікніть по них за допомогоюmouse/click:
# open the dropdowncurl -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 для підтвердження.
Складні випадки
Section titled “Складні випадки”- Анімовані форми — поля рухаються під час CSS-переходів, тож локатори повідомляють «not stable».
fill-pageобходить це введенням за координатами. Тайм-аут дії короткий (2с), тож хибний шлях завершується швидко. - Кнопка надсилання поза екраном — якщо кнопка надсилання нижче видимої межі, перейдіть до неї
Tabз останнього поля та натиснітьEnter, або прочитайте її координати та виконайтеmouse/click. - Багатокрокові форми — один
fill-pageна крок ізwaitAfterSubmit, потім повторний snapshot наступного кроку. Перезавантажуйте сторінку між кроками, якщо вона залишає застарілий DOM.
Дивіться також
Section titled “Дивіться також”- Найкращі практики — правила непомітності й темпу, на які спираються ці процеси.
- Довідник API — кожен ендпоінт і параметр.
- Керування кількома профілями — запуск того самого процесу на багатьох профілях.