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

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 генерирует различные события (описанные ниже), которые могут быть обработаны с использованием любых методов нативного EventEmitter в Node, таких как 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)
# позже...
page.remove_listener("request", log_request)

Методы

add_init_script

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

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

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

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

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

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

// preload.js
Math.random = () => 42;
# в вашем скрипте playwright, предполагая, что файл preload.js находится в той же директории
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

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

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

Вещи, которые нужно учитывать:

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

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

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

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

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

Пример, который закрывает диалог "Подписаться на рассылку", когда он появляется:

# Настройка обработчика.
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)

# Напишите тест как обычно.
page.goto("https://example.com")
page.get_by_role("button", name="Start here").click()

Пример, который пропускает страницу "Подтвердите свои данные безопасности", когда она показывается:

# Настройка обработчика.
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)

# Напишите тест как обычно.
page.goto("https://example.com")
page.get_by_role("button", name="Start here").click()

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

# Настройка обработчика.
def handler():
page.evaluate("window.removeObstructionsForTestIfNeeded()")
page.add_locator_handler(page.locator("body"), handler, no_wait_after=True)

# Напишите тест как обычно.
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]#

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

  • 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.

Возвращает


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")
# или укажите точные позиции относительно верхнего левого угла элементов:
page.drag_and_drop(
"#source",
"#target",
source_position={"x": 34, "y": 7},
target_position={"x": 10, "y": 20}
)

Аргументы

  • source str#

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

  • target str#

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

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

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

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

    Устарело

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

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

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

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

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

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

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

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

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

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

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

    Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию 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

Возвращает значение вызова выражения.

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

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

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

Передача аргумента в выражение:

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 (опционально)#

    Опциональный аргумент для передачи в выражение.

