Перейти к основному содержимому

Page

Класс Page предоставляет методы для взаимодействия с одной вкладкой в Browser или со страницей фонового расширения в Chromium. Один экземпляр Browser может иметь несколько экземпляров Page.

В этом примере создаётся страница, выполняется переход по URL, а затем сохраняется скриншот:

from playwright.sync_api import sync_playwright, Playwright

def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch()
context = browser.new_context()
page = context.new_page()
page.goto("https://example.com")
page.screenshot(path="screenshot.png")
browser.close()

with sync_playwright() as playwright:
run(playwright)

Класс Page генерирует различные события (описаны ниже), которые можно обрабатывать с помощью любых нативных методов Node EventEmitter, таких как on, once или removeListener.

В этом примере выводится сообщение при одиночном событии загрузки страницы load:

page.once("load", lambda: print("page loaded!"))

Чтобы отписаться от событий, используйте метод removeListener:

def log_request(intercepted_request):
print("a request was made:", intercepted_request.url)
page.on("request", log_request)
# sometime later...
page.remove_listener("request", log_request)

Методы

add_init_script

Добавлено до v1.9 page.add_init_script

Добавляет скрипт, который будет выполнен в одном из следующих случаев:

  • При каждом переходе страницы.
  • При каждом присоединении или навигации дочернего фрейма. В этом случае скрипт выполняется в контексте только что присоединённого фрейма.

Скрипт выполняется после создания документа, но до запуска любых его собственных скриптов. Это полезно для изменения JavaScript-окружения, например, чтобы зафиксировать значение Math.random.

Использование

Пример переопределения Math.random до загрузки страницы:

// preload.js
Math.random = () => 42;
# in your playwright script, assuming the preload.js file is in same directory
page.add_init_script(path="./preload.js")
примечание

Порядок выполнения нескольких скриптов, установленных через browser_context.add_init_script() и page.add_init_script(), не определён.

Аргументы

  • path Union[str, pathlib.Path] (опционально)#

    Путь к JavaScript-файлу. Если path является относительным путём, он разрешается относительно текущей рабочей директории. Необязательный параметр.

  • script str (опционально)#

    Скрипт, который будет выполнен на всех страницах в контексте браузера. Необязательный параметр.

Возвращает


add_locator_handler

Добавлено в: v1.42 page.add_locator_handler

При тестировании веб-страницы иногда появляются неожиданные оверлеи, например диалог «Sign up», которые блокируют действия, которые вы хотите автоматизировать, например клик по кнопке. Такие оверлеи не всегда появляются одинаково или в одно и то же время, из‑за чего их сложно обрабатывать в автоматических тестах.

Этот метод позволяет настроить специальную функцию — обработчик (handler), — которая срабатывает, когда обнаруживает, что оверлей стал видимым. Задача обработчика — убрать оверлей, чтобы тест мог продолжаться так, как будто его не было.

Что важно учитывать:

  • Если оверлей появляется предсказуемо, рекомендуется явно ожидать его в тесте и закрывать как часть обычного сценария теста, вместо использования page.add_locator_handler().
  • Playwright проверяет наличие оверлея каждый раз перед выполнением или повторной попыткой действия, требующего проверки возможности действия (actionability check), либо перед выполнением автождущего утверждения (assertion). Если оверлей видим, Playwright сначала вызывает обработчик, а затем продолжает действие или проверку. Обратите внимание: обработчик вызывается только при выполнении действия или утверждения — если оверлей стал видимым, но вы не выполняете никаких действий, обработчик не будет вызван.
  • После выполнения обработчика Playwright удостоверится, что оверлей, вызвавший обработчик, больше не виден. От этого поведения можно отказаться с помощью no_wait_after.
  • Время выполнения обработчика засчитывается в таймаут действия или утверждения, которое его вызвало. Если обработчик выполняется слишком долго, это может привести к таймаутам.
  • Можно зарегистрировать несколько обработчиков. Однако одновременно будет выполняться только один обработчик. Убедитесь, что действия внутри обработчика не зависят от другого обработчика.
warning

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

Например, рассмотрим тест, который вызывает locator.focus(), а затем keyboard.press(). Если ваш обработчик нажмёт кнопку между этими двумя действиями, элемент в фокусе, скорее всего, будет другим, и нажатие клавиши произойдёт не на том элементе. Используйте locator.press(), чтобы избежать этой проблемы.

Другой пример — серия действий мышью, где mouse.move() вызывается перед mouse.down(). Если обработчик выполнится между этими действиями, позиция мыши будет неверной во время mouse.down. Предпочитайте самодостаточные действия, такие как locator.click(), которые не зависят от неизменности состояния при выполнении обработчика.

Использование

Пример, который закрывает диалог «Sign up to the newsletter», когда он появляется:

# Setup the handler.
def handler():
page.get_by_role("button", name="No thanks").click()
page.add_locator_handler(page.get_by_text("Sign up to the newsletter"), handler)

# Write the test as usual.
page.goto("https://example.com")
page.get_by_role("button", name="Start here").click()

Пример, который пропускает страницу «Confirm your security details», когда она появляется:

# Setup the handler.
def handler():
page.get_by_role("button", name="Remind me later").click()
page.add_locator_handler(page.get_by_text("Confirm your security details"), handler)

# Write the test as usual.
page.goto("https://example.com")
page.get_by_role("button", name="Start here").click()

Пример с пользовательским колбэком при каждой проверке actionability. Используется локатор <body>, который всегда видим, поэтому обработчик вызывается перед каждой проверкой actionability. Важно указать no_wait_after, так как обработчик не скрывает элемент <body>.

# Setup the handler.
def handler():
page.evaluate("window.removeObstructionsForTestIfNeeded()")
page.add_locator_handler(page.locator("body"), handler, no_wait_after=True)

# Write the test as usual.
page.goto("https://example.com")
page.get_by_role("button", name="Start here").click()

Обработчик принимает исходный локатор в качестве аргумента. Вы также можете автоматически удалить обработчик после определённого количества вызовов, задав параметр times:

def handler(locator):
locator.click()
page.add_locator_handler(page.get_by_label("Close"), handler, times=1)

Аргументы

  • locator Locator#

    Локатор, который инициирует вызов обработчика.

  • handler Callable[Locator]:Promise[Any]#

    Функция, которая должна быть выполнена, когда появляется locator. Эта функция должна устранить элемент, блокирующий действия, такие как клик.

  • no_wait_after bool (опционально) Добавлено в: v1.44#

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

  • times int (опционально) Добавлено в: v1.44#

    Задаёт максимальное количество вызовов этого обработчика. По умолчанию — без ограничений.

Возвращает


add_script_tag

Добавлено до v1.9 page.add_script_tag

Добавляет на страницу тег <script> с указанным URL или содержимым. Возвращает добавленный тег, когда срабатывает событие onload скрипта или когда содержимое скрипта было внедрено во фрейм.

Использование

page.add_script_tag()
page.add_script_tag(**kwargs)

Аргументы

  • content str (опционально)#

    Необработанное JavaScript-содержимое для внедрения во фрейм.

  • path Union[str, pathlib.Path] (опционально)#

    Путь к JavaScript-файлу для внедрения во фрейм. Если path является относительным путём, он разрешается относительно текущей рабочей директории.

  • type str (опционально)#

    Тип скрипта. Используйте 'module' для загрузки JavaScript ES6‑модуля. Подробнее см. script.

  • url str (опционально)#

    URL скрипта, который необходимо добавить.

Возвращает


add_style_tag

Добавлено до v1.9 page.add_style_tag

Добавляет на страницу тег <link rel="stylesheet"> с указанным URL или тег <style type="text/css"> с содержимым. Возвращает добавленный тег, когда срабатывает событие onload таблицы стилей или когда CSS‑содержимое было внедрено во фрейм.

Использование

page.add_style_tag()
page.add_style_tag(**kwargs)

Аргументы

  • content str (опционально)#

    Необработанное CSS‑содержимое для внедрения во фрейм.

  • path Union[str, pathlib.Path] (опционально)#

    Путь к CSS‑файлу для внедрения во фрейм. Если path является относительным путём, он разрешается относительно текущей рабочей директории.

  • url str (опционально)#

    URL для тега <link>.

Возвращает


bring_to_front

Добавлено до v1.9 page.bring_to_front

Перемещает страницу на передний план (активирует вкладку).

Использование

page.bring_to_front()

Возвращает


close

Добавлено до v1.9 page.close

Если run_before_unload равно false, обработчики выгрузки не запускаются, и метод ожидает закрытия страницы. Если run_before_unload равно true, метод запустит обработчики выгрузки, но не будет ждать фактического закрытия страницы.

По умолчанию page.close() не запускает обработчики beforeunload.

примечание

Если run_before_unload передан как true, может появиться диалог beforeunload, который необходимо обрабатывать вручную через событие page.on("dialog").

Использование

page.close()
page.close(**kwargs)

Аргументы

  • reason str (опционально) Добавлено в: v1.40#

    Причина, которая будет передана операциям, прерванным закрытием страницы.

  • run_before_unload bool (опционально)#

    По умолчанию false. Определяет, следует ли запускать обработчики страницы before unload.

Возвращает


console_messages

Добавлено в: v1.56 page.console_messages

Возвращает до (на данный момент) 200 последних сообщений консоли со страницы. Подробнее см. page.on("console").

Использование

page.console_messages()

Возвращает


content

Добавлено до v1.9 page.content

Возвращает полный HTML‑код страницы, включая doctype.

Использование

page.content()

Возвращает


drag_and_drop

Добавлено в: v1.13 page.drag_and_drop

Этот метод перетаскивает исходный элемент к целевому элементу. Сначала выполняется перемещение к исходному элементу и mousedown, затем перемещение к целевому элементу и mouseup.

Использование

page.drag_and_drop("#source", "#target")
# or specify exact positions relative to the top-left corners of the elements:
page.drag_and_drop(
"#source",
"#target",
source_position={"x": 34, "y": 7},
target_position={"x": 10, "y": 20}
)

Аргументы

  • source str#

    Селектор для поиска элемента, который нужно перетащить. Если селектору соответствует несколько элементов, будет использован первый.

  • target str#

    Селектор для поиска элемента, на который нужно выполнить сброс. Если селектору соответствует несколько элементов, будет использован первый.

  • force bool (опционально)#

    Следует ли обходить проверки actionability. По умолчанию false.

  • no_wait_after bool (опционально)#

    Устарело

    Этот параметр не имеет эффекта.

    Этот параметр не имеет эффекта.

  • source_position Dict (опционально) Добавлено в: v1.14#

    Клик по исходному элементу в этой точке относительно верхнего левого угла области padding элемента. Если не указано, используется некоторая видимая точка элемента.

  • steps int (опционально) Добавлено в: v1.57#

    По умолчанию равно 1. Отправляет n интерполированных событий mousemove, представляющих перемещение между mousedown и mouseup во время перетаскивания. При значении 1 отправляется одно событие mousemove в конечной точке.

  • strict bool (опционально) Добавлено в: v1.14#

    Если установлено в true, селектор должен однозначно разрешаться в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • target_position Dict (опционально) Добавлено в: v1.14#

    Сбрасывает на целевой элемент в этой точке относительно верхнего левого угла области padding элемента. Если не указано, используется некоторая видимая точка элемента.

  • timeout float (опционально)#

    Максимальное время в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

  • trial bool (опционально)#

    Если установлено, метод выполняет только проверки actionability и пропускает само действие. По умолчанию false. Полезно для ожидания готовности элемента к действию без его выполнения.

Возвращает


emulate_media

Добавлено до v1.9 page.emulate_media

Этот метод изменяет CSS media type с помощью аргумента media и/или медиавыражение 'prefers-colors-scheme' с помощью аргумента colorScheme.

Использование

page.evaluate("matchMedia('screen').matches")
# → True
page.evaluate("matchMedia('print').matches")
# → False

page.emulate_media(media="print")
page.evaluate("matchMedia('screen').matches")
# → False
page.evaluate("matchMedia('print').matches")
# → True

page.emulate_media()
page.evaluate("matchMedia('screen').matches")
# → True
page.evaluate("matchMedia('print').matches")
# → False
page.emulate_media(color_scheme="dark")
page.evaluate("matchMedia('(prefers-color-scheme: dark)').matches")
# → True
page.evaluate("matchMedia('(prefers-color-scheme: light)').matches")
# → False

Аргументы

  • color_scheme "light" | "dark" | "no-preference" | "null" (опционально) Добавлено в: v1.9#

    Эмулирует медиавыражение prefers-colors-scheme. Поддерживаемые значения: 'light' и 'dark'. Передача 'Null' отключает эмуляцию цветовой схемы. 'no-preference' устарело.

  • contrast "no-preference" | "more" | "null" (опционально) Добавлено в: v1.51#

  • forced_colors "active" | "none" | "null" (опционально) Добавлено в: v1.15#

  • media "screen" | "print" | "null" (опционально) Добавлено в: v1.9#

    Изменяет тип CSS media страницы. Допустимые значения: 'Screen', 'Print' и 'Null'. Передача 'Null' отключает эмуляцию CSS media.

  • reduced_motion "reduce" | "no-preference" | "null" (опционально) Добавлено в: v1.12#

    Эмулирует медиавыражение 'prefers-reduced-motion'. Поддерживаемые значения: 'reduce', 'no-preference'. Передача null отключает эмуляцию уменьшенного движения.

Возвращает


evaluate

Добавлено до v1.9 page.evaluate

Возвращает значение выполнения expression.

Если функция, переданная в page.evaluate(), возвращает Promise, то page.evaluate() дождётся его выполнения и вернёт результат.

