JavaScript SDK: BrowserPage: действия на странице
Страницу возвращает await ctx.browser().open(url). Действия выполняются асинхронно. После клика или перехода дождитесь новых данных; всегда вызывайте close() в finally.
Примеры — отдельные фрагменты тела async function run(ctx). Используйте await только для методов с Promise в сигнатуре.
Как получить объект
const page = await ctx.browser().open(ctx.param('catalog_url', 'https://example.com'));
try {
await page.waitFor('.product');
const html = await page.content();
ctx.log(String(html.length));
} finally {
await page.close();
}
Методы
goto()click()type()scroll()waitFor()hover()scrollTo()select()press()content()screenshot()close()solveCaptcha()captureResponses()responses()waitForResponse()
goto
page.goto(url) → Promise<BrowserPage>
Перейти на другой URL в той же браузерной странице.
const result = await page.goto('https://example.com/catalog?page=2');
click
page.click(selector, timeoutMs) → Promise<BrowserPage>
Нажать на первый элемент по селектору.
const result = await page.click('button.next');
type
page.type(selector, text) → Promise<BrowserPage>
Ввести текст в найденное поле.
const result = await page.type('input.search', 'товар');
scroll
page.scroll(times, delayMs) → Promise<BrowserPage>
Прокрутить страницу вниз несколькими шагами с паузами.
const result = await page.scroll();
waitFor
page.waitFor(selector, timeoutMs) → Promise<BrowserPage>
Дождаться появления элемента по селектору.
const result = await page.waitFor('.product');
hover
page.hover(selector, timeoutMs) → Promise<BrowserPage>
Навести указатель, чтобы раскрыть меню или подсказку: page.hover('.catalog-menu');.
const result = await page.hover('.catalog-menu');
scrollTo
page.scrollTo(selector, timeoutMs) → Promise<BrowserPage>
Прокрутить страницу до конкретного элемента: page.scrollTo('.product-card');.
const result = await page.scrollTo('.product');
select
page.select(selector, value, timeoutMs) → Promise<BrowserPage>
Выбрать значение обычного списка: page.select('select.city', 'perm');.
const result = await page.select('select.city', 'perm');
press
page.press(selector, key, timeoutMs) → Promise<BrowserPage>
Нажать клавишу в элементе: page.press('input.search', 'Enter');.
const result = await page.press('input.search', 'Enter');
content
page.content() → Promise<string>
Получить текущий HTML после действий браузера.
const result = await page.content();
screenshot
page.screenshot() → Promise<string>
Сохранить изображение текущей страницы.
const result = await page.screenshot();
close
page.close() → Promise<void>
Освобождает открытую страницу. Вызывайте в finally, даже если предыдущее действие завершилось ошибкой.
await page.close();
captureResponses
page.captureResponses(patterns) → Promise<BrowserPage>
Начать захват XHR/fetch по маскам полного URL. До 20 масок, до 1024 символов каждая. Новая настройка очищает старый буфер, [] отключает захват. Уже прошедшие запросы не восстанавливаются: для первого открытия используйте второй аргумент browser().open().
await page.captureResponses(['*/api/products*']);
responses
page.responses() → Promise<object>
Возвращает ответы сети, захваченные через captureResponses(). Содержимое доступно после соответствующих действий на странице.
const result = await page.responses();
waitForResponse
page.waitForResponse(pattern, timeoutMs) → Promise<object | null>
Ожидает ответ сети, соответствующий шаблону. Задавайте ограниченный таймаут и проверяйте результат null.
const result = await page.waitForResponse('*/api/products*');
solveCaptcha
page.solveCaptcha(hints) → Promise<BrowserPage>
Пройти поддерживаемую проверку в текущей странице. Обычно выполняется автоматически.
await page.solveCaptcha({ success_selector: '.loaded-products' });
Элемент успеха должен появиться только после проверки. Отдельная квота; ключи и изображения вручную отправлять не нужно. Ошибка или неизвестная проверка останавливает выполнение.
Параметры до перехода можно передать третьим аргументом open(url, [], hints). Поддерживаются kind, sitekey, action, invisible, callback, success_selector, submit_selector, image_selector, instructions_selector, answer_selector.
Полный справочник CAPTCHA
SDK и REST API для CAPTCHA описывает все hints, значения по умолчанию, явный вызов, отключение, проверку результата, агенты, пределы и ошибки. Руководство пользователя и актуальные цены помогут настроить функцию и оплату.
Для выбора объектов используется kind: "yandex_image"; обычно тип определяется автоматически. image_selector указывает только картинку задания, instructions_selector порядок выбора, success_selector новый результат успешной операции. Список доменов целевых сайтов не нужен. Неизвестный вариант завершается ошибкой. Не запускайте бесконечные повторы при отказе.
Для yandex_text параметр answer_selector указывает поле текстового ответа, если оно не определилось автоматически. Полный контракт hints приведён в справочнике CAPTCHA API.