Возвращает


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 не будет зарегистрировано на странице. Если предоставлен предикат, он передает значение ConsoleMessage в функцию predicate и ожидает, пока 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. Если предоставлен предикат, он передает значение Download в функцию predicate и ожидает, пока 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. Если предоставлен предикат, он передает значение FileChooser в функцию predicate и ожидает, пока 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. Если предоставлен предикат, он передает значение [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

# или с использованием лямбда-функции
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 не завершит загрузку. Если предоставлен предикат, он передает значение 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

или с использованием лямбда-функции

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


</TabItem>
<TabItem value="async">

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

# или с использованием лямбда-функции
async with page.expect_response(lambda response: response.url == "https://example.com" and response.status == 200 and response.request.method == "get") as response_info:
await page.get_by_text("trigger response").click()
response = await 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. Если предикат предоставлен, он передает значение 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. Если предикат предоставлен, он передает значение 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#

    Функция обратного вызова, которая будет вызвана в контексте 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#

    Функция обратного вызова, которая будет вызвана в контексте 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 (опционально)#

    Глобальный шаблон, регулярное выражение или предикат, принимающий URL фрейма как объект URL. Опционально.

Возвращает


frame_locator

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

При работе с iframes вы можете создать локатор фрейма, который войдет в iframe и позволит выбирать элементы в этом 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 для управления этим поведением.

    Узнайте больше о доступном имени.

  • 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>

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

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

Аргументы

  • test_id str | Pattern#

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

Возвращает

Детали

По умолчанию, атрибут data-testid используется как тестовый идентификатор. Используйте 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.

примечание

Режим без головы не поддерживает навигацию к 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#

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

  • has_text str | Pattern (опционально)#

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

Возвращает


opener

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

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

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

page.opener()

Возвращает


pause

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

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

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

примечание

Этот метод требует, чтобы Playwright был запущен в режиме с интерфейсом, с ложным значением headless.

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

page.pause()

Возвращает


pdf

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

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

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

примечание

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

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

# генерирует PDF с типом медиа "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. Теги скриптов внутри шаблонов не оцениваются. > 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#

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

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

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

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

    Путь к файлу для сохранения PDF. Если path является относительным путем, то он разрешается относительно текущей рабочей директории. Если путь не предоставлен, 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 (опционально)#

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

Возвращает


перезагрузка

Добавлено до 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. Проверьте, что слабая ссылка не ссылается на оригинальный объект.
assert page.evaluate("!globalThis.suspectWeakRef.deref()")

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

page.request_gc()

Возвращает


route

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

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

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

примечание

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

примечание

page.route() не будет перехватывать запросы, перехваченные Service Worker. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив 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#

    Глобальный шаблон, регулярное выражение или предикат, получающий 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 не будет обслуживать запросы, перехваченные Service Worker, из HAR-файла. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив service_workers в 'block'.

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

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

Аргументы

  • har Union[str, pathlib.Path]#

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

  • 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. Это исключает размеры, время, страницу, куки, безопасность и другие типы информации HAR, которые не используются при воспроизведении из HAR. По умолчанию minimal.

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

    Глобальный шаблон, регулярное выражение или предикат для сопоставления 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.

Возвращает


скриншот

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

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

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

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

Аргументы

  • animations "disabled" | "allow" (опционально)#

    При установке в "disabled", останавливает CSS-анимации, CSS-переходы и веб-анимации. Анимации получают разное обращение в зависимости от их продолжительности:

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

    По умолчанию "allow", что оставляет анимации нетронутыми.

  • caret "hide" | "initial" (опционально)#

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

  • clip Dict (опционально)#

    • x float

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

    • y float

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

    • width float

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

    • height float

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

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

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

    Если установлено в true, делает скриншот всей прокручиваемой страницы, вместо текущей видимой области. По умолчанию 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-пиксель на странице. Для устройств с высоким разрешением это позволит сохранить скриншоты небольшими. Использование опции "device" создаст один пиксель на каждый пиксель устройства, так что скриншоты устройств с высоким разрешением будут в два раза больше или даже больше.

    По умолчанию "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

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

page.set_viewport_size() изменит размер страницы. Многие веб-сайты не ожидают, что телефоны будут менять размер, поэтому вы должны установить размер области просмотра перед переходом на страницу. 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#

    Глобальный шаблон, регулярное выражение или предикат, получающий 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().

Ожидает, пока заданное событие не будет вызвано. Если предикат предоставлен, он передает значение события в функцию 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

Возвращает, когда выражение возвращает истинное значение. Разрешается в JSHandle истинного значения.

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

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

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 (опционально)#

    Опциональный аргумент для передачи в выражение.

  • polling float | "raf" (опционально)#

    Если polling равно 'raf', то выражение постоянно выполняется в requestAnimationFrame callback. Если 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. Навигация должна быть завершена, когда вызывается этот метод. Если текущий документ уже достиг требуемого состояния, метод завершается немедленно.

примечание

В большинстве случаев этот метод не требуется, так как 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() # клик вызывает всплывающее окно.
popup = page_info.value
# Ожидание события "DOMContentLoaded".
popup.wait_for_load_state("domcontentloaded")
print(popup.title()) # всплывающее окно готово к использованию.

Аргументы

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

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

    • 'load' - ожидание события load.
    • 'domcontentloaded' - ожидание события DOMContentLoaded.
    • 'networkidle' - НЕ РЕКОМЕНДУЕТСЯ ожидание, пока не будет сетевых соединений в течение как минимум 500 мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
  • 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#

    Глобальный шаблон, регулярное выражение или предикат, получающий URL для сопоставления во время ожидания навигации. Обратите внимание, что если параметр является строкой без символов подстановки, метод будет ожидать навигации на 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, связанные со страницей.

примечание

Это не включает ServiceWorkers

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

page.workers

Возвращает


События

on("close")

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

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

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

page.on("close", handler)

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


on("console")

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

Вызывается, когда JavaScript на странице вызывает один из методов консольного 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. Например, при открытии всплывающего окна с 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)

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


Устаревшие

accessibility

Добавлено до версии v1.9 page.accessibility
Устарело

Это свойство не рекомендуется использовать. Пожалуйста, используйте другие библиотеки, такие как Axe, если вам нужно тестировать доступность страницы. См. наш руководство по интеграции с Axe для Node.js.

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

page.accessibility

Тип


check

Добавлено до версии v1.9 page.check
Не рекомендуется

Используйте основанный на локаторах locator.check() вместо этого. Подробнее о локаторах.