Если функция, переданная в page.evaluate(), возвращает не-Serializable значение, то page.evaluate() завершится с результатом undefined. Playwright также поддерживает передачу некоторых дополнительных значений, которые не сериализуются с помощью JSON: -0, NaN, Infinity, -Infinity.

Использование

Передача аргумента в expression:

result = page.evaluate("([x, y]) => Promise.resolve(x * y)", [7, 8])
print(result) # выводит "56"

Вместо функции также можно передать строку:

print(page.evaluate("1 + 2")) # выводит "3"
x = 10
print(page.evaluate(f"1 + {x}")) # выводит "11"

Экземпляры ElementHandle можно передавать как аргумент в page.evaluate():

body_handle = page.evaluate("document.body")
html = page.evaluate("([body, suffix]) => body.innerHTML + suffix", [body_handle, "hello"])
body_handle.dispose()

Аргументы

  • expression str#

    JavaScript-выражение, которое будет выполнено в контексте браузера. Если выражение вычисляется в функцию, эта функция будет автоматически вызвана.

  • arg EvaluationArgument (опционально)#

    Необязательный аргумент, передаваемый в expression.

Возвращает


evaluate_handle

Добавлено до v1.9 page.evaluate_handle

Возвращает значение выполнения expression в виде JSHandle.

Единственное отличие между page.evaluate() и page.evaluate_handle() заключается в том, что page.evaluate_handle() возвращает JSHandle.

Если функция, переданная в page.evaluate_handle(), возвращает Promise, то page.evaluate_handle() дождётся его выполнения и вернёт результат.

Использование

a_window_handle = page.evaluate_handle("Promise.resolve(window)")
a_window_handle # handle для объекта window

Вместо функции также можно передать строку:

a_handle = page.evaluate_handle("document") # handle для "document"

Экземпляры JSHandle можно передавать как аргумент в page.evaluate_handle():

a_handle = page.evaluate_handle("document.body")
result_handle = page.evaluate_handle("body => body.innerHTML", a_handle)
print(result_handle.json_value())
result_handle.dispose()

Аргументы

  • expression str#

    JavaScript-выражение, которое будет выполнено в контексте браузера. Если выражение вычисляется в функцию, эта функция будет автоматически вызвана.

  • arg EvaluationArgument (опционально)#

    Необязательный аргумент, передаваемый в expression.

Возвращает


expect_console_message

Добавлено в: v1.9 page.expect_console_message

Выполняет действие и ожидает, пока на странице будет залогировано сообщение ConsoleMessage. Если передан predicate, он получает значение ConsoleMessage и ожидание продолжается до тех пор, пока predicate(message) не вернёт истинное значение. Будет выброшена ошибка, если страница будет закрыта до возникновения события page.on("console").

Использование

page.expect_console_message()
page.expect_console_message(**kwargs)

Аргументы

  • predicate Callable[ConsoleMessage]:bool (опционально)#

    Получает объект ConsoleMessage и должно вернуть истинное значение, когда ожидание должно завершиться.

  • timeout float (опционально)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью browser_context.set_default_timeout().

Возвращает


expect_download

Добавлено в: v1.9 page.expect_download

Выполняет действие и ожидает новый Download. Если передан predicate, он получает значение Download и ожидание продолжается до тех пор, пока predicate(download) не вернёт истинное значение. Будет выброшена ошибка, если страница будет закрыта до возникновения события загрузки.

Использование

page.expect_download()
page.expect_download(**kwargs)

Аргументы

  • predicate Callable[Download]:bool (опционально)#

    Получает объект Download и должно вернуть истинное значение, когда ожидание должно завершиться.

  • timeout float (опционально)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью browser_context.set_default_timeout().

Возвращает


expect_event

Добавлено до v1.9 page.expect_event

Ожидает срабатывания события и передаёт его данные в функцию-предикат. Возвращается, когда предикат возвращает истинное значение. Будет выброшена ошибка, если страница будет закрыта до срабатывания события. Возвращает значение данных события.

Использование

with page.expect_event("framenavigated") as event_info:
page.get_by_role("button")
frame = event_info.value

Аргументы

  • event str#

    Имя события, такое же, какое обычно передаётся в *.on(event).

  • predicate Callable (опционально)#

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

  • timeout float (опционально)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью browser_context.set_default_timeout().

Возвращает


expect_file_chooser

Добавлено в: v1.9 page.expect_file_chooser

Выполняет действие и ожидает создание нового FileChooser. Если передан predicate, он получает значение FileChooser и ожидание продолжается до тех пор, пока predicate(fileChooser) не вернёт истинное значение. Будет выброшена ошибка, если страница будет закрыта до открытия диалога выбора файла.

Использование

page.expect_file_chooser()
page.expect_file_chooser(**kwargs)

Аргументы

  • predicate Callable[FileChooser]:bool (опционально)#

    Получает объект FileChooser и должно вернуть истинное значение, когда ожидание должно завершиться.

  • timeout float (опционально)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью browser_context.set_default_timeout().

Возвращает


expect_popup

Добавлено в: v1.9 page.expect_popup

Выполняет действие и ожидает появления всплывающего окна (Page). Если передан predicate, значение [Popup] передаётся в функцию predicate, и ожидание продолжается до тех пор, пока predicate(page) не вернёт истинное значение. Будет выброшена ошибка, если страница будет закрыта до того, как произойдёт событие появления всплывающего окна.

Использование

page.expect_popup()
page.expect_popup(**kwargs)

Аргументы

  • predicate Callable[Page]:bool (необязательно)#

    Получает объект Page и должна вернуть истинное значение, когда ожидание должно завершиться.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью browser_context.set_default_timeout().

Возвращает


expect_request

Добавлено до v1.9 page.expect_request

Ожидает подходящий запрос и возвращает его. Подробнее о событиях см. в разделе ожидание события.

Использование

with page.expect_request("http://example.com/resource") as first:
page.get_by_text("trigger request").click()
first_request = first.value

# или с использованием lambda
with page.expect_request(lambda request: request.url == "http://example.com" and request.method == "get") as second:
page.get_by_text("trigger request").click()
second_request = second.value

Аргументы

  • url_or_predicate str | Pattern | Callable[Request]:bool#

    Строка URL запроса, регулярное выражение или предикат, принимающий объект Request. Если в параметрах контекста был указан base_url и переданный URL является путём, он будет объединён с помощью конструктора new URL().

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах, по умолчанию 30 секунд. Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью метода page.set_default_timeout().

Возвращает


expect_request_finished

Добавлено в: v1.12 page.expect_request_finished

Выполняет действие и ожидает завершения загрузки Request. Если передан predicate, значение Request передаётся в функцию predicate, и ожидание продолжается до тех пор, пока predicate(request) не вернёт истинное значение. Будет выброшена ошибка, если страница будет закрыта до того, как произойдёт событие page.on("requestfinished").

Использование

page.expect_request_finished()
page.expect_request_finished(**kwargs)

Аргументы

  • predicate Callable[Request]:bool (необязательно)#

    Получает объект Request и должна вернуть истинное значение, когда ожидание должно завершиться.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью browser_context.set_default_timeout().

Возвращает


expect_response

Добавлено до v1.9 page.expect_response

Возвращает соответствующий ответ. Подробнее о событиях см. в разделе ожидание события.

Использование

with page.expect_response("https://example.com/resource") as response_info:
page.get_by_text("trigger response").click()
response = response_info.value
return response.ok

# или с использованием lambda
with page.expect_response(lambda response: response.url == "https://example.com" and response.status == 200 and response.request.method == "get") as response_info:
page.get_by_text("trigger response").click()
response = response_info.value
return response.ok

Аргументы

  • url_or_predicate str | Pattern | Callable[Response]:bool#

    Строка URL запроса, регулярное выражение или предикат, принимающий объект Response. Если в параметрах контекста был указан base_url и переданный URL является путём, он будет объединён с помощью конструктора new URL().

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах, по умолчанию 30 секунд. Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


expect_websocket

Добавлено в: v1.9 page.expect_websocket

Выполняет действие и ожидает новый WebSocket. Если передан predicate, значение WebSocket передаётся в функцию predicate, и ожидание продолжается до тех пор, пока predicate(webSocket) не вернёт истинное значение. Будет выброшена ошибка, если страница будет закрыта до возникновения события WebSocket.

Использование

page.expect_websocket()
page.expect_websocket(**kwargs)

Аргументы

  • predicate Callable[WebSocket]:bool (необязательно)#

    Получает объект WebSocket и должна вернуть истинное значение, когда ожидание должно завершиться.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью browser_context.set_default_timeout().

Возвращает


expect_worker

Добавлено в: v1.9 page.expect_worker

Выполняет действие и ожидает новый Worker. Если передан predicate, значение Worker передаётся в функцию predicate, и ожидание продолжается до тех пор, пока predicate(worker) не вернёт истинное значение. Будет выброшена ошибка, если страница будет закрыта до возникновения события worker.

Использование

page.expect_worker()
page.expect_worker(**kwargs)

Аргументы

  • predicate Callable[Worker]:bool (необязательно)#

    Получает объект Worker и должна вернуть истинное значение, когда ожидание должно завершиться.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью browser_context.set_default_timeout().

Возвращает


expose_binding

Добавлено до v1.9 page.expose_binding

Метод добавляет функцию с именем name в объект window каждого фрейма на странице. При вызове эта функция выполняет callback и возвращает Promise, который резолвится в возвращаемое значение callback. Если [callback] возвращает Promise, он будет ожидаться.

Первый аргумент функции callback содержит информацию о вызывающей стороне: { browserContext: BrowserContext, page: Page, frame: Frame }.

См. browser_context.expose_binding() для версии, действующей на уровне контекста.

примечание

Функции, установленные через page.expose_binding(), сохраняются при навигациях.

Использование

Пример экспонирования URL страницы во все фреймы страницы:

from playwright.sync_api import sync_playwright, Playwright

def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.expose_binding("pageURL", lambda source: source["page"].url)
page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.pageURL();
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
page.click("button")

with sync_playwright() as playwright:
run(playwright)

Аргументы

  • name str#

    Имя функции в объекте window.

  • callback Callable#

    Callback-функция, которая будет вызываться в контексте Playwright.

  • handle bool (необязательно)#

    Устарело

    Этот параметр будет удалён в будущем.

    Определяет, передавать ли аргумент как handle вместо передачи по значению. При передаче handle поддерживается только один аргумент. При передаче по значению поддерживается несколько аргументов.

Возвращает


expose_function

Добавлено до v1.9 page.expose_function

Метод добавляет функцию с именем name в объект window каждого фрейма на странице. При вызове эта функция выполняет callback и возвращает Promise, который резолвится в возвращаемое значение callback.

Если [callback] возвращает Promise, он будет ожидаться.

См. browser_context.expose_function() для версии, действующей на уровне контекста.

примечание

Функции, установленные через page.expose_function(), сохраняются при навигациях.

Использование

Пример добавления функции sha256 на страницу:

import hashlib
from playwright.sync_api import sync_playwright, Playwright

def sha256(text):
m = hashlib.sha256()
m.update(bytes(text, "utf8"))
return m.hexdigest()


def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch(headless=False)
page = browser.new_page()
page.expose_function("sha256", sha256)
page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
page.click("button")

with sync_playwright() as playwright:
run(playwright)

Аргументы

  • name str#

    Имя функции в объекте window.

  • callback Callable#

    Callback-функция, которая будет вызываться в контексте Playwright.

Возвращает


frame

Добавлено до v1.9 page.frame

Возвращает фрейм, соответствующий указанным критериям. Должен быть указан либо name, либо url.

Использование

frame = page.frame(name="frame-name")
frame = page.frame(url=r".*domain.*")

Аргументы

  • name str (необязательно)#

    Имя фрейма, указанное в атрибуте name элемента iframe.

  • url str | Pattern | Callable[URL]:bool (необязательно)#

    Glob-паттерн, регулярное выражение или предикат, принимающий url фрейма в виде объекта URL.

Возвращает


frame_locator

Добавлено в: v1.17 page.frame_locator

При работе с iframe вы можете создать frame locator, который позволит войти во iframe и выбирать элементы внутри него.

Использование

Следующий пример находит элемент с текстом «Submit» внутри iframe с id my-frame, например <iframe id="my-frame">:

locator = page.frame_locator("#my-iframe").get_by_text("Submit")
locator.click()

Аргументы

  • selector str#

    Селектор, используемый при разрешении DOM-элемента.

Возвращает


get_by_alt_text

Добавлено в: v1.27 page.get_by_alt_text

Позволяет находить элементы по их alt-тексту.

Использование

Например, этот метод найдёт изображение по alt-тексту «Playwright logo»:

<img alt='Playwright logo'>
page.get_by_alt_text("Playwright logo").click()

Аргументы

  • text str | Pattern#

    Текст, по которому нужно найти элемент.

  • exact bool (необязательно)#

    Определяет, требуется ли точное совпадение: с учётом регистра и всей строки целиком. По умолчанию false. Игнорируется при использовании регулярного выражения. Обратите внимание, что при точном совпадении пробелы по краям всё равно обрезаются.

Возвращает


get_by_label

Добавлено в: v1.27 page.get_by_label

Позволяет находить элементы ввода по тексту связанного элемента <label> или aria-labelledby, либо по атрибуту aria-label.

Использование

Например, этот метод найдёт поля ввода по меткам «Username» и «Password» в следующем DOM:

<input aria-label="Username">
<label for="password-input">Password:</label>
<input id="password-input">
page.get_by_label("Username").fill("john")
page.get_by_label("Password").fill("secret")

