К содержимому

Документация

Python SDK: BrowserPage: действия на странице

Страницу возвращает ctx.browser().open(url). Действия выполняются синхронно. После клика или перехода дождитесь новых данных; всегда вызывайте close() в finally.

Примеры являются фрагментами тела def run(ctx):. Все методы SDK синхронны, await не нужен.

Как получить объект

page = ctx.browser().open(ctx.param('catalog_url'))
try:
    page.wait_for('.product')
    ctx.log('HTML loaded', {'length': len(page.content())})
finally:
    page.close()

Методы

goto

page.goto(url) -> BrowserPage

Аргумент Тип Обязателен Назначение
url str Да Разрешённый HTTP(S)-адрес источника.

Результат: BrowserPage. Объект SDK: используйте его методы, не передавайте целиком в emit.

Перейти на другой URL в той же браузерной странице.

result = page.goto(ctx.param('next_url'))

click

page.click(selector, timeout_ms=5000) -> BrowserPage

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.
timeout_ms int Нет, default в сигнатуре Таймаут ожидания в миллисекундах.

Результат: BrowserPage. Объект SDK: используйте его методы, не передавайте целиком в emit.

Нажать на первый элемент по селектору.

result = page.click('button.next', 5000)

type

page.type(selector, text) -> BrowserPage

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.
text str Да Текст для разбора, поиска или ввода.

Результат: BrowserPage. Объект SDK: используйте его методы, не передавайте целиком в emit.

Ввести текст в найденное поле.

result = page.type('input.search', 'cable')

scroll

page.scroll(times=1, delay_ms=500) -> BrowserPage

Аргумент Тип Обязателен Назначение
times int Нет, default в сигнатуре Максимальное число шагов прокрутки.
delay_ms int Нет, default в сигнатуре Пауза между шагами прокрутки, миллисекунды.

Результат: BrowserPage. Объект SDK: используйте его методы, не передавайте целиком в emit.

Прокрутить страницу вниз несколькими шагами с паузами.

result = page.scroll(2, 500)

wait_for

page.wait_for(selector, timeout_ms=10000) -> BrowserPage

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.
timeout_ms int Нет, default в сигнатуре Таймаут ожидания в миллисекундах.

Результат: BrowserPage. Объект SDK: используйте его методы, не передавайте целиком в emit.

Дождаться появления элемента по селектору.

result = page.wait_for('.product', 10000)

hover

page.hover(selector, timeout_ms=5000) -> BrowserPage

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.
timeout_ms int Нет, default в сигнатуре Таймаут ожидания в миллисекундах.

Результат: BrowserPage. Объект SDK: используйте его методы, не передавайте целиком в emit.

Навести указатель, чтобы раскрыть меню или подсказку: page.hover('.catalog-menu');.

result = page.hover('.catalog-menu', 5000)

scroll_to

page.scroll_to(selector, timeout_ms=5000) -> BrowserPage

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.
timeout_ms int Нет, default в сигнатуре Таймаут ожидания в миллисекундах.

Результат: BrowserPage. Объект SDK: используйте его методы, не передавайте целиком в emit.

Прокрутить страницу до конкретного элемента: page.scroll_to('.product-card');.

result = page.scroll_to('.product', 5000)

select

page.select(selector, value, timeout_ms=5000) -> BrowserPage

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.
value Any Да Значение по назначению метода; см. описание результата.
timeout_ms int Нет, default в сигнатуре Таймаут ожидания в миллисекундах.

Результат: BrowserPage. Объект SDK: используйте его методы, не передавайте целиком в emit.

Выбрать значение обычного списка: page.select('select.city', 'perm');.

result = page.select('select.city', 'perm', 5000)

press

page.press(selector, key, timeout_ms=5000) -> BrowserPage

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.
key str | None Да Ключ записи, состояния, объекта или входа по назначению метода.
timeout_ms int Нет, default в сигнатуре Таймаут ожидания в миллисекундах.

Результат: BrowserPage. Объект SDK: используйте его методы, не передавайте целиком в emit.

Нажать клавишу в элементе: page.press('input.search', 'Enter');.

result = page.press('input.search', 'Enter', 5000)

content

page.content() -> str

Аргументы не нужны.

Результат: str.

Получить текущий HTML после действий браузера.

result = page.content()

screenshot

page.screenshot() -> str

Аргументы не нужны.

Результат: str.

Сохранить изображение текущей страницы.

result = page.screenshot()

close

page.close() -> None

Аргументы не нужны.

Результат: None. Метод не возвращает значение данных.

Освобождает открытую страницу. Вызывайте в finally, даже если предыдущее действие завершилось ошибкой.

result = page.close()

capture_responses

page.capture_responses(patterns) -> BrowserPage

Аргумент Тип Обязателен Назначение
patterns list[str] Да Список URL-масок захвата; пустой список отключает захват.

Результат: BrowserPage. Объект SDK: используйте его методы, не передавайте целиком в emit.

Начать захват XHR/fetch по маскам полного URL. До 20 масок, до 1024 символов каждая. Новая настройка очищает старый буфер, [] отключает захват. Уже прошедшие запросы не восстанавливаются: для первого открытия используйте второй аргумент browser().open().

result = page.capture_responses(['*/api/products*'])

responses

page.responses() -> dict[str, Any]

Аргументы не нужны.

Результат: dict[str, Any].

Возвращает ответы сети, захваченные через capture_responses(). Содержимое доступно после соответствующих действий на странице.

result = page.responses()

wait_for_response

page.wait_for_response(pattern='*', timeout_ms=10000) -> dict[str, Any] | None

Аргумент Тип Обязателен Назначение
pattern str Нет, default в сигнатуре Регулярное выражение либо URL-маска по назначению метода.
timeout_ms int Нет, default в сигнатуре Таймаут ожидания в миллисекундах.

Результат: dict[str, Any] | None.

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

result = page.wait_for_response('*/api/products*', 10000)

Ошибки и контекст выполнения

Все вызовы синхронны. Неверный аргумент или формат данных может вызвать ValueError/TypeError; отказ платформы или недоступность сервиса вызывает RuntimeError. Отсутствие элемента/значения даёт None либо пустой список только там, где это явно описано. Не превращайте любое исключение в пустой успешный результат. Методы внешних сервисов недоступны в преобразовании выгрузки; см. ограничения преобразований и среду.

solve_captcha

page.solve_captcha(hints=None) -> BrowserPage

Пройти поддерживаемую проверку сайта. Обычно она обрабатывается автоматически.

page.solve_captcha({"success_selector": ".loaded-products"})

Элемент успеха должен появиться после проверки. Для настроек до перехода используйте ctx.browser().open(url, captcha_hints={"success_selector": ".product-card"}). Отдельная квота проверок, без токенов AI. Неизвестный тип и неподтверждённый доступ вызывают ошибку. Секретный ключ сайта вводить нельзя.

Полный справочник CAPTCHA

SDK и REST API для CAPTCHA описывает все hints, значения по умолчанию, явный вызов, отключение, проверку результата, агенты, пределы и ошибки. Руководство пользователя и актуальные цены помогут настроить функцию и оплату.

Для выбора объектов используется kind: "yandex_image"; обычно тип определяется автоматически. image_selector указывает только картинку задания, instructions_selector порядок выбора, success_selector новый результат успешной операции. Список доменов целевых сайтов не нужен. Неизвестный вариант завершается ошибкой. Не запускайте бесконечные повторы при отказе.

Для yandex_text параметр answer_selector указывает поле текстового ответа, если оно не определилось автоматически. Полный контракт hints приведён в справочнике CAPTCHA API.