Этот метод отмечает элемент, соответствующий selector, выполняя следующие шаги:

  1. Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, этот метод возвращается немедленно.
  3. Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
  4. Прокрутите элемент в видимую область, если это необходимо.
  5. Используйте page.mouse, чтобы щелкнуть в центре элемента.
  6. Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.

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

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

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

Аргументы

  • selector str#

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

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

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

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

    Устарело

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

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

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

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

  • 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. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте page.mouse, чтобы щелкнуть в центре элемента или в указанной position.
  5. Подождите, пока инициированные навигации не завершатся успешно или не завершатся с ошибкой, если только не установлена опция 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 в будущем.

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

  • position Dict (опционально)#

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

  • 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. Если элемент отсоединяется во время проверок, все действие повторяется.
  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 (опционально)#

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

  • 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 и всплывают.

Поскольку 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
Не рекомендуется

Этот метод не ожидает, пока элемент пройдет проверки на возможность действия, и поэтому может привести к нестабильным тестам. Вместо этого используйте locator.evaluate(), другие вспомогательные методы Locator или утверждения, ориентированные на веб.

Метод находит элемент, соответствующий указанному селектору на странице, и передает его в качестве первого аргумента в 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 и утверждения, ориентированные на веб, выполняют работу лучше.

Метод находит все элементы, соответствующие указанному селектору на странице, и передает массив найденных элементов в качестве первого аргумента в 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 (опционально)#

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

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

    Когда считать операцию успешной, по умолчанию load. События могут быть:

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

Возвращает


fill

Добавлено до v1.9 page.fill
Не рекомендуется

Используйте основанный на локаторах locator.fill() вместо этого. Подробнее о локаторах.

Этот метод ожидает элемент, соответствующий selector, ожидает проверки actionability, фокусируется на элементе, заполняет его и вызывает событие input после заполнения. Обратите внимание, что вы можете передать пустую строку, чтобы очистить поле ввода.

Если целевой элемент не является <input>, <textarea> или [contenteditable] элементом, этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>, который имеет ассоциированный 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() вместо этого. Подробнее о локаторах.

Этот метод наводит курсор на элемент, соответствующий селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте page.mouse для наведения курсора на центр элемента или указанную позицию.

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

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

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

Аргументы

  • selector str#

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

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

    Нужно ли обходить проверки действительности. По умолчанию false.

  • modifiers List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (опционально)#

    Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается как "Control" на Windows и Linux и как "Meta" на macOS.

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

    Устарело

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

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

  • position Dict (опционально)#

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

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

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

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

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

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

    Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию 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>, который имеет связанный контрол, возвращает значение контрола.

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

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() вместо этого. Подробнее о локаторах.

Возвращает, отмечен ли элемент. Выбрасывает исключение, если элемент не является флажком или радиокнопкой.

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

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() вместо этого. Подробнее о локаторах.

Возвращает, отключен ли элемент, противоположность включенному.

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

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() вместо этого. Подробнее о локаторах.

Возвращает, является ли элемент включенным.

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

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() вместо этого. Подробнее о локаторах.

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

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

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() вместо этого. Подробнее о локаторах.

Возвращает, является ли элемент видимым. Селектор, который не соответствует ни одному элементу, считается невидимым.

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

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() вместо этого. Подробнее о локаторах.

Этот метод ожидает элемент, соответствующий селектору, ожидает проверки действительности, ждет, пока все указанные опции будут присутствовать в элементе <select>, и выбирает эти опции.

Если целевой элемент не является элементом <select>, этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>, который имеет связанный контрол, будет использован контрол.

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

Вызывает событие 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#

    Нужно ли обходить проверки действительности. По умолчанию 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() вместо этого. Подробнее о локаторах.

Этот метод отмечает или снимает отметку с элемента, соответствующего селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, дождитесь, пока соответствующий элемент не будет добавлен в DOM.
  2. Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение.
  3. Если элемент уже имеет правильное состояние отметки, этот метод возвращает результат немедленно.
  4. Дождитесь проверки действительности на найденном элементе, если только не установлен параметр force. Если элемент отсоединяется во время проверок, все действие повторяется.
  5. Прокрутите элемент в видимую область, если это необходимо.
  6. Используйте page.mouse для нажатия в центр элемента.
  7. Убедитесь, что элемент теперь отмечен или снят с отметки. Если нет, этот метод выбрасывает исключение.

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

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