Аргументы

  • text str | Pattern#

    Текст, по которому нужно найти элемент.

  • exact bool (необязательно)#

    Определяет, требуется ли точное совпадение: с учётом регистра и по всей строке. По умолчанию false. Игнорируется при поиске с использованием регулярного выражения. Обратите внимание, что при точном совпадении пробелы по краям всё равно обрезаются.

Возвращает


get_by_placeholder

Добавлено в: v1.27 page.get_by_placeholder

Позволяет находить элементы ввода по тексту плейсхолдера.

Использование

Рассмотрим следующую структуру DOM.

<input type="email" placeholder="name@example.com" />

Вы можете заполнить поле, найдя его по тексту плейсхолдера:

page.get_by_placeholder("name@example.com").fill("playwright@microsoft.com")

Аргументы

  • text str | Pattern#

    Текст, по которому нужно найти элемент.

  • exact bool (необязательно)#

    Определяет, требуется ли точное совпадение: с учётом регистра и по всей строке. По умолчанию false. Игнорируется при поиске с использованием регулярного выражения. Обратите внимание, что при точном совпадении пробелы по краям всё равно обрезаются.

Возвращает


get_by_role

Добавлено в: v1.27 page.get_by_role

Позволяет находить элементы по их ARIA‑роли, ARIA‑атрибутам и доступному имени.

Использование

Рассмотрим следующую структуру DOM.

<h3>Sign up</h3>
<label>
<input type="checkbox" /> Subscribe
</label>
<br/>
<button>Submit</button>

Вы можете найти каждый элемент по его неявной роли:

expect(page.get_by_role("heading", name="Sign up")).to_be_visible()

page.get_by_role("checkbox", name="Subscribe").check()

page.get_by_role("button", name=re.compile("submit", re.IGNORECASE)).click()

Аргументы

  • role "alert" | "alertdialog" | "application" | "article" | "banner" | "blockquote" | "button" | "caption" | "cell" | "checkbox" | "code" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "deletion" | "dialog" | "directory" | "document" | "emphasis" | "feed" | "figure" | "form" | "generic" | "grid" | "gridcell" | "group" | "heading" | "img" | "insertion" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "meter" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "paragraph" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "strong" | "subscript" | "superscript" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "time" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem"#

    Обязательная ARIA‑роль.

  • checked bool (необязательно)#

    Атрибут, который обычно задаётся с помощью aria-checked или нативных элементов <input type=checkbox>.

    Подробнее см. aria-checked.

  • disabled bool (необязательно)#

    Атрибут, который обычно задаётся с помощью aria-disabled или disabled.

    примечание

    В отличие от большинства других атрибутов, disabled наследуется по иерархии DOM. Подробнее см. aria-disabled.

  • exact bool (необязательно) Добавлено в: v1.28#

    Определяет, должно ли name совпадать точно: с учётом регистра и по всей строке. По умолчанию false. Игнорируется, если name является регулярным выражением. Обратите внимание, что при точном совпадении пробелы по краям всё равно обрезаются.

  • expanded bool (необязательно)#

    Атрибут, который обычно задаётся с помощью aria-expanded.

    Подробнее см. aria-expanded.

  • include_hidden bool (необязательно)#

    Параметр, управляющий тем, учитываются ли скрытые элементы. По умолчанию по селектору ролей сопоставляются только нескрытые элементы, как определено в ARIA.

    Подробнее см. aria-hidden.

  • level int (необязательно)#

    Числовой атрибут, который обычно присутствует для ролей heading, listitem, row, treeitem, с значениями по умолчанию для элементов <h1>-<h6>.

    Подробнее см. aria-level.

  • name str | Pattern (необязательно)#

    Параметр для сопоставления доступного имени. По умолчанию сопоставление регистронезависимое и ищет подстроку; используйте exact для управления этим поведением.

    Подробнее см. accessible name.

  • pressed bool (необязательно)#

    Атрибут, который обычно задаётся с помощью aria-pressed.

    Подробнее см. aria-pressed.

  • selected bool (необязательно)#

    Атрибут, который обычно задаётся с помощью aria-selected.

    Подробнее см. aria-selected.

Возвращает

Подробности

Селектор по роли не заменяет аудит доступности и тесты на соответствие стандартам, а лишь даёт раннюю обратную связь по соблюдению рекомендаций ARIA.

Многие HTML‑элементы имеют неявно определённую роль, которая распознаётся селектором ролей. Все поддерживаемые роли перечислены здесь. Рекомендации ARIA не советуют дублировать неявные роли и атрибуты, устанавливая role и/или aria-* со значениями по умолчанию.


get_by_test_id

Добавлено в: v1.27 page.get_by_test_id

Находит элемент по тестовому идентификатору.

Использование

Рассмотрим следующую структуру DOM.

<button data-testid="directions">Itinéraire</button>

Вы можете найти элемент по его test id:

page.get_by_test_id("directions").click()

Аргументы

  • test_id str | Pattern#

    Идентификатор, по которому нужно найти элемент.

Возвращает

Подробности

По умолчанию в качестве test id используется атрибут data-testid. При необходимости вы можете настроить другой атрибут test id с помощью selectors.set_test_id_attribute().


get_by_text

Добавлено в: v1.27 page.get_by_text

Позволяет находить элементы, содержащие заданный текст.

См. также locator.filter(), который позволяет сначала сопоставлять по другим критериям, например по доступной роли, а затем фильтровать по текстовому содержимому.

Использование

Рассмотрим следующую структуру DOM:

<div>Hello <span>world</span></div>
<div>Hello</div>

Вы можете искать по подстроке текста, точной строке или регулярному выражению:

# Совпадает с <span>
page.get_by_text("world")

# Совпадает с первым <div>
page.get_by_text("Hello world")

# Совпадает со вторым <div>
page.get_by_text("Hello", exact=True)

# Совпадает с обоими <div>
page.get_by_text(re.compile("Hello"))

# Совпадает со вторым <div>
page.get_by_text(re.compile("^hello$", re.IGNORECASE))

Аргументы

  • text str | Pattern#

    Текст, по которому нужно найти элемент.

  • exact bool (необязательно)#

    Определяет, требуется ли точное совпадение: с учётом регистра и по всей строке. По умолчанию false. Игнорируется при поиске с использованием регулярного выражения. Обратите внимание, что при точном совпадении пробелы по краям всё равно обрезаются.

Возвращает

Подробности

Сопоставление по тексту всегда нормализует пробелы, даже при точном совпадении. Например, несколько пробелов преобразуются в один, переносы строк заменяются пробелами, а начальные и конечные пробелы игнорируются.

Элементы ввода типов button и submit сопоставляются по их атрибуту value, а не по текстовому содержимому. Например, поиск по тексту "Log in" найдёт <input type=button value="Log in">.


get_by_title

Добавлено в: v1.27 page.get_by_title

Позволяет находить элементы по их атрибуту title.

Использование

Рассмотрим следующую структуру DOM.

<span title='Issues count'>25 issues</span>

Вы можете проверить количество задач, найдя элемент по тексту заголовка:

expect(page.get_by_title("Issues count")).to_have_text("25 issues")

Аргументы

  • text str | Pattern#

    Текст, по которому нужно найти элемент.

  • exact bool (необязательно)#

    Определяет, требуется ли точное совпадение: с учётом регистра и по всей строке. По умолчанию false. Игнорируется при поиске с использованием регулярного выражения. Обратите внимание, что при точном совпадении пробелы по краям всё равно обрезаются.

Возвращает


go_back

Добавлено до v1.9 page.go_back

Возвращает ответ основного ресурса. В случае нескольких редиректов навигация завершится с ответом последнего редиректа. Если вернуться назад невозможно, возвращает null.

Переход на предыдущую страницу в истории.

Использование

page.go_back()
page.go_back(**kwargs)

Аргументы

  • timeout float (необязательно)#

    Максимальное время выполнения операции в миллисекундах, по умолчанию 30 секунд. Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout().

  • wait_until "load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)#

    Условие, при котором операция считается успешно завершённой, по умолчанию load. Возможные события:

    • 'domcontentloaded' — операция считается завершённой при срабатывании события DOMContentLoaded.
    • 'load' — операция считается завершённой при срабатывании события load.
    • 'networkidle'НЕ РЕКОМЕНДУЕТСЯ: операция считается завершённой, когда в течение как минимум 500 мс нет сетевых соединений. Не используйте этот режим для тестирования; вместо этого полагайтесь на веб‑ассерты.
    • 'commit' — операция считается завершённой, когда получен сетевой ответ и документ начал загружаться.

Возвращает


go_forward

Добавлено до v1.9 page.go_forward

Возвращает ответ основного ресурса. В случае нескольких редиректов навигация завершится с ответом последнего редиректа. Если перейти вперёд невозможно, возвращает null.

Переход на следующую страницу в истории.

Использование

page.go_forward()
page.go_forward(**kwargs)

Аргументы

  • timeout float (необязательно)#

    Максимальное время выполнения операции в миллисекундах, по умолчанию 30 секунд. Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout().

  • wait_until "load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)#

    Условие, при котором операция считается успешно завершённой, по умолчанию load. Возможные события:

    • 'domcontentloaded' — операция считается завершённой при срабатывании события DOMContentLoaded.
    • 'load' — операция считается завершённой при срабатывании события load.
    • 'networkidle'НЕ РЕКОМЕНДУЕТСЯ: операция считается завершённой, когда в течение как минимум 500 мс нет сетевых соединений. Не используйте этот режим для тестирования; вместо этого полагайтесь на веб‑ассерты.
    • 'commit' — операция считается завершённой, когда получен сетевой ответ и документ начал загружаться.

Возвращает


goto

Добавлено до v1.9 page.goto

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

Метод выбрасывает ошибку, если:

  • возникает ошибка SSL (например, при использовании самоподписанных сертификатов);
  • целевой URL некорректен;
  • превышен timeout во время навигации;
  • удалённый сервер не отвечает или недоступен;
  • основной ресурс не удалось загрузить.

Метод не выбрасывает ошибку, если удалённый сервер возвращает любой допустимый HTTP‑статус, включая 404 «Not Found» и 500 «Internal Server Error». Статус такого ответа можно получить с помощью response.status.

примечание

Метод либо выбрасывает ошибку, либо возвращает ответ основного ресурса. Единственные исключения — навигация на about:blank или навигация на тот же URL с другим хэшем: в этих случаях операция считается успешной и возвращает null.

примечание

В режиме headless не поддерживается навигация к PDF‑документам. См. вышестоящую задачу.

Использование

page.goto(url)
page.goto(url, **kwargs)

Аргументы

  • url str#

    URL, на который нужно перейти. URL должен включать схему, например https://. Если в параметрах контекста был задан base_url и переданный URL является путём, они объединяются с помощью конструктора new URL().

  • referer str (необязательно)#

    Значение заголовка Referer. Если указано, оно имеет приоритет над заголовком Referer, заданным с помощью page.set_extra_http_headers().

  • timeout float (необязательно)#

    Максимальное время выполнения операции в миллисекундах, по умолчанию 30 секунд. Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout().

  • wait_until "load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)#

    Условие, при котором операция считается успешно завершённой, по умолчанию load. Возможные события:

    • 'domcontentloaded' — операция считается завершённой при срабатывании события DOMContentLoaded.
    • 'load' — операция считается завершённой при срабатывании события load.
    • 'networkidle'НЕ РЕКОМЕНДУЕТСЯ: операция считается завершённой, когда в течение как минимум 500 мс нет сетевых соединений. Не используйте этот режим для тестирования; вместо этого полагайтесь на веб‑ассерты.
    • 'commit' — операция считается завершённой, когда получен сетевой ответ и документ начал загружаться.

Возвращает


locator

Добавлено в: v1.14 page.locator

Метод возвращает локатор элемента, который можно использовать для выполнения действий на этой странице / в этом фрейме. Локатор разрешается до элемента непосредственно перед выполнением действия, поэтому серия действий с одним и тем же локатором фактически может быть выполнена над разными DOM-элементами. Это происходит, если структура DOM между этими действиями изменилась.

Подробнее о локаторах.

Использование

page.locator(selector)
page.locator(selector, **kwargs)

Аргументы

  • selector str#

    Селектор, используемый для поиска DOM-элемента.

  • has Locator (необязательно)#

    Сужает результаты метода до элементов, которые содержат элементы, соответствующие этому относительному локатору. Например, article, который содержит text=Playwright, соответствует <article><div>Playwright</div></article>.

    Внутренний локатор должен быть относительным к внешнему локатору и запрашивается, начиная с совпадения внешнего локатора, а не от корня документа. Например, вы можете найти content, который содержит div, в <article><content><div>Playwright</div></content></article>. Однако поиск content, который содержит article div, завершится неудачей, потому что внутренний локатор должен быть относительным и не должен использовать элементы вне content.

    Обратите внимание, что внешний и внутренний локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.

  • has_not Locator (необязательно) Добавлено в: v1.33#

    Соответствует элементам, которые не содержат элемент, совпадающий с внутренним локатором. Внутренний локатор запрашивается относительно внешнего. Например, article, который не содержит div, соответствует <article><span>Playwright</span></article>.

    Обратите внимание, что внешний и внутренний локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.

  • has_not_text str | Pattern (необязательно) Добавлено в: v1.33#

    Соответствует элементам, которые не содержат указанный текст где-либо внутри, возможно, в дочернем или вложенном элементе. При передаче [string] поиск нечувствителен к регистру и ищет подстроку.

  • has_text str | Pattern (необязательно)#

    Соответствует элементам, содержащим указанный текст где-либо внутри, возможно, в дочернем или вложенном элементе. При передаче [string] поиск нечувствителен к регистру и ищет подстроку. Например, "Playwright" соответствует <article><div>Playwright</div></article>.

