Посмотрим, что произойдет
когда вы нажмете.

Используйте небольшое браузерное приложение для подключения действия, его сетевого запроса и JavaScript, который создает загрузку.

Что происходит, когда вы нажимаете кнопку Экспортировать?

В примере браузера Notes есть кнопка экспорта заметок. При нажатии на нее загружается файл notes.json, две заметки форматируются как CSV и начинается загрузка.

От клика до загрузки CSV

  1. 01 · Вы нажимаете кнопку Экспорт заметок и выполняете это действие в своем браузере во время выполнения записи.
  2. 02 · REA Запишите запрос, захватите URL-адрес запроса, статус ответа и структуру JSON с выбранной страницы.
  3. 03 · Ваш агент прочитал экспортный код, подключающий наблюдаемый запрос к fetch("./notes.json") в export.js.

GET notes.json → 200 → notes[] → CSV

Запустите запись, прежде чем нажать кнопку Экспортировать заметки.

Откройте Chrome с удаленной отладкой

Откройте размещенный на хостинге пример Notes, используя отдельный профиль браузера и локальный порт для отладки. На Linux :

Запустите примерный браузер
google-chrome \
  --remote-debugging-port=9222 \
  --user-data-dir=/tmp/rea-notes-browser \
  https://rea.tools/examples/notes-web/

Используйте путь к исполняемому файлу вашего установленного браузера в macOS или Windows . Вы можете заменить URL-адрес страницы на другую страницу, которую хотите просмотреть.

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

Попросите своего агента посмотреть одно действие

Ваш кодирующий агент

Используйте REA, чтобы просмотреть эту страницу, пока я нажимаю "Экспортировать заметки". Какой запрос она отправляет и как устроен CSV?

Пример запроса. Укажите вашему агенту конечную точку отладки, http://127.0.0.1:9222 и URL-адрес страницы. Пусть он запустит запись до того, как вы нажмете.

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

Или захват с терминала

Найдите целевой идентификатор страницы:

Найдите нужную страницу
npx -y rea-agents@latest list-browser-targets \
  http://127.0.0.1:9222 --json

Выберите целевой объект с помощью URL-адреса, приведенного в примере Notes. Замените TARGET_ID ниже на его идентификатор, затем запустите:

Запечатлейте следующие десять секунд
npx -y rea-agents@latest inspect-web-page \
  http://127.0.0.1:9222 TARGET_ID \
  --observation-ms 10000 \
  --include-accessibility-text \
  --include-json-body-shapes --json

Дайте команде подключиться в течение нескольких секунд, затем нажмите "Экспортировать заметки" в этом браузере. Результат появится после завершения просмотра.

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

Прочитайте запрос и экспортируйте скрипт

Записано с помощью REA 4.1.0 на примере local Notes
Зафиксированный факт Ценность
Запрос GET /examples/notes-web/notes.json
Ответ 200 · application/json
Инициатор запроса export.js · сценарий
Структура ответа notes[] с полями id и title
Прочитайте загруженные скрипты
npx -y rea-agents@latest inspect-web-page \
  http://127.0.0.1:9222 TARGET_ID \
  --include-script-sources --json

Запрос идентифицирует источник данных, и REA записывает export.js export.js качестве инициатора запроса. Прочитайте захваченный исходный код сценария, чтобы увидеть, как используются данные:

export.js · пример выдержки из источника
const response = await fetch("./notes.json");
const { notes } = await response.json();
// Format each note as a CSV row.
const url = URL.createObjectURL(new Blob([csv], { type: "text/csv" }));
link.href = url;
link.download = "notes.csv";
link.click();

Загрузка выполняется на странице с использованием ответа в формате JSON. Шаг форматирования CSV выполняется из скрипта; сетевой анализ показывает, что при этом щелчке запрашивался файл notes.json.

Откройте пример · Скачать export.js · Загрузите файл notes.json

Найдите скрипт, который запрашивает файл notes.json. Как он экранирует заголовки, содержащие запятые или кавычки?

Для установленного приложения JavaScript или Electron продолжайте работать с рабочим процессом приложения, чтобы отслеживать файлы и границы процессов.

Топ