page.set_checked(selector, checked)
page.set_checked(selector, checked, **kwargs)

Аргументы

  • selector str#

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

  • checked bool#

    Нужно ли отметить или снять отметку с флажка.

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

    Нужно ли обходить проверки действительности. По умолчанию false.

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

    Устарело

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

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

  • position Dict (опционально)#

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

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

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

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

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

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

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

Возвращает


set_input_files

Добавлено до версии v1.9 page.set_input_files
Не рекомендуется

Используйте основанный на локаторах метод locator.set_input_files() вместо этого. Подробнее о локаторах.

Устанавливает значение файлового ввода в указанные пути к файлам или файлы. Если некоторые из filePaths являются относительными путями, они разрешаются относительно текущей рабочей директории. Для пустого массива очищает выбранные файлы. Для входных данных с атрибутом [webkitdirectory] поддерживается только один путь к директории.

Этот метод ожидает, что селектор указывает на элемент ввода. Однако, если элемент находится внутри элемента <label>, который имеет ассоциированный контроль, он будет нацелен на контроль.

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

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() вместо этого. Подробнее о локаторах.

Этот метод выполняет нажатие на элемент, соответствующий селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки действительности на соответствующем элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте page.touchscreen для нажатия в центр элемента или указанную позицию.

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

примечание

Метод page.tap() выбросит исключение, если опция has_touch контекста браузера равна false.

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

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

Аргументы

  • selector str#

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

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

    Нужно ли обходить проверки действительности. По умолчанию false.

  • modifiers List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (опционально)#

    Модификаторы клавиш для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.

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

    Устарело

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

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

  • position Dict (опционально)#

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

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

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

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

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

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

    Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию 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() вместо этого. Подробнее о локаторах.

Этот метод снимает отметку с элемента, соответствующего селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Убедитесь, что соответствующий элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже снят с отметки, этот метод возвращается немедленно.
  3. Подождите, пока не будут выполнены проверки действительности на соответствующем элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
  4. Прокрутите элемент в видимую область, если это необходимо.
  5. Используйте page.mouse для нажатия в центр элемента.
  6. Убедитесь, что элемент теперь снят с отметки. Если нет, этот метод выбрасывает исключение.

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

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

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

Аргументы

  • selector str#

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

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

    Нужно ли обходить проверки действительности. По умолчанию false.

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

    Устарело

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

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

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

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

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

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

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

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

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

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

Возвращает


wait_for_selector

Добавлено до версии v1.9 page.wait_for_selector
Не рекомендуется

Используйте веб-утверждения, которые утверждают видимость, или основанный на локаторах метод locator.wait_for() вместо этого. Подробнее о локаторах.

Возвращает, когда элемент, указанный селектором, удовлетворяет опции state. Возвращает null, если ожидание для hidden или detached.

примечание

Playwright автоматически ожидает, пока элемент не будет готов перед выполнением действия. Использование объектов Locator и веб-первых утверждений делает код свободным от ожидания селектора.

Ожидайте, пока селектор не удовлетворит опцию state (либо появится/исчезнет из DOM, либо станет видимым/скрытым). Если на момент вызова метода селектор уже удовлетворяет условию, метод вернется немедленно. Если селектор не удовлетворяет условию в течение тайм-аута в миллисекундах, функция выбросит исключение.

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

Этот метод работает через навигации:

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("Загружено изображение: " + 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' - ожидание, пока элемент не будет иметь пустую рамку и не будет visibility:hidden. Обратите внимание, что элемент без содержимого или с display:none имеет пустую рамку и не считается видимым.
    • 'hidden' - ожидание, пока элемент не будет отсоединен от DOM, или не будет иметь пустую рамку или 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 и веб-утверждения, которые ожидают автоматически.

Ожидает заданное время ожидания в миллисекундах.

Обратите внимание, что page.waitForTimeout() следует использовать только для отладки. Тесты, использующие таймер в производственной среде, будут ненадежными. Вместо этого используйте сигналы, такие как сетевые события, появление селекторов и другие.

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

# ожидание 1 секунду
page.wait_for_timeout(1000)

Аргументы

  • timeout float#

    Время ожидания

Возвращает