Возвращает


opener

Добавлено до v1.9 page.opener

Возвращает страницу-открыватель (opener) для всплывающих страниц и null для остальных. Если страница-открыватель уже была закрыта, также возвращается null.

Использование

page.opener()

Возвращает


page_errors

Добавлено в: v1.56 page.page_errors

Возвращает до (в настоящее время) 200 последних ошибок страницы. Подробнее см. page.on("pageerror").

Использование

page.page_errors()

Возвращает


pause

Добавлено в: v1.9 page.pause

Приостанавливает выполнение скрипта. Playwright прекращает выполнение скрипта и ждёт, пока пользователь либо нажмёт кнопку «Resume» в оверлее страницы, либо вызовет playwright.resume() в консоли DevTools.

Во время паузы пользователь может исследовать селекторы или выполнять ручные шаги. Возобновление продолжит выполнение исходного скрипта с места остановки.

примечание

Этот метод требует запуска Playwright в режиме с интерфейсом (headed mode) с ложным значением параметра headless.

Использование

page.pause()

Возвращает


pdf

Добавлено до v1.9 page.pdf

Возвращает буфер PDF.

page.pdf() генерирует PDF страницы с использованием CSS media print. Чтобы сгенерировать PDF с media screen, вызовите page.emulate_media() перед вызовом page.pdf():

примечание

По умолчанию page.pdf() генерирует PDF с изменёнными цветами для печати. Используйте свойство -webkit-print-color-adjust, чтобы принудительно отрисовать точные цвета.

Использование

# генерирует PDF с типом media "screen".
page.emulate_media(media="screen")
page.pdf(path="page.pdf")

Параметры width, height и margin принимают значения с указанием единиц измерения. Значения без указания единиц интерпретируются как пиксели.

Несколько примеров:

  • page.pdf({width: 100}) — печать с шириной 100 пикселей
  • page.pdf({width: '100px'}) — печать с шириной 100 пикселей
  • page.pdf({width: '10cm'}) — печать с шириной 10 сантиметров

Все возможные единицы измерения:

  • px — пиксель
  • in — дюйм
  • cm — сантиметр
  • mm — миллиметр

Параметры format:

  • Letter: 8.5in x 11in
  • Legal: 8.5in x 14in
  • Tabloid: 11in x 17in
  • Ledger: 17in x 11in
  • A0: 33.1in x 46.8in
  • A1: 23.4in x 33.1in
  • A2: 16.54in x 23.4in
  • A3: 11.7in x 16.54in
  • A4: 8.27in x 11.7in
  • A5: 5.83in x 8.27in
  • A6: 4.13in x 5.83in
примечание

Разметка header_template и footer_template имеет следующие ограничения: > 1. Теги <script> внутри шаблонов не выполняются. > 2. Стили страницы не видны внутри шаблонов.

Аргументы

  • display_header_footer bool (необязательно)#

    Отображать колонтитулы. По умолчанию false.

  • footer_template str (необязательно)#

    HTML-шаблон нижнего колонтитула для печати. Должен использовать тот же формат, что и header_template.

  • format str (необязательно)#

    Формат бумаги. Если задан, имеет приоритет над параметрами width и height. По умолчанию 'Letter'.

  • header_template str (необязательно)#

    HTML-шаблон верхнего колонтитула для печати. Должен быть валидной HTML-разметкой со следующими классами для подстановки значений:

    • 'date' — отформатированная дата печати
    • 'title' — заголовок документа
    • 'url' — адрес документа
    • 'pageNumber' — номер текущей страницы
    • 'totalPages' — общее количество страниц документа
  • height str | float (необязательно)#

    Высота бумаги, принимает значения с указанием единиц измерения.

  • landscape bool (необязательно)#

    Ориентация бумаги. По умолчанию false.

  • margin Dict (необязательно)#

    • top str | float (необязательно)

      Верхний отступ, принимает значения с указанием единиц. По умолчанию 0.

    • right str | float (необязательно)

      Правый отступ, принимает значения с указанием единиц. По умолчанию 0.

    • bottom str | float (необязательно)

      Нижний отступ, принимает значения с указанием единиц. По умолчанию 0.

    • left str | float (необязательно)

      Левый отступ, принимает значения с указанием единиц. По умолчанию 0.

    Отступы страницы, по умолчанию отсутствуют.

  • outline bool (необязательно) Добавлено в: v1.42#

    Встраивать ли структуру документа (outline) в PDF. По умолчанию false.

  • page_ranges str (необязательно)#

    Диапазоны страниц для печати, например '1-5, 8, 11-13'. По умолчанию пустая строка, что означает печать всех страниц.

  • path Union[str, pathlib.Path] (необязательно)#

    Путь к файлу для сохранения PDF. Если путь относительный, он разрешается относительно текущего рабочего каталога. Если путь не указан, PDF не будет сохранён на диск.

  • prefer_css_page_size bool (необязательно)#

    Отдавать приоритет CSS-правилу @page над параметрами width, height или format. По умолчанию false, при этом контент масштабируется под размер бумаги.

  • print_background bool (необязательно)#

    Печатать фоновые изображения. По умолчанию false.

  • scale float (необязательно)#

    Масштаб рендеринга страницы. По умолчанию 1. Значение должно быть в диапазоне от 0.1 до 2.

  • tagged bool (необязательно) Добавлено в: v1.42#

    Генерировать ли тегированный (доступный) PDF. По умолчанию false.

  • width str | float (необязательно)#

    Ширина бумаги, принимает значения с указанием единиц измерения.

Возвращает


reload

Добавлено до v1.9 page.reload

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

Использование

page.reload()
page.reload(**kwargs)

Аргументы

  • timeout float (необязательно)#

    Максимальное время выполнения операции в миллисекундах, по умолчанию 30 секунд. Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout().

  • wait_until "load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)#

    Когда считать операцию завершённой. По умолчанию load. Возможные события:

    • 'domcontentloaded' — операция считается завершённой при срабатывании события DOMContentLoaded.
    • 'load' — операция считается завершённой при срабатывании события load.
    • 'networkidle'НЕ РЕКОМЕНДУЕТСЯ: операция считается завершённой, когда нет сетевых соединений в течение как минимум 500 мс. Не используйте для тестирования — вместо этого полагайтесь на веб-ассерты.
    • 'commit' — операция считается завершённой при получении сетевого ответа и начале загрузки документа.

Возвращает


remove_locator_handler

Добавлено в: v1.44 page.remove_locator_handler

Удаляет все обработчики локаторов, добавленные с помощью page.add_locator_handler(), для указанного локатора.

Использование

page.remove_locator_handler(locator)

Аргументы

Возвращает


request_gc

Добавлено в: v1.48 page.request_gc

Запрашивает выполнение сборки мусора на странице. Обратите внимание, что нет гарантии, что все недостижимые объекты будут собраны.

Это полезно для обнаружения утечек памяти. Например, если на странице есть большой объект 'suspect', который может утекать, вы можете проверить отсутствие утечки, используя WeakRef.

# 1. На странице сохраняем WeakRef для объекта "suspect".
page.evaluate("globalThis.suspectWeakRef = new WeakRef(suspect)")
# 2. Запрашиваем сборку мусора.
page.request_gc()
# 3. Проверяем, что weak ref больше не указывает на исходный объект.
assert page.evaluate("!globalThis.suspectWeakRef.deref()")

Использование

page.request_gc()

Возвращает


requests

Добавлено в: v1.56 page.requests

Возвращает до (в настоящее время) 100 последних сетевых запросов с этой страницы. Подробнее см. page.on("request").

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

Обратите внимание, что запросы, сообщаемые через page.on("request"), не собираются, поэтому существует компромисс между эффективным использованием памяти с page.requests() и объёмом доступной информации через page.on("request").

Использование

page.requests()

Возвращает


route

Добавлено до v1.9 page.route

Маршрутизация предоставляет возможность изменять сетевые запросы, выполняемые страницей.

После включения маршрутизации каждый запрос, соответствующий шаблону URL, будет приостановлен, пока он не будет продолжен, выполнен (fulfilled) или отменён (aborted).

примечание

Обработчик будет вызван только для первого URL, если ответ является редиректом.

примечание

page.route() не перехватывает запросы, обработанные Service Worker. См. эту задачу. Рекомендуется отключать Service Worker при использовании перехвата запросов, установив service_workers в 'block'.

примечание

page.route() не перехватывает первый запрос всплывающей страницы. Используйте browser_context.route().

Использование

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

page = browser.new_page()
page.route("**/*.{png,jpg,jpeg}", lambda route: route.abort())
page.goto("https://example.com")
browser.close()

Или тот же пример с использованием регулярного выражения:

page = browser.new_page()
page.route(re.compile(r"(\.png$)|(\.jpg$)"), lambda route: route.abort())
page.goto("https://example.com")
browser.close()

Можно анализировать запрос, чтобы принять решение о действии маршрута. Например, подменять все запросы, содержащие определённые POST-данные, и пропускать остальные без изменений:

def handle_route(route: Route):
if ("my-string" in route.request.post_data):
route.fulfill(body="mocked-data")
else:
route.continue_()
page.route("/api/**", handle_route)

Маршруты страницы имеют приоритет над маршрутами контекста браузера (настроенными с помощью browser_context.route()), если запрос соответствует обоим обработчикам.

Чтобы удалить маршрут вместе с обработчиком, используйте page.unroute().

примечание

Включение маршрутизации отключает HTTP-кэш.

Аргументы

  • url str | Pattern | Callable[URL]:bool#

    Glob-шаблон, регулярное выражение или предикат, принимающий URL для сопоставления при маршрутизации. Если в параметрах контекста задан base_url и переданный URL — строка, не начинающаяся с *, он разрешается с помощью конструктора new URL().

  • handler Callable[Route, Request]:Promise[Any] | Any#

    Функция-обработчик для маршрутизации запроса.

  • times int (необязательно) Добавлено в: v1.15#

    Сколько раз должен использоваться маршрут. По умолчанию используется каждый раз.

Возвращает


route_from_har

Добавлено в: v1.23 page.route_from_har

Если указано, сетевые запросы, выполняемые на странице, будут обслуживаться из HAR-файла. Подробнее см. Воспроизведение из HAR.

Playwright не обслуживает из HAR-файла запросы, перехваченные Service Worker. См. эту задачу. Рекомендуется отключать Service Worker при использовании перехвата запросов, установив service_workers в 'block'.

Использование

page.route_from_har(har)
page.route_from_har(har, **kwargs)

Аргументы

  • har Union[str, pathlib.Path]#

    Путь к HAR-файлу с заранее записанными сетевыми данными. Если путь относительный, он разрешается относительно текущего рабочего каталога.

  • not_found "abort" | "fallback" (необязательно)#

    • При значении 'abort' любой запрос, отсутствующий в HAR-файле, будет отменён.
    • При значении 'fallback' отсутствующие запросы будут отправлены в сеть.

    По умолчанию 'abort'.

  • update bool (необязательно)#

    Если указано, обновляет переданный HAR фактической сетевой информацией вместо обслуживания из файла. Файл записывается на диск при вызове browser_context.close().

  • update_content "embed" | "attach" (необязательно) Добавлено в: v1.32#

    Необязательная настройка управления контентом ресурсов. При значении attach ресурсы сохраняются как отдельные файлы или записи в ZIP-архиве. При значении embed контент сохраняется непосредственно внутри HAR-файла.

  • update_mode "full" | "minimal" (необязательно) Добавлено в: v1.32#

    При значении minimal записывается только информация, необходимая для маршрутизации из HAR. Это исключает размеры, тайминги, страницы, cookies, безопасность и другие данные HAR, которые не используются при воспроизведении. По умолчанию minimal.

  • url str | Pattern (необязательно)#

    Glob-шаблон, регулярное выражение или предикат для сопоставления URL запроса. Только запросы с URL, соответствующим шаблону, будут обслуживаться из HAR-файла. Если не указано, все запросы обслуживаются из HAR-файла.

Возвращает


route_web_socket

Добавлено в: v1.48 page.route_web_socket

Этот метод позволяет модифицировать WebSocket‑соединения, которые создаются страницей.

Обратите внимание, что маршрутизироваться будут только те WebSocket, которые созданы после вызова этого метода. Рекомендуется вызывать этот метод до навигации по странице.

Использование

Ниже приведён пример простого мока, который отвечает на одно сообщение. См. WebSocketRoute для получения дополнительных сведений и примеров.

def message_handler(ws: WebSocketRoute, message: Union[str, bytes]):
if message == "request":
ws.send("response")

def handler(ws: WebSocketRoute):
ws.on_message(lambda message: message_handler(ws, message))

page.route_web_socket("/ws", handler)

Аргументы

  • url str | Pattern | Callable[URL]:bool#

    Только WebSocket‑соединения с URL, соответствующим этому шаблону, будут маршрутизироваться. Строковый шаблон может быть относительным к параметру контекста base_url.

  • handler Callable[WebSocketRoute]:Promise[Any] | Any#

    Функция-обработчик для маршрутизации WebSocket.

Возвращает


screenshot

Добавлено до v1.9 page.screenshot

Возвращает буфер с полученным снимком экрана.

Использование

page.screenshot()
page.screenshot(**kwargs)

Аргументы

  • animations "disabled" | "allow" (необязательно)#

    При значении "disabled" останавливаются CSS‑анимации, CSS‑переходы и Web Animations. Анимации обрабатываются по‑разному в зависимости от их длительности:

    • конечные анимации перематываются до завершения, поэтому будет сгенерировано событие transitionend;
    • бесконечные анимации отменяются и переводятся в начальное состояние, а затем возобновляются после снятия скриншота.

    По умолчанию используется "allow", что оставляет анимации без изменений.

  • caret "hide" | "initial" (необязательно)#

    При значении "hide" на скриншоте будет скрыт текстовый курсор. При значении "initial" поведение курсора не изменяется. По умолчанию используется "hide".

  • clip Dict (необязательно)#

    • x float

      x‑координата левого верхнего угла области обрезки

    • y float

      y‑координата левого верхнего угла области обрезки

    • width float

      ширина области обрезки

    • height float

      высота области обрезки

    Объект, задающий обрезку результирующего изображения.

  • full_page bool (необязательно)#

    Если установлено в true, делается снимок всей прокручиваемой страницы, а не только текущего видимого viewport. По умолчанию false.

  • mask List[Locator] (необязательно)#

    Указывает локаторы элементов, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут перекрыты розовым прямоугольником #FF00FF (настраивается с помощью mask_color), полностью покрывающим их ограничивающий прямоугольник. Маска также применяется к невидимым элементам; см. Соответствие только видимым элементам, чтобы отключить это поведение.

  • mask_color str (необязательно) Добавлено в: v1.35#

    Цвет перекрывающего прямоугольника для замаскированных элементов в CSS‑формате цвета. Цвет по умолчанию — розовый #FF00FF.

  • omit_background bool (необязательно)#

    Скрывает стандартный белый фон и позволяет получать скриншоты с прозрачностью. Не применяется к изображениям jpeg. По умолчанию false.

  • path Union[str, pathlib.Path] (необязательно)#

    Путь к файлу, в который будет сохранено изображение. Тип скриншота определяется по расширению файла. Если path является относительным, он разрешается относительно текущего рабочего каталога. Если путь не указан, изображение не будет сохранено на диск.

  • quality int (необязательно)#

    Качество изображения в диапазоне 0–100. Не применяется к изображениям png.

  • scale "css" | "device" (необязательно)#

    При значении "css" скриншот будет иметь один пиксель на каждый CSS‑пиксель страницы. Для устройств с высоким DPI это позволяет уменьшить размер скриншотов. Использование "device" создаёт один пиксель на каждый пиксель устройства, поэтому скриншоты на high‑DPI устройствах будут вдвое больше или даже больше.

    По умолчанию используется "device".

  • style str (необязательно) Добавлено в: v1.41#

    Текст таблицы стилей, которая применяется во время создания скриншота. Здесь можно скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы получить воспроизводимые скриншоты. Эта таблица стилей проникает в Shadow DOM и применяется к внутренним фреймам.

  • timeout float (необязательно)#

    Максимальное время в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

  • type "png" | "jpeg" (необязательно)#

    Тип скриншота. По умолчанию png.

Возвращает


set_content

Добавлено до v1.9 page.set_content

Этот метод внутри себя вызывает document.write(), наследуя все его особенности и поведение.

Использование

page.set_content(html)
page.set_content(html, **kwargs)

Аргументы

  • html str#

    HTML‑разметка, которая будет назначена странице.

  • timeout float (необязательно)#

    Максимальное время выполнения операции в миллисекундах, по умолчанию 30 секунд. Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout().

  • wait_until "load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)#

    Когда считать операцию успешно завершённой. По умолчанию load. Возможные события:

    • 'domcontentloaded' — считать операцию завершённой, когда срабатывает событие DOMContentLoaded;
    • 'load' — считать операцию завершённой, когда срабатывает событие load;
    • 'networkidle'НЕ РЕКОМЕНДУЕТСЯ считать операцию завершённой, когда в течение как минимум 500 мс отсутствуют сетевые соединения. Не используйте этот метод для тестирования — вместо этого полагайтесь на веб‑проверки;
    • 'commit' — считать операцию завершённой, когда получен сетевой ответ и документ начал загружаться.

Возвращает


set_default_navigation_timeout

Добавлено до v1.9 page.set_default_navigation_timeout

Эта настройка изменяет максимальное время навигации по умолчанию для следующих методов и связанных с ними сокращений:

Использование

page.set_default_navigation_timeout(timeout)

Аргументы

  • timeout float#

    Максимальное время навигации в миллисекундах


set_default_timeout

Добавлено до v1.9 page.set_default_timeout

Эта настройка изменяет максимальное время по умолчанию для всех методов, принимающих параметр timeout.

примечание

Использование

page.set_default_timeout(timeout)

Аргументы

  • timeout float#

    Максимальное время в миллисекундах. Передайте 0, чтобы отключить таймаут.


set_extra_http_headers

Добавлено до v1.9 page.set_extra_http_headers

Дополнительные HTTP‑заголовки будут отправляться с каждым запросом, который инициирует страница.

примечание

page.set_extra_http_headers() не гарантирует порядок заголовков в исходящих запросах.

Использование

page.set_extra_http_headers(headers)

Аргументы

  • headers Dict[str, str]#

    Объект, содержащий дополнительные HTTP‑заголовки, которые будут отправляться с каждым запросом. Все значения заголовков должны быть строками.

Возвращает


set_viewport_size

Добавлено до v1.9 page.set_viewport_size

В случае нескольких страниц в одном браузере каждая страница может иметь собственный размер viewport. Однако browser.new_context() позволяет задать размер viewport (и другие параметры) сразу для всех страниц в контексте.

page.set_viewport_size() изменяет размер страницы. Многие сайты не ожидают, что размеры «телефона» будут меняться, поэтому рекомендуется задавать размер viewport до навигации на страницу. page.set_viewport_size() также сбрасывает размер screen; используйте browser.new_context() с параметрами screen и viewport, если вам нужен более точный контроль этих свойств.

Использование

page = browser.new_page()
page.set_viewport_size({"width": 640, "height": 480})
page.goto("https://example.com")

Аргументы

  • viewport_size Dict#
    • width int

      ширина страницы в пикселях

    • height int

      высота страницы в пикселях

Возвращает


title

Добавлено до v1.9 page.title

Возвращает заголовок страницы.

Использование

page.title()

Возвращает


unroute

Добавлено до v1.9 page.unroute

Удаляет маршрут, созданный с помощью page.route(). Если handler не указан, удаляются все маршруты для указанного url.

Использование

page.unroute(url)
page.unroute(url, **kwargs)

Аргументы

  • url str | Pattern | Callable[URL]:bool#

    Glob‑шаблон, регулярное выражение или предикат, принимающий URL, для сопоставления при маршрутизации.

  • handler Callable[Route, Request]:Promise[Any] | Any (необязательно)#

    Необязательная функция‑обработчик для маршрутизации запроса.

Возвращает


unroute_all

Добавлено в: v1.41 page.unroute_all

Удаляет все маршруты, созданные с помощью page.route() и page.route_from_har().

Использование

page.unroute_all()
page.unroute_all(**kwargs)

Аргументы

  • behavior "wait" | "ignoreErrors" | "default" (необязательно)#

    Определяет, нужно ли ждать завершения уже выполняющихся обработчиков и как обрабатывать возникающие в них ошибки:

    • 'default' — не ждать завершения текущих вызовов обработчиков (если они есть); если обработчик после удаления маршрута выбросит ошибку, это может привести к необработанному исключению;
    • 'wait' — дождаться завершения текущих вызовов обработчиков (если они есть);
    • 'ignoreErrors' — не ждать завершения текущих вызовов обработчиков (если они есть); все ошибки, выброшенные обработчиками после удаления маршрута, будут молча перехвачены.

Возвращает


wait_for_event

Добавлено до v1.9 page.wait_for_event
примечание

В большинстве случаев следует использовать page.expect_event().

Ожидает срабатывания указанного event. Если передан предикат, значение события передаётся в функцию predicate, и ожидание продолжается до тех пор, пока predicate(event) не вернёт истинное значение. Будет выброшена ошибка, если страница будет закрыта до срабатывания события.

Использование

page.wait_for_event(event)
page.wait_for_event(event, **kwargs)

Аргументы

  • event str#

    Имя события — такое же, какое обычно передаётся в *.on(event).

  • predicate Callable (необязательно)#

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

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью browser_context.set_default_timeout().

Возвращает


wait_for_function

Добавлено до v1.9 page.wait_for_function

Возвращает управление, когда expression возвращает истинное значение. Метод резолвится в JSHandle этого истинного значения.

Использование

Метод page.wait_for_function() можно использовать для отслеживания изменения размера viewport:

from playwright.sync_api import sync_playwright, Playwright

def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch()
page = browser.new_page()
page.evaluate("window.x = 0; setTimeout(() => { window.x = 100 }, 1000);")
page.wait_for_function("() => window.x > 0")
browser.close()

with sync_playwright() as playwright:
run(playwright)

Чтобы передать аргумент в предикат функции page.wait_for_function():

selector = ".foo"
page.wait_for_function("selector => !!document.querySelector(selector)", selector)

Аргументы

  • expression str#

    JavaScript‑выражение, которое будет выполнено в контексте браузера. Если выражение вычисляется в функцию, она будет автоматически вызвана.

  • arg EvaluationArgument (необязательно)#

    Необязательный аргумент, передаваемый в expression.

  • polling float | "raf" (необязательно)#

    Если значение polling равно 'raf', то expression будет постоянно выполняться в колбэке requestAnimationFrame. Если polling является числом, оно трактуется как интервал в миллисекундах, с которым будет выполняться функция. По умолчанию используется raf.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


wait_for_load_state

Добавлено до v1.9 page.wait_for_load_state

Возвращает управление, когда достигнуто требуемое состояние загрузки.

Метод завершается, когда страница достигает требуемого состояния загрузки — по умолчанию load. Навигация должна быть зафиксирована (committed) на момент вызова этого метода. Если текущий документ уже достиг требуемого состояния, метод завершается немедленно.

примечание

В большинстве случаев этот метод не требуется, так как Playwright автоматически ожидает перед каждым действием.

Использование

page.get_by_role("button").click() # клик инициирует навигацию
page.wait_for_load_state() # промис завершается после события "load"
with page.expect_popup() as page_info:
page.get_by_role("button").click() # click triggers a popup.
popup = page_info.value
# Wait for the "DOMContentLoaded" event.
popup.wait_for_load_state("domcontentloaded")
print(popup.title()) # popup is ready to use.

Аргументы

  • state "load" | "domcontentloaded" | "networkidle" (опционально)#

    Необязательное состояние загрузки, ожидание которого нужно выполнить; по умолчанию load. Если указанное состояние уже было достигнуто во время загрузки текущего документа, метод завершается сразу. Возможные значения:

    • 'load' — дождаться срабатывания события load.
    • 'domcontentloaded' — дождаться срабатывания события DOMContentLoaded.
    • 'networkidle'НЕ РЕКОМЕНДУЕТСЯ ждать, пока в течение как минимум 500 мс не останется сетевых соединений. Не используйте этот метод для тестирования; вместо этого полагайтесь на веб-утверждения (assertions), чтобы оценить готовность.
  • timeout float (опционально)#

    Максимальное время выполнения операции в миллисекундах; по умолчанию 30 секунд. Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout().

Возвращает


wait_for_url

Добавлено в: v1.11 page.wait_for_url

Ожидает, пока главный фрейм выполнит навигацию к указанному URL.

Использование

page.click("a.delayed-navigation") # клик по ссылке косвенно вызовет навигацию
page.wait_for_url("**/target.html")

Аргументы

  • url str | Pattern | Callable[URL]:bool#

    Glob‑шаблон, регулярное выражение или предикат, принимающий URL, для сопоставления во время ожидания навигации. Обратите внимание: если параметр — строка без wildcard‑символов, метод будет ожидать навигацию к URL, который в точности равен этой строке.

  • timeout float (опционально)#

    Максимальное время выполнения операции в миллисекундах. По умолчанию — 30 секунд. Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout().

  • wait_until "load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#

    Указывает, когда считать операцию успешно завершённой. По умолчанию — load. Возможные события:

    • 'domcontentloaded' — считать операцию завершённой при срабатывании события DOMContentLoaded.
    • 'load' — считать операцию завершённой при срабатывании события load.
    • 'networkidle'НЕ РЕКОМЕНДУЕТСЯ считать операцию завершённой, когда отсутствуют сетевые соединения как минимум 500 мс. Не используйте этот метод для тестирования, вместо этого полагайтесь на веб‑проверки.
    • 'commit' — считать операцию завершённой, когда получен сетевой ответ и документ начал загружаться.

Возвращает


Свойства

clock

Добавлено в: v1.45 page.clock

Playwright предоставляет возможность подменять часы и ход времени.

Использование

page.clock

Тип


context

Добавлено до v1.9 page.context

Возвращает контекст браузера, к которому принадлежит страница.

Использование

page.context

Возвращает


frames

Добавлено до v1.9 page.frames

Массив всех фреймов, прикреплённых к странице.

Использование

page.frames

Возвращает


is_closed

Добавлено до v1.9 page.is_closed

Указывает, что страница была закрыта.

Использование

page.is_closed()

Возвращает


keyboard

Добавлено до v1.9 page.keyboard

Использование

page.keyboard

Тип


main_frame

Добавлено до v1.9 page.main_frame

Главный фрейм страницы. У страницы всегда есть главный фрейм, который сохраняется при навигациях.

Использование

page.main_frame

Возвращает


mouse

Добавлено до v1.9 page.mouse

Использование

page.mouse

Тип


request

Добавлено в: v1.16 page.request

Вспомогательный API для тестирования запросов, связанный с этой страницей. Метод возвращает тот же экземпляр, что и browser_context.request в контексте страницы. Подробнее см. browser_context.request.

Использование

page.request

Тип


touchscreen

Добавлено до v1.9 page.touchscreen

Использование

page.touchscreen

Тип


url

Добавлено до v1.9 page.url

Использование

page.url

Возвращает


video

Добавлено до v1.9 page.video

Объект видео, связанный с этой страницей.

Использование

page.video

Возвращает


viewport_size

Добавлено до v1.9 page.viewport_size

Использование

page.viewport_size

Возвращает

  • NoneType | Dict#
    • width int

      ширина страницы в пикселях.

    • height int

      высота страницы в пикселях.


workers

Добавлено до v1.9 page.workers

Метод возвращает все выделенные WebWorkers, связанные со страницей.

примечание

ServiceWorker’ы сюда не входят

Использование

page.workers

Возвращает


События

on("close")

Добавлено до v1.9 page.on("close")

Испускается, когда страница закрывается.

Использование

page.on("close", handler)

Данные события


on("console")

Добавлено до v1.9 page.on("console")

Испускается, когда JavaScript на странице вызывает один из методов console API, например console.log или console.dir.

Аргументы, переданные в console.log, доступны в аргументе обработчика события ConsoleMessage.

Использование

def print_args(msg):
for arg in msg.args:
print(arg.json_value())

page.on("console", print_args)
page.evaluate("console.log('hello', 5, { foo: 'bar' })")

Данные события


on("crash")

Добавлено до v1.9 page.on("crash")

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

Наиболее распространённый способ обработки сбоев — перехват исключения:

try:
# сбой может произойти во время клика.
page.click("button")
# или во время ожидания события.
page.wait_for_event("popup")
except Error as e:
pass
# при сбое страницы сообщение исключения содержит "crash".

Использование

page.on("crash", handler)

Данные события


on("dialog")

Добавлено до v1.9 page.on("dialog")

Испускается при появлении JavaScript‑диалога, такого как alert, prompt, confirm или beforeunload. Обработчик обязан либо вызвать dialog.accept(), либо dialog.dismiss() — иначе страница зависнет в ожидании диалога, и такие действия, как клик, никогда не завершатся.

Использование

page.on("dialog", lambda dialog: dialog.accept())
примечание

Если отсутствуют обработчики page.on("dialog") или browser_context.on("dialog"), все диалоги автоматически отклоняются.

Данные события


on("domcontentloaded")

Добавлено в: v1.9 page.on("domcontentloaded")

Испускается при отправке JavaScript‑события DOMContentLoaded.

Использование

page.on("domcontentloaded", handler)

Данные события


on("download")

Добавлено до v1.9 page.on("download")

Испускается при начале загрузки вложения. Пользователь может выполнять базовые файловые операции с загруженным содержимым через переданный экземпляр Download.

Использование

page.on("download", handler)

Данные события


on("filechooser")

Добавлено в: v1.9 page.on("filechooser")

Испускается, когда должен появиться диалог выбора файла, например после клика по <input type=file>. Playwright может обработать его, установив файлы для загрузки с помощью file_chooser.set_files().

page.on("filechooser", lambda file_chooser: file_chooser.set_files("/tmp/myfile.pdf"))

Использование

page.on("filechooser", handler)

Данные события


on("frameattached")

Добавлено в: v1.9 page.on("frameattached")

Испускается при присоединении фрейма.

Использование

page.on("frameattached", handler)

Данные события


on("framedetached")

Добавлено в: v1.9 page.on("framedetached")

Срабатывает, когда фрейм был отсоединён.

Использование

page.on("framedetached", handler)

Данные события


on("framenavigated")

Добавлено в: v1.9 page.on("framenavigated")

Срабатывает, когда фрейм переходит на новый URL.

Использование

page.on("framenavigated", handler)

Данные события


on("load")

Добавлено до v1.9 page.on("load")

Срабатывает, когда происходит JavaScript‑событие load.

Использование

page.on("load", handler)

Данные события


on("pageerror")

Добавлено в: v1.9 page.on("pageerror")

Срабатывает, когда на странице происходит неперехваченное исключение.

# Логируем все неперехваченные ошибки в терминал
page.on("pageerror", lambda exc: print(f"uncaught exception: {exc}"))

# Переходим на страницу с исключением.
page.goto("data:text/html,<script>throw new Error('test')</script>")

Использование

page.on("pageerror", handler)

Данные события


on("popup")

Добавлено до v1.9 page.on("popup")

Срабатывает, когда страница открывает новую вкладку или окно. Это событие генерируется в дополнение к browser_context.on("page"), но только для всплывающих окон, относящихся к данной странице.

Самый ранний момент, когда страница доступна, — это момент, когда она перешла на начальный URL. Например, при открытии popup с помощью window.open('http://example.com') это событие будет сгенерировано, когда сетевой запрос к "http://example.com" завершится и его ответ начнёт загружаться во всплывающем окне. Если вы хотите маршрутизировать или отслеживать этот сетевой запрос, используйте browser_context.route() и browser_context.on("request") вместо аналогичных методов на уровне Page.

with page.expect_event("popup") as page_info:
page.get_by_text("open the popup").click()
popup = page_info.value
print(popup.evaluate("location.href"))
примечание

Используйте page.wait_for_load_state(), чтобы дождаться, пока страница достигнет определённого состояния загрузки (в большинстве случаев это не требуется).

Использование

page.on("popup", handler)

Данные события


on("request")

Добавлено до v1.9 page.on("request")

Срабатывает, когда страница отправляет запрос. Объект request доступен только для чтения. Чтобы перехватывать и изменять запросы, используйте page.route() или browser_context.route().

Использование

page.on("request", handler)

Данные события


on("requestfailed")

Добавлено в: v1.9 page.on("requestfailed")

Срабатывает, когда запрос завершается неудачно, например из‑за тайм‑аута.

page.on("requestfailed", lambda request: print(request.url + " " + request.failure.error_text))
примечание

HTTP‑ответы с ошибками, такие как 404 или 503, с точки зрения HTTP считаются успешными ответами, поэтому запрос завершится событием page.on("requestfinished"), а не page.on("requestfailed"). Запрос считается неудачным только в том случае, если клиент не может получить HTTP‑ответ от сервера, например из‑за сетевой ошибки net::ERR_FAILED.

Использование

page.on("requestfailed", handler)

Данные события


on("requestfinished")

Добавлено в: v1.9 page.on("requestfinished")

Срабатывает, когда запрос успешно завершается после загрузки тела ответа. Для успешного ответа последовательность событий выглядит так: request, response, requestfinished.

Использование

page.on("requestfinished", handler)

Данные события


on("response")

Добавлено до v1.9 page.on("response")

Срабатывает, когда для запроса получены статус и заголовки response. Для успешного ответа последовательность событий выглядит так: request, response, requestfinished.

Использование

page.on("response", handler)

Данные события


on("websocket")

Добавлено в: v1.9 page.on("websocket")

Срабатывает, когда отправляется запрос WebSocket.

Использование

page.on("websocket", handler)

Данные события


on("worker")

Добавлено до v1.9 page.on("worker")

Срабатывает, когда страница создаёт выделенный WebWorker.

Использование

page.on("worker", handler)

Данные события


Устаревшее

check

Добавлено до v1.9 page.check
Не рекомендуется

Используйте локатор‑ориентированный метод locator.check(). Подробнее см. про локаторы.

Этот метод отмечает элемент, соответствующий selector, выполняя следующие шаги:

  1. Находит элемент, соответствующий selector. Если такого элемента нет, ожидает, пока соответствующий элемент будет добавлен в DOM.
  2. Убеждается, что найденный элемент является чекбоксом или радиокнопкой. Если нет — метод выбрасывает исключение. Если элемент уже отмечен, метод сразу возвращается.
  3. Выполняет проверки actionability для найденного элемента, если не установлен параметр force. Если элемент отсоединяется во время проверок, всё действие повторяется.
  4. При необходимости прокручивает элемент в область видимости.
  5. Использует page.mouse, чтобы кликнуть по центру элемента.
  6. Убеждается, что элемент теперь отмечен. Если нет — метод выбрасывает исключение.

Если все шаги не завершились в течение указанного timeout, метод выбрасывает TimeoutError. Передача тайм‑аута 0 отключает ограничение по времени.

Использование

page.check(selector)
page.check(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • force bool (опционально)#

    Нужно ли обходить проверки actionability. По умолчанию false.

  • no_wait_after bool (опционально)#

    Устарело

    Эта опция не влияет на поведение.

    Эта опция не влияет на поведение.

  • position Dict (опционально) Добавлено в: v1.11#

    Точка относительно верхнего левого угла padding-box элемента. Если не указана, используется какая-то видимая точка элемента.

  • strict bool (опционально) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор однозначно соответствовал одному элементу. Если селектор соответствует более чем одному элементу, вызов выбрасывает исключение.

  • timeout float (опционально)#

    Максимальное время в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

  • trial bool (опционально) Добавлено в: v1.11#

    Если задано, метод выполняет только проверки actionability и пропускает само действие. По умолчанию false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его.

Возвращает


click

Добавлено до v1.9 page.click
Не рекомендуется

Вместо этого используйте вариант на основе локаторов: locator.click(). Подробнее о локаторах.

Этот метод кликает по элементу, соответствующему selector, выполняя следующие шаги:

  1. Находит элемент, соответствующий selector. Если такого элемента нет, ждёт, пока соответствующий элемент будет добавлен в DOM.
  2. Ожидает прохождения проверок actionability для найденного элемента, если не задана опция force. Если во время проверок элемент будет удалён из DOM, всё действие будет повторено.
  3. При необходимости прокручивает страницу так, чтобы элемент оказался в области видимости.
  4. Использует page.mouse, чтобы кликнуть по центру элемента или по указанной position.
  5. Ожидает, пока инициированные переходы (navigation) завершатся успехом или ошибкой, если не задана опция no_wait_after.

Если все шаги в совокупности не завершились за указанное время timeout, метод выбрасывает TimeoutError. Передайте нулевой таймаут, чтобы отключить его.

Использование

page.click(selector)
page.click(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • button "left" | "right" | "middle" (опционально)#

    По умолчанию left.

  • click_count int (опционально)#

    По умолчанию 1. См. UIEvent.detail.

  • delay float (опционально)#

    Время ожидания между mousedown и mouseup в миллисекундах. По умолчанию 0.

  • force bool (опционально)#

    Нужно ли обходить проверки actionability. По умолчанию false.

  • modifiers List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (опционально)#

    Модификаторы клавиш, которые нужно зажать. Гарантирует, что во время операции будут нажаты только эти модификаторы, а затем восстанавливает прежнее состояние модификаторов. Если не указано, используются модификаторы, нажатые в данный момент. "ControlOrMeta" соответствует "Control" в Windows и Linux и "Meta" в macOS.

  • no_wait_after bool (опционально)#

    Устарело

    В будущем значение этой опции по умолчанию станет true.

    Действия, которые инициируют переходы (navigation), ждут, пока эти переходы произойдут и страницы начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Обычно он нужен только в исключительных случаях, например при переходе на недоступные страницы. По умолчанию false.

  • position Dict (опционально)#

    Точка относительно верхнего левого угла padding-box элемента. Если не указана, используется какая-то видимая точка элемента.

  • strict bool (опционально) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор однозначно соответствовал одному элементу. Если селектор соответствует более чем одному элементу, вызов выбрасывает исключение.

  • timeout float (опционально)#

    Максимальное время в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

  • trial bool (опционально) Добавлено в: v1.11#

    Если задано, метод выполняет только проверки actionability и пропускает само действие. По умолчанию false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его. Обратите внимание: модификаторы клавиатуры modifiers будут нажаты независимо от trial, чтобы можно было тестировать элементы, которые видимы только при нажатых этих клавишах.

Возвращает


dblclick

Добавлено до v1.9 page.dblclick
Не рекомендуется

Вместо этого используйте вариант на основе локаторов: locator.dblclick(). Подробнее о локаторах.

Этот метод делает двойной клик по элементу, соответствующему selector, выполняя следующие шаги:

  1. Находит элемент, соответствующий selector. Если такого элемента нет, ждёт, пока соответствующий элемент будет добавлен в DOM.
  2. Ожидает прохождения проверок actionability для найденного элемента, если не задана опция force. Если во время проверок элемент будет удалён из DOM, всё действие будет повторено.
  3. При необходимости прокручивает страницу так, чтобы элемент оказался в области видимости.
  4. Использует page.mouse, чтобы сделать двойной клик по центру элемента или по указанной position.

Если все шаги в совокупности не завершились за указанное время timeout, метод выбрасывает TimeoutError. Передайте нулевой таймаут, чтобы отключить его.

примечание

page.dblclick() отправляет два события click и одно событие dblclick.

Использование

page.dblclick(selector)
page.dblclick(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • button "left" | "right" | "middle" (опционально)#

    По умолчанию left.

  • delay float (опционально)#

    Время ожидания между mousedown и mouseup в миллисекундах. По умолчанию 0.

  • force bool (опционально)#

    Нужно ли обходить проверки actionability. По умолчанию false.

  • modifiers List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (опционально)#

    Модификаторы клавиш, которые нужно зажать. Гарантирует, что во время операции будут нажаты только эти модификаторы, а затем восстанавливает прежнее состояние модификаторов. Если не указано, используются модификаторы, нажатые в данный момент. "ControlOrMeta" соответствует "Control" в Windows и Linux и "Meta" в macOS.

  • no_wait_after bool (опционально)#

    Устарело

    Эта опция не влияет на поведение.

    Эта опция не влияет на поведение.

  • position Dict (опционально)#

    Точка относительно верхнего левого угла padding-box элемента. Если не указана, используется какая-то видимая точка элемента.

  • strict bool (опционально) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор однозначно соответствовал одному элементу. Если селектор соответствует более чем одному элементу, вызов выбрасывает исключение.

  • timeout float (опционально)#

    Максимальное время в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

  • trial bool (опционально) Добавлено в: v1.11#

    Если задано, метод выполняет только проверки actionability и пропускает само действие. По умолчанию false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его. Обратите внимание: модификаторы клавиатуры modifiers будут нажаты независимо от trial, чтобы можно было тестировать элементы, которые видимы только при нажатых этих клавишах.

Возвращает


dispatch_event

Добавлено до v1.9 page.dispatch_event
Не рекомендуется

Вместо этого используйте вариант на основе локаторов: locator.dispatch_event(). Подробнее о локаторах.

Фрагмент ниже отправляет событие click элементу. Независимо от того, видим элемент или нет, событие click будет отправлено. Это эквивалентно вызову element.click().

Использование

page.dispatch_event("button#submit", "click")

Внутри метод создаёт экземпляр события на основе указанного type, инициализирует его свойствами event_init и отправляет его на элемент. По умолчанию события являются composed, cancelable и всплывают (bubble).

Поскольку event_init зависит от конкретного события, список начальных свойств смотрите в документации по событиям:

Также вы можете указать JSHandle в качестве значения свойства, если хотите передать в событие «живые» объекты:

# обратите внимание: создать data_transfer можно только в Chromium и Firefox
data_transfer = page.evaluate_handle("new DataTransfer()")
page.dispatch_event("#source", "dragstart", { "dataTransfer": data_transfer })

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • type str#

    Тип DOM‑события: "click", "dragstart" и т. д.

  • event_init EvaluationArgument (необязательно)#

    Необязательные свойства инициализации события, специфичные для конкретного события.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


eval_on_selector

Добавлено в: v1.9 page.eval_on_selector
Не рекомендуется

Этот метод не ожидает, пока элемент пройдет проверки пригодности к действию (actionability), и поэтому может приводить к нестабильным тестам. Вместо этого используйте locator.evaluate(), другие вспомогательные методы Locator или web-first ассерты.

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

Если expression возвращает Promise, то page.eval_on_selector() будет ожидать его разрешения и вернет результат.

Использование

search_value = page.eval_on_selector("#search", "el => el.value")
preload_href = page.eval_on_selector("link[rel=preload]", "el => el.href")
html = page.eval_on_selector(".main-container", "(e, suffix) => e.outer_html + suffix", "hello")

Аргументы

  • selector str#

    Селектор для поиска элемента.

  • expression str#

    JavaScript‑выражение, которое будет выполнено в контексте браузера. Если выражение вычисляется в функцию, функция будет автоматически вызвана.

  • arg EvaluationArgument (необязательно)#

    Необязательный аргумент, передаваемый в expression.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

Возвращает


eval_on_selector_all

Добавлено в: v1.9 page.eval_on_selector_all
Не рекомендуется

В большинстве случаев locator.evaluate_all(), другие вспомогательные методы Locator и web-first ассерты работают лучше.

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

Если expression возвращает Promise, то page.eval_on_selector_all() будет ожидать его разрешения и вернет результат.

Использование

div_counts = page.eval_on_selector_all("div", "(divs, min) => divs.length >= min", 10)

Аргументы

  • selector str#

    Селектор для поиска элементов.

  • expression str#

    JavaScript‑выражение, которое будет выполнено в контексте браузера. Если выражение вычисляется в функцию, функция будет автоматически вызвана.

  • arg EvaluationArgument (необязательно)#

    Необязательный аргумент, передаваемый в expression.

Возвращает


expect_navigation

Добавлено до v1.9 page.expect_navigation
Устаревший

Этот метод по своей природе подвержен состояниям гонки. Пожалуйста, используйте page.wait_for_url() вместо него.

Ожидает навигацию основного фрейма и возвращает ответ основного ресурса. В случае нескольких редиректов навигация завершится с ответом последнего редиректа. В случае навигации к другому якорю или навигации из‑за использования History API, навигация завершится со значением null.

Использование

Метод завершается, когда страница переходит на новый URL или перезагружается. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию, например, клик по элементу с обработчиком onclick, который запускает навигацию через setTimeout. Рассмотрим пример:

with page.expect_navigation():
# Это действие запускает навигацию после тайм-аута.
page.get_by_text("Navigate after timeout").click()
# Завершается после окончания навигации
примечание

Использование History API для изменения URL считается навигацией.

Аргументы

  • timeout float (необязательно)#

    Максимальное время выполнения операции в миллисекундах, по умолчанию 30 секунд. Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout().

  • url str | Pattern | Callable[URL]:bool (необязательно)#

    Glob‑шаблон, регулярное выражение или предикат, принимающий URL, для сопоставления во время ожидания навигации. Обратите внимание: если параметр — строка без подстановочных символов, метод будет ожидать навигацию ровно к этому URL.

  • wait_until "load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)#

    Когда считать операцию успешно завершенной. По умолчанию load. Возможные события:

    • 'domcontentloaded' — считать операцию завершенной, когда сработает событие DOMContentLoaded.
    • 'load' — считать операцию завершенной, когда сработает событие load.
    • 'networkidle'НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений как минимум 500 мс. Не используйте это для тестирования, вместо этого полагайтесь на web‑ассерты.
    • 'commit' — считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.

Возвращает


fill

Добавлено до v1.9 page.fill
Не рекомендуется

Используйте вариант на основе локаторов — locator.fill(). Подробнее о локаторах.

Метод ожидает элемент, соответствующий selector, выполняет проверки actionability, фокусирует элемент, заполняет его и после заполнения инициирует событие input. Обратите внимание, что вы можете передать пустую строку, чтобы очистить поле ввода.

Если целевой элемент не является <input>, <textarea> или [contenteditable], метод выбрасывает ошибку. Однако если элемент находится внутри <label>, который имеет связанный control, будет заполнен именно этот control.

Для отправки более тонких событий клавиатуры используйте locator.press_sequentially().

Использование

page.fill(selector, value)
page.fill(selector, value, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • value str#

    Значение для заполнения элемента <input>, <textarea> или [contenteditable].

  • force bool (необязательно) Добавлено в: v1.13#

    Нужно ли обходить проверки actionability. По умолчанию false.

  • no_wait_after bool (необязательно)#

    Устаревший

    Этот параметр не имеет эффекта.

    Этот параметр не имеет эффекта.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


focus

Добавлено до v1.9 page.focus
Не рекомендуется

Используйте вариант на основе локаторов — locator.focus(). Подробнее о локаторах.

Метод получает элемент по selector и фокусирует его. Если элемент, соответствующий selector, отсутствует, метод будет ждать, пока такой элемент появится в DOM.

Использование

page.focus(selector)
page.focus(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


get_attribute

Добавлено до v1.9 page.get_attribute
Не рекомендуется

Используйте вариант на основе локаторов — locator.get_attribute(). Подробнее о локаторах.

Возвращает значение атрибута элемента.

Использование

page.get_attribute(selector, name)
page.get_attribute(selector, name, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • name str#

    Имя атрибута, значение которого нужно получить.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


hover

Добавлено до v1.9 page.hover
Не рекомендуется

Используйте вариант на основе локаторов — locator.hover(). Подробнее о локаторах.

Метод наводит курсор на элемент, соответствующий selector, выполняя следующие шаги:

  1. Найти элемент, соответствующий selector. Если такого элемента нет, ожидать, пока он будет прикреплен к DOM.
  2. Ожидать прохождения проверок actionability для найденного элемента, если не установлен параметр force. Если элемент будет отсоединен во время проверок, все действие будет повторено.
  3. Прокрутить элемент в область видимости при необходимости.
  4. Использовать page.mouse для наведения курсора на центр элемента или в указанную position.

Если все шаги в совокупности не завершатся в течение указанного timeout, метод выбросит TimeoutError. Передача нулевого таймаута отключает это поведение.

Использование

page.hover(selector)
page.hover(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • force bool (необязательно)#

    Нужно ли обходить проверки actionability. По умолчанию false.

  • modifiers List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (необязательно)#

    Клавиши‑модификаторы, которые нужно зажать. Обеспечивает, что во время операции нажаты только эти модификаторы, а затем восстанавливает текущее состояние модификаторов. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" соответствует "Control" на Windows и Linux и "Meta" на macOS.

  • no_wait_after bool (необязательно) Добавлено в: v1.28#

    Устаревший

    Этот параметр не имеет эффекта.

    Этот параметр не имеет эффекта.

  • position Dict (необязательно)#

    Точка, используемая относительно верхнего левого угла padding‑бокса элемента. Если не указана, используется какая‑либо видимая точка элемента.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

  • trial bool (необязательно) Добавлено в: v1.11#

    Если установлено, метод выполняет только проверки actionability и пропускает само действие. По умолчанию false. Полезно для ожидания готовности элемента к действию без его выполнения. Обратите внимание, что клавиатурные modifiers будут нажаты независимо от trial, чтобы позволить тестировать элементы, видимые только при зажатых клавишах.

Возвращает


inner_html

Добавлено до v1.9 page.inner_html
Не рекомендуется

Используйте вариант на основе локаторов — locator.inner_html(). Подробнее о локаторах.

Возвращает element.innerHTML.

Использование

page.inner_html(selector)
page.inner_html(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


inner_text

Добавлено до v1.9 page.inner_text
Не рекомендуется

Используйте вариант на основе локаторов — locator.inner_text(). Подробнее о локаторах.

Возвращает element.innerText.

Использование

page.inner_text(selector)
page.inner_text(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


input_value

Добавлено в: v1.13 page.input_value
Не рекомендуется

Используйте вариант на основе локаторов — locator.input_value(). Подробнее о локаторах.

Возвращает input.value для выбранного элемента <input>, <textarea> или <select>.

Для элементов, не являющихся полями ввода, метод выбрасывает исключение. Однако если элемент находится внутри <label>, который имеет связанный control, возвращается значение этого control.

Использование

page.input_value(selector)
page.input_value(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


is_checked

Добавлено до v1.9 page.is_checked
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.is_checked(). Подробнее о локаторах.

Возвращает, отмечен ли элемент. Генерирует исключение, если элемент не является чекбоксом или radio-инпутом.

Использование

page.is_checked(selector)
page.is_checked(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


is_disabled

Добавлено до v1.9 page.is_disabled
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.is_disabled(). Подробнее о локаторах.

Возвращает, отключён ли элемент — противоположность состоянию enabled.

Использование

page.is_disabled(selector)
page.is_disabled(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


is_editable

Добавлено до v1.9 page.is_editable
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.is_editable(). Подробнее о локаторах.

Возвращает, является ли элемент редактируемым.

Использование

page.is_editable(selector)
page.is_editable(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


is_enabled

Добавлено до v1.9 page.is_enabled
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.is_enabled(). Подробнее о локаторах.

Возвращает, находится ли элемент в состоянии enabled.

Использование

page.is_enabled(selector)
page.is_enabled(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


is_hidden

Добавлено до v1.9 page.is_hidden
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.is_hidden(). Подробнее о локаторах.

Возвращает, скрыт ли элемент — противоположность состоянию visible. selector, который не соответствует ни одному элементу, считается скрытым.

Использование

page.is_hidden(selector)
page.is_hidden(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Устарело

    Этот параметр игнорируется. page.is_hidden() не ожидает, пока элемент станет скрытым, и возвращает результат немедленно.

Возвращает


is_visible

Добавлено до v1.9 page.is_visible
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.is_visible(). Подробнее о локаторах.

Возвращает, является ли элемент видимым. selector, который не соответствует ни одному элементу, считается невидимым.

Использование

page.is_visible(selector)
page.is_visible(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Устарело

    Этот параметр игнорируется. page.is_visible() не ожидает, пока элемент станет видимым, и возвращает результат немедленно.

Возвращает


press

Добавлено до v1.9 page.press
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.press(). Подробнее о локаторах.

Фокусирует элемент, а затем использует keyboard.down() и keyboard.up().

Параметр key может задавать предполагаемое значение keyboardEvent.key или одиночный символ для генерации текста. Расширенный список допустимых значений key можно найти здесь. Примеры клавиш:

F1 - F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight, ArrowUp и т.д.

Также поддерживаются сочетания с модификаторами: Shift, Control, Alt, Meta, ShiftLeft, ControlOrMeta. ControlOrMeta соответствует Control на Windows и Linux и Meta на macOS.

Удерживание Shift приведёт к вводу текста, соответствующего значению key в верхнем регистре.

Если key — это одиночный символ, регистр учитывается, поэтому значения a и A сгенерируют разный текст.

Также поддерживаются сочетания клавиш, такие как key: "Control+o", key: "Control++" или key: "Control+Shift+T". При указании модификатора он нажимается и удерживается во время нажатия последующей клавиши.

Использование

page = browser.new_page()
page.goto("https://keycode.info")
page.press("body", "A")
page.screenshot(path="a.png")
page.press("body", "ArrowLeft")
page.screenshot(path="arrow_left.png")
page.press("body", "Shift+O")
page.screenshot(path="o.png")
browser.close()

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • key str#

    Имя клавиши для нажатия или символ для генерации, например ArrowLeft или a.

  • delay float (необязательно)#

    Время ожидания между событиями keydown и keyup в миллисекундах. По умолчанию 0.

  • no_wait_after bool (необязательно)#

    Устарело

    В будущем значение по умолчанию для этого параметра будет true.

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

  • strict bool (необязательно) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


query_selector

Добавлено в: v1.9 page.query_selector
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — page.locator(). Подробнее о локаторах.

Метод находит элемент на странице, соответствующий указанному селектору. Если ни один элемент не соответствует селектору, возвращаемое значение будет null. Чтобы ожидать появления элемента на странице, используйте locator.wait_for().

Использование

page.query_selector(selector)
page.query_selector(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

Возвращает


query_selector_all

Добавлено в: v1.9 page.query_selector_all
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — page.locator(). Подробнее о локаторах.

Метод находит все элементы на странице, соответствующие указанному селектору. Если ни один элемент не соответствует селектору, возвращаемое значение будет [].

Использование

page.query_selector_all(selector)

Аргументы

  • selector str#

    Селектор для поиска.

Возвращает


select_option

Добавлено до v1.9 page.select_option
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.select_option(). Подробнее о локаторах.

Метод ожидает появления элемента, соответствующего selector, выполняет проверки actionability, ожидает, пока все указанные опции появятся в элементе <select>, и выбирает эти опции.

Если целевой элемент не является <select>, метод выбрасывает ошибку. Однако если элемент находится внутри элемента <label>, который имеет связанный control, вместо него будет использован соответствующий control.

Возвращает массив значений опций, которые были успешно выбраны.

После выбора всех переданных опций инициирует события change и input.

Использование

# Одиночный выбор по значению или метке
page.select_option("select#colors", "blue")
# одиночный выбор по метке
page.select_option("select#colors", label="blue")
# множественный выбор
page.select_option("select#colors", value=["red", "green", "blue"])

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • force bool (необязательно) Добавлено в: v1.13#

    Нужно ли обходить проверки actionability. По умолчанию false.

  • no_wait_after bool (необязательно)#

    Устарело

    Этот параметр не имеет эффекта.

    Этот параметр не имеет эффекта.

  • strict bool (необязательно) Добавлено в: v1.14#

    Если true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

  • element ElementHandle | List[ElementHandle] (необязательно)#

    Элементы опций для выбора. Необязательно.

  • index int | List[int] (необязательно)#

    Опции для выбора по индексу. Необязательно.

  • value str | List[str] (необязательно)#

    Опции для выбора по значению. Если <select> имеет атрибут multiple, будут выбраны все переданные опции, иначе будет выбрана только первая опция, соответствующая одному из переданных значений. Необязательно.

  • label str | List[str] (необязательно)#

    Опции для выбора по метке. Если <select> имеет атрибут multiple, будут выбраны все переданные опции, иначе будет выбрана только первая опция, соответствующая одной из переданных меток. Необязательно.

Возвращает


set_checked

Добавлено в: v1.15 page.set_checked
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.set_checked(). Подробнее о локаторах.

Метод отмечает или снимает отметку с элемента, соответствующего selector, выполняя следующие шаги:

  1. Находит элемент, соответствующий selector. Если такого элемента нет, ожидает, пока подходящий элемент будет добавлен в DOM.
  2. Убеждается, что найденный элемент является чекбоксом или radio-инпутом. В противном случае метод выбрасывает ошибку.
  3. Если элемент уже находится в требуемом состоянии (отмечен или не отмечен), метод немедленно возвращает управление.
  4. Ожидает прохождения проверок actionability для найденного элемента, если не задан параметр force. Если элемент будет отсоединён во время проверок, всё действие будет повторено.
  5. Прокручивает элемент в область видимости при необходимости.
  6. Использует page.mouse для клика в центр элемента.
  7. Убеждается, что элемент теперь отмечен или не отмечен. В противном случае метод выбрасывает ошибку.

Если все шаги не были завершены в течение указанного timeout, метод выбрасывает TimeoutError. Передача таймаута 0 отключает это поведение.

Использование

page.set_checked(selector, checked)
page.set_checked(selector, checked, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • checked bool#

    Нужно ли установить или снять отметку с чекбокса.

  • force bool (необязательно)#

    Нужно ли обходить проверки actionability. По умолчанию false.

  • no_wait_after bool (необязательно)#

    Устарело

    Этот параметр не имеет эффекта.

    Этот параметр не имеет эффекта.

  • position Dict (необязательно)#

    Точка относительно левого верхнего угла области padding элемента. Если не указано, используется некоторая видимая точка элемента.

  • strict bool (необязательно)#

    Если true, вызов требует, чтобы селектор разрешался ровно в один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательно)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

  • trial bool (необязательно)#

    Если задано, метод выполняет только проверки actionability и пропускает само действие. По умолчанию false. Полезно для ожидания готовности элемента к действию без его выполнения.

Возвращает


set_input_files

Добавлено до v1.9 page.set_input_files
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.set_input_files(). Подробнее о локаторах.

Устанавливает значение поля ввода файлов в указанные пути к файлам или файлы. Если некоторые из filePaths являются относительными путями, они будут разрешены относительно текущего рабочего каталога. Для пустого массива очищает выбранные файлы. Для полей ввода с атрибутом [webkitdirectory] поддерживается только один путь к каталогу.

Этот метод ожидает, что selector указывает на элемент input. Однако если элемент находится внутри элемента <label>, который имеет связанный control, в качестве цели используется именно control.

Использование

page.set_input_files(selector, files)
page.set_input_files(selector, files, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • files Union[str, pathlib.Path] | List[Union[str, pathlib.Path]] | Dict | List[Dict]#

    • name str

      Имя файла

    • mimeType str

      Тип файла

    • buffer bytes

      Содержимое файла

  • no_wait_after bool (необязательный)#

    Устарело

    Этот параметр не имеет эффекта.

    Этот параметр не имеет эффекта.

  • strict bool (необязательный) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор однозначно указывал на один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательный)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


tap

Добавлено до v1.9 page.tap
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.tap(). Подробнее о локаторах.

Этот метод выполняет касание (tap) элемента, соответствующего selector, выполняя следующие шаги:

  1. Находит элемент, соответствующий selector. Если такого элемента нет, ожидает, пока соответствующий элемент будет добавлен в DOM.
  2. Ожидает прохождения проверок actionability для найденного элемента, если не установлен параметр force. Если элемент будет отсоединён во время проверок, вся операция будет повторена.
  3. Прокручивает элемент в область видимости при необходимости.
  4. Использует page.touchscreen для касания центра элемента или указанной position.

Если все шаги не завершатся в течение указанного timeout, метод выбросит TimeoutError. Передача таймаута 0 отключает ограничение по времени.

примечание

Метод page.tap() выбросит исключение, если параметр has_touch контекста браузера равен false.

Использование

page.tap(selector)
page.tap(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • force bool (необязательный)#

    Следует ли обходить проверки actionability. По умолчанию false.

  • modifiers List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (необязательный)#

    Клавиши-модификаторы, которые нужно зажать. Гарантирует, что во время операции будут нажаты только эти модификаторы, а затем восстановит текущее состояние. Если не указано, используются уже нажатые модификаторы. "ControlOrMeta" соответствует "Control" на Windows и Linux и "Meta" на macOS.

  • no_wait_after bool (необязательный)#

    Устарело

    Этот параметр не имеет эффекта.

    Этот параметр не имеет эффекта.

  • position Dict (необязательный)#

    Точка относительно левого верхнего угла области padding элемента. Если не указано, используется некоторая видимая точка элемента.

  • strict bool (необязательный) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор однозначно указывал на один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательный)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

  • trial bool (необязательный) Добавлено в: v1.11#

    Если установлено, метод выполняет только проверки actionability и пропускает само действие. По умолчанию false. Полезно для ожидания готовности элемента к действию без его выполнения. Обратите внимание, что клавиатурные modifiers будут нажаты независимо от значения trial, чтобы позволить тестировать элементы, которые видимы только при нажатых клавишах.

Возвращает


text_content

Добавлено до v1.9 page.text_content
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.text_content(). Подробнее о локаторах.

Возвращает element.textContent.

Использование

page.text_content(selector)
page.text_content(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • strict bool (необязательный) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор однозначно указывал на один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательный)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


type

Добавлено до v1.9 page.type
Устарело

В большинстве случаев следует использовать locator.fill(). Нажимать клавиши по одной нужно только при наличии специальной обработки клавиатуры на странице — в этом случае используйте locator.press_sequentially().

Отправляет события keydown, keypress/input и keyup для каждого символа в тексте. page.type можно использовать для отправки детализированных событий клавиатуры. Для заполнения значений в полях формы используйте page.fill().

Чтобы нажать специальную клавишу, такую как Control или ArrowDown, используйте keyboard.press().

Использование

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • text str#

    Текст, который нужно ввести в сфокусированный элемент.

  • delay float (необязательный)#

    Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию 0.

  • no_wait_after bool (необязательный)#

    Устарело

    Этот параметр не имеет эффекта.

    Этот параметр не имеет эффекта.

  • strict bool (необязательный) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор однозначно указывал на один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательный)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


uncheck

Добавлено до v1.9 page.uncheck
Не рекомендуется

Вместо этого используйте вариант на основе локаторов — locator.uncheck(). Подробнее о локаторах.

Этот метод снимает отметку с элемента, соответствующего selector, выполняя следующие шаги:

  1. Находит элемент, соответствующий selector. Если такого элемента нет, ожидает, пока соответствующий элемент будет добавлен в DOM.
  2. Убеждается, что найденный элемент является чекбоксом или radio-кнопкой. Если это не так, метод выбросит исключение. Если элемент уже не отмечен, метод сразу возвращается.
  3. Ожидает прохождения проверок actionability для найденного элемента, если не установлен параметр force. Если элемент будет отсоединён во время проверок, вся операция будет повторена.
  4. Прокручивает элемент в область видимости при необходимости.
  5. Использует page.mouse для клика по центру элемента.
  6. Убеждается, что элемент теперь не отмечен. Если это не так, метод выбросит исключение.

Если все шаги не завершатся в течение указанного timeout, метод выбросит TimeoutError. Передача таймаута 0 отключает ограничение по времени.

Использование

page.uncheck(selector)
page.uncheck(selector, **kwargs)

Аргументы

  • selector str#

    Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.

  • force bool (необязательный)#

    Следует ли обходить проверки actionability. По умолчанию false.

  • no_wait_after bool (необязательный)#

    Устарело

    Этот параметр не имеет эффекта.

    Этот параметр не имеет эффекта.

  • position Dict (необязательный) Добавлено в: v1.11#

    Точка относительно левого верхнего угла области padding элемента. Если не указано, используется некоторая видимая точка элемента.

  • strict bool (необязательный) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор однозначно указывал на один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательный)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

  • trial bool (необязательный) Добавлено в: v1.11#

    Если установлено, метод выполняет только проверки actionability и пропускает само действие. По умолчанию false. Полезно для ожидания готовности элемента к действию без его выполнения.

Возвращает


wait_for_selector

Добавлено до v1.9 page.wait_for_selector
Не рекомендуется

Вместо этого используйте веб-ассерты, проверяющие видимость, или вариант на основе локаторов — locator.wait_for(). Подробнее о локаторах.

Возвращается, когда элемент, указанный селектором, удовлетворяет параметру state. Возвращает null при ожидании состояний hidden или detached.

примечание

Playwright автоматически ожидает готовности элемента перед выполнением действия. Использование объектов Locator и web-first ассертов позволяет обходиться без wait_for_selector.

Ожидает, пока selector удовлетворит параметру state (появится/исчезнет из DOM или станет видимым/скрытым). Если на момент вызова метода селектор уже удовлетворяет условию, метод вернётся сразу. Если селектор не удовлетворит условию в течение timeout миллисекунд, будет выброшено исключение.

Использование

Этот метод работает между навигациями:

from playwright.sync_api import sync_playwright, Playwright

def run(playwright: Playwright):
chromium = playwright.chromium
browser = chromium.launch()
page = browser.new_page()
for current_url in ["https://google.com", "https://bbc.com"]:
page.goto(current_url, wait_until="domcontentloaded")
element = page.wait_for_selector("img")
print("Loaded image: " + str(element.get_attribute("src")))
browser.close()

with sync_playwright() as playwright:
run(playwright)

Аргументы

  • selector str#

    Селектор для поиска.

  • state "attached" | "detached" | "visible" | "hidden" (необязательный)#

    По умолчанию 'visible'. Возможные значения:

    • 'attached' — ожидать, пока элемент появится в DOM.
    • 'detached' — ожидать, пока элемент исчезнет из DOM.
    • 'visible' — ожидать, пока элемент будет иметь ненулевой bounding box и не будет иметь visibility:hidden. Обратите внимание, что элемент без содержимого или с display:none имеет пустой bounding box и не считается видимым.
    • 'hidden' — ожидать, пока элемент будет либо отсоединён от DOM, либо иметь пустой bounding box, либо visibility:hidden. Это противоположно значению 'visible'.
  • strict bool (необязательный) Добавлено в: v1.14#

    Если установлено в true, вызов требует, чтобы селектор однозначно указывал на один элемент. Если селектор соответствует более чем одному элементу, будет выброшено исключение.

  • timeout float (необязательный)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов browser_context.set_default_timeout() или page.set_default_timeout().

Возвращает


wait_for_timeout

Добавлено до v1.9 page.wait_for_timeout
Не рекомендуется

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

Ожидает указанный timeout в миллисекундах.

Обратите внимание, что page.waitForTimeout() следует использовать только для отладки. Тесты, использующие таймер в продакшене, будут нестабильными. Вместо этого используйте сигналы, такие как сетевые события, появление элементов и другие.

Использование

# ждать 1 секунду
page.wait_for_timeout(1000)

Аргументы

  • timeout float#

    Таймаут, который нужно ожидать

Возвращает