Page
Класс Page предоставляет методы для работы с одной вкладкой в Browser или фоновыми страницами расширений (extension background page) в Chromium. Один экземпляр Browser может содержать несколько экземпляров Page.
Пример ниже создаёт страницу, переходит на указанный URL и сохраняет скриншот:
const { webkit } = require('playwright'); // Также можно использовать 'chromium' или 'firefox'.
(async () => {
const browser = await webkit.launch();
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'screenshot.png' });
await browser.close();
})();
Класс Page генерирует различные события (описаны ниже), которые можно обрабатывать с помощью стандартных методов EventEmitter в Node.js, таких как on, once или removeListener.
Пример ниже выводит сообщение при загрузке страницы (load):
page.once('load', () => console.log('Page loaded!'));
Чтобы отписаться от событий, используйте метод removeListener:
function logRequest(interceptedRequest) {
console.log('A request was made:', interceptedRequest.url());
}
page.on('request', logRequest);
// Позже в коде...
page.removeListener('request', logRequest);
Методы
addInitScript
Добавлено до версии v1.9Добавляет скрипт, который будет выполнен в одном из следующих сценариев:
- Каждый раз, когда страница загружается.
- Каждый раз, когда дочерний фрейм присоединяется или загружается. В этом случае скрипт выполняется в контексте вновь присоединенного фрейма.
Скрипт выполняется после создания документа, но до выполнения любых его скриптов. Это полезно для изменения среды JavaScript, например, для задания начального значения Math.random.
Использование
Пример переопределения Math.random перед загрузкой страницы:
// preload.js
Math.random = () => 42;
// В вашем скрипте playwright, предполагая, что файл preload.js находится в той же директории
await page.addInitScript({ path: './preload.js' });
await page.addInitScript(mock => {
window.mock = mock;
}, mock);
Порядок выполнения нескольких скриптов, установленных через browserContext.addInitScript() и page.addInitScript(), не определен.
Аргументы
-
scriptfunction | string | Object#-
pathstring (опционально)Путь к JavaScript файлу. Если
pathявляется относительным путем, то он разрешается относительно текущей рабочей директории. Опционально. -
contentstring (опционально)Сырой контент скрипта. Опционально.
Скрипт для выполнения на странице.
-
-
argSerializable (опционально)#
Необязательный аргумент для передачи в script (поддерживается только при передаче функции).
optionsObject (необязательно)-
exposeFunctionsboolean (необязательно) Добавлено в: v1.62#Если установлено значение
true, функции, переданные внутри arg, становятся доступны на странице и могут вызываться из скрипта инициализации. Вызов такой функции возвращает Promise с результатом её выполнения. Внутренне каждая функция предоставляется через page.exposeFunction(), поэтому технически она доступна во всех фреймах страницы. В отличие от функций, переданных в page.evaluate(), функции, переданные в скрипт инициализации, становятся доступны в каждом новом документе, поэтому остаются доступными после навигации. По умолчанию используется значениеfalse: в этом случае функции не подлежат сериализации и пропускаются без предупреждения.
-
Возвращает
addLocatorHandler
Добавлено в: v1.42При тестировании веб-страницы иногда появляются неожиданные наложения, такие как диалог "Зарегистрироваться", которые блокируют действия, которые вы хотите автоматизировать, например, нажатие кнопки. Эти наложения не всегда появляются одинаково или в одно и то же время, что делает их сложными для обработки в автоматизированных тестах.
Этот метод позволяет вам настроить специальную функцию, называемую обработчиком, которая активируется, когда обнаруживает, что наложение видно. Задача обработчика - удалить наложение, позволяя вашему тесту продолжаться так, как будто наложения не было.
Вещи, которые нужно учитывать:
- Когда наложение показывается предсказуемо, мы рекомендуем явно ожидать его в вашем тесте и отклонять его как часть вашего обычного тестового потока, вместо использования page.addLocatorHandler().
- Playwright проверяет наличие наложения каждый раз перед выполнением или повторной попыткой действия, требующего проверки возможности действия, или перед выполнением проверки утверждения с автоматическим ожиданием. Когда наложение видно, Playwright сначала вызывает обработчик, а затем продолжает выполнение действия/утверждения. Обратите внимание, что обработчик вызывается только при выполнении действия/утверждения - если наложение становится видимым, но вы не выполняете никаких действий, обработчик не будет вызван.
- После выполнения обработчика Playwright убедится, что наложение, вызвавшее обработчик, больше не видно. Вы можете отказаться от этого поведения с помощью noWaitAfter.
- Время выполнения обработчика учитывается в тайм-ауте действия/утверждения, которое вызвало обработчик. Если ваш обработчик занимает слишком много времени, это может вызвать тайм-ауты.
- Вы можете зарегистрировать несколько обработчиков. Однако в любой момент времени будет выполняться только один обработчик. Убедитесь, что действия в обработчике не зависят от другого обработчика.
Выполнение обработчика изменит состояние вашей страницы в середине теста. Например, это изменит текущий фокус элемента и переместит мышь. Убедитесь, что действия, выполняемые после обработчика, являются автономными и не зависят от неизменности состояния фокуса и мыши.
Например, рассмотрим тест, который вызывает locator.focus(), а затем keyboard.press(). Если ваш обработчик между этими двумя действиями нажмёт кнопку, сфокусированный элемент, скорее всего, окажется другим, и нажатие клавиши произойдёт по неожиданному элементу. Чтобы избежать этой проблемы, используйте locator.press().
Другой пример — серия действий мышью, где за mouse.move() следует mouse.down(). Аналогично: если обработчик выполнится между этими двумя действиями, позиция мыши во время mouse down будет неправильной. Предпочитайте самодостаточные действия вроде locator.click(), которые не зависят от того, что состояние не будет изменено обработчиком.
Использование
Пример, который закрывает диалог "Подписаться на рассылку", когда он появляется:
// Настройка обработчика.
await page.addLocatorHandler(page.getByText('Sign up to the newsletter'), async () => {
await page.getByRole('button', { name: 'No thanks' }).click();
});
// Пишите тест как обычно.
await page.goto('https://example.com');
await page.getByRole('button', { name: 'Start here' }).click();
Пример, который пропускает страницу "Подтвердите свои данные безопасности", когда она отображается:
// Настройка обработчика.
await page.addLocatorHandler(page.getByText('Confirm your security details'), async () => {
await page.getByRole('button', { name: 'Remind me later' }).click();
});
// Пишите тест как обычно.
await page.goto('https://example.com');
await page.getByRole('button', { name: 'Start here' }).click();
Пример с пользовательским обратным вызовом на каждой проверке доступности. Используется локатор <body>, который всегда виден, поэтому обработчик вызывается перед каждой проверкой доступности. Важно указать noWaitAfter, потому что обработчик не скрывает элемент <body>.
// Настройка обработчика.
await page.addLocatorHandler(page.locator('body'), async () => {
await page.evaluate(() => window.removeObstructionsForTestIfNeeded());
}, { noWaitAfter: true });
// Пишите тест как обычно.
await page.goto('https://example.com');
await page.getByRole('button', { name: 'Start here' }).click();
Обработчик принимает оригинальный локатор в качестве аргумента. Вы также можете автоматически удалить обработчик после определенного количества вызовов, установив times:
await page.addLocatorHandler(page.getByLabel('Close'), async locator => {
await locator.click();
}, { times: 1 });
Аргументы
-
Локатор, который вызывает обработчик.
-
handlerfunction(Locator):Promise<Object>#Функция, которая должна быть выполнена, как только локатор появится. Эта функция должна избавиться от элемента, который блокирует действия, такие как клик.
-
optionsObject (опционально)-
noWaitAfterboolean (опционально) Добавлено в: v1.44#По умолчанию, после вызова обработчика Playwright будет ждать, пока оверлей не станет скрытым, и только затем продолжит действие/проверку, которое вызвало обработчик. Эта опция позволяет отказаться от этого поведения, чтобы оверлей мог оставаться видимым после выполнения обработчика.
-
timesnumber (опционально) Добавлено в: v1.44#Указывает максимальное количество раз, которое этот обработчик должен быть вызван. По умолчанию не ограничено.
-
Возвращает
addScriptTag
Добавлено до v1.9Добавляет тег <script> на страницу с нужным URL или содержимым. Возвращает добавленный тег, когда срабатывает onload скрипта или когда содержимое скрипта было внедрено в фрейм.
Использование
await page.addScriptTag();
await page.addScriptTag(options);
Аргументы
optionsObject (опционально)-
Сырой JavaScript-контент для внедрения в фрейм.
-
Путь к JavaScript-файлу для внедрения в фрейм. Если
pathявляется относительным путем, то он разрешается относительно текущей рабочей директории. -
Тип скрипта. Используйте 'module', чтобы загрузить JavaScript ES6 модуль. Подробнее см. script.
-
URL скрипта, который нужно добавить.
-
Возвращает
addStyleTag
Добавлено до v1.9Добавляет тег <link rel="stylesheet"> на страницу с нужным URL или тег <style type="text/css"> с содержимым. Возвращает добавленный тег, когда срабатывает onload таблицы стилей или когда CSS-контент был внедрен в фрейм.
Использование
await page.addStyleTag();
await page.addStyleTag(options);
Аргументы
optionsObject (опционально)
Возвращает
ariaSnapshot
Added in: v1.59Создаёт aria-снимок страницы. Подробнее об aria-снимках.
Usage
await page.ariaSnapshot();
await page.ariaSnapshot(options);
Arguments
optionsObject (optional)-
boxesboolean (optional) Added in: v1.60#Если задано
true, добавляет в снимок ограничивающий прямоугольник каждого элемента в виде[box=x,y,width,height]. Координаты задаются относительно области просмотра, в CSS-пикселях, как возвращаетElement.getBoundingClientRect(). По умолчаниюfalse. -
Если указано, ограничивает глубину снимка.
-
mode"ai" | "default" (optional)#Если задано
"ai", возвращает снимок, оптимизированный для ИИ, с идентификаторами элементов вида[ref=e2]и снимками<iframe>. По умолчанию"default". -
signalAbortSignal (optional) Added in: v1.62#Позволяет отменить операцию с помощью
AbortSignal. При отмене операция прерывается и выбрасывает ошибку. Сигнал не отключает тайм-аут по умолчанию. Его можно изменить методами browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
Максимальное время в миллисекундах. По умолчанию
0, то есть тайм-аут отключён. Значение можно изменить параметромactionTimeoutв конфигурации или методами browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Returns
ariaSnapshotJSON
Added in: v1.63Создаёт снимок дерева доступности страницы в виде объекта JSON. Возвращает то же дерево, что и page.ariaSnapshot(), в виде JSON вместо YAML. Описание формата см. в locator.ariaSnapshotJSON().
Usage
await page.ariaSnapshotJSON();
await page.ariaSnapshotJSON(options);
Arguments
optionsObject (optional)-
При значении
trueдобавляет к каждому элементу свойствоboxс полямиx,y,widthиheight. Координаты относительно области просмотра измеряются в CSS-пикселях и возвращаются методомElement.getBoundingClientRect(). По умолчаниюfalse. -
Если указано, ограничивает глубину снимка.
-
mode"ai" | "default" (optional)#Если задано
"ai", возвращает снимок, оптимизированный для ИИ, с идентификаторами элементов вида[ref=e2]и снимками<iframe>. По умолчанию"default". -
signalAbortSignal (optional) Added in: v1.62#Позволяет отменить операцию с помощью
AbortSignal. При отмене операция прерывается и выбрасывает ошибку. Сигнал не отключает тайм-аут по умолчанию. Его можно изменить методами browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
Максимальное время в миллисекундах. По умолчанию
0, то есть тайм-аут отключён. Значение можно изменить параметромactionTimeoutв конфигурации или методами browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Returns
bringToFront
Добавлено до v1.9Перемещает страницу на передний план (активирует вкладку).
Использование
await page.bringToFront();
Возвращает
cancelPickLocator
Added in: v1.59Отменяет текущий вызов page.pickLocator(), отключая режим выбора локатора. Если режим выбора локатора не активен, этот метод ничего не делает.
Usage
await page.cancelPickLocator();
Returns
clearConsoleMessages
Added in: v1.59Удаляет все сохранённые сообщения консоли этой страницы. Последующие вызовы page.consoleMessages() будут возвращать только сообщения, записанные после очистки.
Usage
await page.clearConsoleMessages();
Returns
clearPageErrors
Added in: v1.59Удаляет все сохранённые ошибки этой страницы. Последующие вызовы page.pageErrors() будут возвращать только ошибки, возникшие после очистки.
Usage
await page.clearPageErrors();
Returns
close
Добавлено до v1.9Если runBeforeUnload равен false, не выполняет обработчики выгрузки и ждет закрытия страницы. Если runBeforeUnload равен true, метод выполнит обработчики выгрузки, но не будет ждать закрытия страницы.
По умолчанию, page.close() не выполняет обработчики beforeunload.
если runBeforeUnload передан как true, может быть вызван диалог beforeunload, который должен быть обработан вручную через событие page.on('dialog').
Использование
await page.close();
await page.close(options);
Аргументы
optionsObject (опционально)-
reasonstring (опционально) Добавлено в: v1.40#Причина, которая будет сообщена операциям, прерванным закрытием страницы.
-
runBeforeUnloadboolean (опционально)#По умолчанию
false. Выполнять ли обработчики страницы before unload.
-
Возвращает
consoleMessages
Добавлено в: v1.56Возвращает до (на данный момент) 200 последних сообщений консоли на этой странице. Подробнее см. page.on('console').
Использование
await page.consoleMessages();
await page.consoleMessages(options);
Аргументы
optionsObject (необязательно)-
filter"all" | "since-navigation" (необязательно) Добавлено в: v1.59#Определяет, какие сообщения возвращаются:
-
Возвращает
content
Добавлено до v1.9Получает полный HTML-контент страницы, включая doctype.
Использование
await page.content();
await page.content(options);
Аргументы
optionsObject (необязательно)-
includeShadowboolean (необязательно) Добавлено в: v1.64#Если установлено значение
true, содержимое открытых теневых корней включается в виде декларативного теневого DOM, то есть элементов<template shadowrootmode="open">, вложенных в соответствующие элементы-хосты. Закрытые теневые корни никогда не включаются. Значение по умолчанию —false.
-
Возвращает
context
Добавлено до v1.9Получает контекст браузера, к которому принадлежит страница.
Использование
page.context();
Возвращает
dragAndDrop
Добавлено в: v1.13Этот метод перетаскивает исходный элемент на целевой элемент. Сначала он перемещается к исходному элементу, выполняет mousedown, затем перемещается к целевому элементу и выполняет mouseup.
Использование
await page.dragAndDrop('#source', '#target');
// или укажите точные позиции относительно верхнего левого угла элементов:
await page.dragAndDrop('#source', '#target', {
sourcePosition: { x: 34, y: 7 },
targetPosition: { x: 10, y: 20 },
});
Аргументы
-
Селектор для поиска элемента для перетаскивания. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Селектор для поиска элемента, на который нужно сбросить. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
Пропускать ли проверки actionability. По умолчанию
false. -
noWaitAfterboolean (опционально)#УстарелоЭтот параметр не имеет эффекта.
-
Этот параметр не оказывает никакого влияния.
-
scroll"auto" | "none" (необязательный) Добавлено в: v1.62#Определяет, будет ли Playwright прокручивать страницу, чтобы элемент оказался в области просмотра перед выполнением действия. По умолчанию используется значение
"auto", при котором элемент при необходимости прокручивается в область просмотра, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении"none"Playwright не выполняет прокрутку к элементу, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательный) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
sourcePositionObject (необязательный) Добавлено в: v1.14#Кликает по исходному элементу в этой точке, заданной относительно верхнего левого угла области padding элемента. Если не указано, используется какая‑то видимая точка элемента.
-
stepsnumber (опционально) Добавлено в: v1.57#По умолчанию
1. Отправляетnинтерполированных событийmousemove, чтобы смоделировать перемещение междуmousedownиmouseupпри перетаскивании. Если установить1, будет сгенерировано одно событиеmousemoveв точке назначения. -
strictboolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
targetPositionObject (опционально) Добавлено в: v1.14#Сбрасывает на целевой элемент в этой точке относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию, без его выполнения.
Возвращает
emulateMedia
Добавлено до v1.9Этот метод изменяет CSS media type через аргумент media и/или медиа-функцию 'prefers-colors-scheme', используя аргумент colorScheme.
Использование
await page.evaluate(() => matchMedia('screen').matches);
// → true
await page.evaluate(() => matchMedia('print').matches);
// → false
await page.emulateMedia({ media: 'print' });
await page.evaluate(() => matchMedia('screen').matches);
// → false
await page.evaluate(() => matchMedia('print').matches);
// → true
await page.emulateMedia({});
await page.evaluate(() => matchMedia('screen').matches);
// → true
await page.evaluate(() => matchMedia('print').matches);
// → false
await page.emulateMedia({ colorScheme: 'dark' });
await page.evaluate(() => matchMedia('(prefers-color-scheme: dark)').matches);
// → true
await page.evaluate(() => matchMedia('(prefers-color-scheme: light)').matches);
// → false
Аргументы
optionsObject (опционально)-
colorSchemenull | "light" | "dark" | "no-preference" (опционально) Добавлено в: v1.9#Эмулирует медиа-функцию prefers-colors-scheme, поддерживаемые значения:
'light'и'dark'. Передачаnullотключает эмуляцию цветовой схемы.'no-preference'устарело. -
contrastnull | "no-preference" | "more" (опционально) Добавлено в: v1.51#Эмулирует медиа-функцию
'prefers-contrast', поддерживаемые значения:'no-preference','more'. Передачаnullотключает эмуляцию контраста. -
forcedColorsnull | "active" | "none" (опционально) Добавлено в: v1.15#Эмулирует медиа-функцию
'forced-colors', поддерживаемые значения:'active'и'none'. Передачаnullотключает эмуляцию принудительных цветов. -
medianull | "screen" | "print" (опционально) Добавлено в: v1.9#Изменяет CSS media type страницы. Единственные допустимые значения:
'screen','print'иnull. Передачаnullотключает эмуляцию CSS media. -
reducedMotionnull | "reduce" | "no-preference" (опционально) Добавлено в: v1.12#Эмулирует медиа-функцию
'prefers-reduced-motion', поддерживаемые значения:'reduce','no-preference'. Передачаnullотключает эмуляцию уменьшенного движения.
-
Возвращает
evaluate
Добавлено до v1.9Возвращает значение вызова pageFunction.
Если функция, переданная в page.evaluate(), возвращает Promise, то page.evaluate() будет ждать разрешения промиса и вернет его значение.
Если функция, переданная в page.evaluate(), возвращает не-Serializable значение, то page.evaluate() разрешится в undefined. Playwright также поддерживает передачу некоторых дополнительных значений, которые не сериализуются через JSON: -0, NaN, Infinity, -Infinity.
Использование
Передача аргумента в pageFunction:
const result = await page.evaluate(([x, y]) => {
return Promise.resolve(x * y);
}, [7, 8]);
console.log(result); // выводит "56"
Вместо функции также можно передать строку:
console.log(await page.evaluate('1 + 2')); // выводит "3"
const x = 10;
console.log(await page.evaluate(`1 + ${x}`)); // выводит "11"
Экземпляры ElementHandle могут быть переданы в качестве аргумента в page.evaluate():
const bodyHandle = await page.evaluateHandle('document.body');
const html = await page.evaluate<string, HTMLElement>(([body, suffix]) =>
body.innerHTML + suffix, [bodyHandle, 'hello']
);
await bodyHandle.dispose();
Аргументы
-
pageFunctionfunction | string#Функция для выполнения в контексте страницы.
-
argEvaluationArgument (опционально)#
Необязательный аргумент для передачи в pageFunction.
optionsObject (необязательно)-
exposeFunctionsboolean (необязательно) Добавлено в: v1.62#Если установлено значение
true, функции, переданные внутри arg, становятся доступны на странице и могут вызываться из функции, выполняемой на странице. Вызов такой функции возвращает Promise с результатом её выполнения. Внутренне каждая функция предоставляется через page.exposeFunction(), поэтому технически она доступна из всех фреймов страницы. Предоставленные функции удаляются при навигации на верхнем уровне. По умолчанию используется значениеfalse: в этом случае функции не подлежат сериализации, и попытка передать функцию приводит к ошибке.
-
Возвращает
evaluateHandle
Добавлено до v1.9Возвращает значение вызова pageFunction в виде JSHandle.
Единственное отличие между page.evaluate() и page.evaluateHandle() заключается в том, что page.evaluateHandle() возвращает JSHandle.
Если функция, переданная в page.evaluateHandle(), возвращает Promise, то page.evaluateHandle() будет ждать разрешения промиса и вернет его значение.
Использование
// Обработчик для объекта window.
const aWindowHandle = await page.evaluateHandle(() => Promise.resolve(window));
Вместо функции также можно передать строку:
const aHandle = await page.evaluateHandle('document'); // Обработчик для 'document'
Экземпляры JSHandle могут быть переданы в качестве аргумента в page.evaluateHandle():
const aHandle = await page.evaluateHandle(() => document.body);
const resultHandle = await page.evaluateHandle(body => body.innerHTML, aHandle);
console.log(await resultHandle.jsonValue());
await resultHandle.dispose();
Аргументы
-
pageFunctionfunction | string#Функция для выполнения в контексте страницы.
-
argEvaluationArgument (опционально)#
Необязательный аргумент для передачи в pageFunction.
optionsObject (необязательно)-
exposeFunctionsboolean (необязательно) Добавлено в: v1.62#Если установлено значение
true, функции, переданные внутри arg, становятся доступны на странице и могут вызываться из функции, выполняемой на странице. Вызов такой функции возвращает Promise с результатом её выполнения. Внутри каждая функция предоставляется через page.exposeFunction(), поэтому технически она доступна из всех фреймов страницы. Предоставленные функции удаляются при навигации фрейма верхнего уровня. По умолчанию используется значениеfalse: в этом случае функции не поддаются сериализации, и попытка передать функцию приводит к ошибке.
-
Возвращает
exposeBinding
Добавлено до версии v1.9Метод добавляет функцию с именем name в объект window каждого фрейма на этой странице. При вызове функция выполняет callback и возвращает Promise, который разрешается в возвращаемое значение callback. Если callback возвращает Promise, он будет ожидаться.
Первый аргумент функции callback содержит информацию о вызывающем: { browserContext: BrowserContext, page: Page, frame: Frame }.
Смотрите browserContext.exposeBinding() для версии, охватывающей весь контекст.
Функции, установленные через page.exposeBinding(), сохраняются при навигации.
Использование
Пример предоставления URL страницы всем фреймам на странице:
const { webkit } = require('playwright'); // Или 'chromium' или 'firefox'.
(async () => {
const browser = await webkit.launch({ headless: false });
const context = await browser.newContext();
const page = await context.newPage();
await page.exposeBinding('pageURL', ({ page }) => page.url());
await page.setContent(`
<script>
async function onClick() {
document.querySelector('div').textContent = await window.pageURL();
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
`);
await page.click('button');
})();
Аргументы
Функция обратного вызова, которая будет вызвана в контексте Playwright.
Возвращает
exposeFunction
Добавлено до версии v1.9Метод добавляет функцию с именем name в объект window каждого фрейма на странице. При вызове функция выполняет callback и возвращает Promise, который разрешается в возвращаемое значение callback.
Если callback возвращает Promise, он будет ожидаться.
Смотрите browserContext.exposeFunction() для функции, охватывающей весь контекст.
Функции, установленные через page.exposeFunction(), сохраняются при навигации.
Использование
Пример добавления функции sha256 на страницу:
const { webkit } = require('playwright'); // Или 'chromium' или 'firefox'.
const crypto = require('crypto');
(async () => {
const browser = await webkit.launch({ headless: false });
const page = await browser.newPage();
await page.exposeFunction('sha256', text =>
crypto.createHash('sha256').update(text).digest('hex'),
);
await page.setContent(`
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
`);
await page.click('button');
})();
Аргументы
-
Имя функции в объекте window.
-
Функция обратного вызова, которая будет вызвана в контексте Playwright.
Возвращает
frame
Добавлено до версии v1.9Возвращает фрейм, соответствующий указанным критериям. Должно быть указано либо name, либо url.
Использование
const frame = page.frame('frame-name');
const frame = page.frame({ url: /.*domain.*/ });
Аргументы
Имя фрейма, указанное в атрибуте name элемента iframe. Необязательно.
-
urlstring | RegExp | URLPattern | function(URL):boolean (необязательно)Glob-шаблон, регулярное выражение, URL-шаблон или предикат, принимающий
urlфрейма в виде объекта URL. Необязательно.
Имя фрейма или другие параметры поиска фрейма.
Возвращает
frameLocator
Добавлено в: v1.17При работе с iframes, вы можете создать локатор фрейма, который войдет в iframe и позволит выбирать элементы в этом iframe.
При вызове без selector поиск начинается в любом фрейме на странице — в основном фрейме или в любом из iframe, — поэтому вам не нужно предварительно находить каждый iframe. Обратите внимание, что оставшаяся часть локатора разрешается внутри одного фрейма, как и любой другой локатор. Если он соответствует элементам в нескольких фреймах, выбрасывается ошибка.
Использование
Следующий пример находит элемент с текстом "Submit" в iframe с id my-frame, например <iframe id="my-frame">:
const locator = page.frameLocator('#my-iframe').getByText('Submit');
await locator.click();
Следующий фрагмент кода находит кнопку в основном фрейме или в одном из iframe:
const locator = page.frameLocator().getByRole('button');
await locator.click();
Аргументы
-
selectorstring (необязательный)#Селектор, соответствующий элементу фрейма. Если он не указан, локатор ищет совпадения в любом фрейме на странице.
Возвращает
frames
Добавлено до v1.9Массив всех фреймов, прикрепленных к странице.
Использование
page.frames();
Возвращает
getByAltText
Добавлено в: v1.27Позволяет находить элементы по их alt тексту.
Использование
Например, этот метод найдет изображение по alt тексту "Playwright logo":
<img alt='Playwright logo'>
await page.getByAltText('Playwright logo').click();
Аргументы
-
Текст для поиска элемента.
-
optionsObject (опционально)
Возвращает
getByLabel
Добавлено в: v1.27Позволяет находить элементы ввода по тексту связанного элемента <label> или aria-labelledby, или по атрибуту aria-label.
Использование
Например, этот метод найдет элементы ввода по меткам "Username" и "Password" в следующем DOM:
<input aria-label="Username">
<label for="password-input">Password:</label>
<input id="password-input">
await page.getByLabel('Username').fill('john');
await page.getByLabel('Password').fill('secret');
Аргументы
-
Текст для поиска элемента.
-
optionsObject (опционально)
Возвращает
getByPlaceholder
Добавлено в: v1.27Позволяет находить элементы ввода по тексту placeholder.
Использование
Например, рассмотрим следующую структуру DOM.
<input type="email" placeholder="name@example.com" />
Вы можете заполнить элемент ввода, найдя его по тексту placeholder:
await page
.getByPlaceholder('name@example.com')
.fill('playwright@microsoft.com');
Аргументы
-
Текст для поиска элемента.
-
optionsObject (опционально)
Возвращает
getByRef
Добавлено в: v1.64Находит элемент по идентификатору из снимка дерева доступности. Метки вида [ref=e2] возвращает метод page.ariaSnapshot() при вызове в режиме "ai". Поиск выполняется по последнему снимку, сделанному во фрейме элемента.
Использование
Рассмотрим следующий aria-снимок.
- button "Submit" [ref=e2]
Кнопку можно найти по её идентификатору:
await page.getByRef('e2').click();
Аргументы
Возвращает
getByRole
Добавлено в: v1.27Позволяет находить элементы по их ARIA роли, ARIA атрибутам и доступному имени.
Использование
Рассмотрим следующую структуру DOM.
<h3>Sign up</h3>
<label>
<input type="checkbox" /> Subscribe
</label>
<br/>
<button>Submit</button>
Вы можете найти каждый элемент по его неявной роли:
await expect(page.getByRole('heading', { name: 'Sign up' })).toBeVisible();
await page.getByRole('checkbox', { name: 'Subscribe' }).check();
await page.getByRole('button', { name: /submit/i }).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 роль.
-
optionsObject (опционально)
Подробнее об aria-checked.
-
descriptionstring | RegExp (необязательно) Добавлено в: v1.60#Параметр для сопоставления с доступным описанием. По умолчанию сопоставление выполняется без учёта регистра и ищет подстроку; используйте exact, чтобы управлять этим поведением.
Подробнее о доступном описании.
-
disabledboolean (необязательно)#Атрибут, который обычно устанавливается с помощью
aria-disabledилиdisabled.примечаниеВ отличие от большинства других атрибутов,
disabledнаследуется через иерархию DOM. Узнайте больше оaria-disabled.
Определяет, должны ли name и description совпадать точно: с учётом регистра и по всей строке. По умолчанию — false. Игнорируется, если значение является регулярным выражением. Обратите внимание, что даже при точном совпадении пробельные символы в начале и конце строки удаляются.
-
expandedboolean (необязательный)#Атрибут, который обычно устанавливается с помощью
aria-expanded.Узнайте больше о
aria-expanded. -
includeHiddenboolean (опционально)#Опция, которая контролирует, будут ли скрытые элементы соответствовать. По умолчанию, только не скрытые элементы, как определено ARIA, соответствуют селектору роли.
Узнайте больше о
aria-hidden. -
Числовой атрибут, который обычно присутствует для ролей
heading,listitem,row,treeitem, с значениями по умолчанию для элементов<h1>-<h6>.Узнайте больше о
aria-level. -
namestring | RegExp (опционально)#Опция для соответствия доступному имени. По умолчанию, соответствие не учитывает регистр и ищет подстроку, используйте exact для управления этим поведением.
Узнайте больше о доступном имени.
-
pressedboolean (опционально)#Атрибут, который обычно устанавливается с помощью
aria-pressed.Узнайте больше о
aria-pressed. -
selectedboolean (опционально)#Атрибут, который обычно устанавливается с помощью
aria-selected.Узнайте больше о
aria-selected.
Возвращает
Детали
Селектор роли не заменяет аудиты доступности и тесты на соответствие, но дает раннюю обратную связь о руководствах ARIA.
Многие HTML элементы имеют неявно определенную роль, которая распознается селектором роли. Вы можете найти все поддерживаемые роли здесь. Руководства ARIA не рекомендуют дублировать неявные роли и атрибуты, устанавливая role и/или aria-* атрибуты на значения по умолчанию.
getByTestId
Добавлено в: v1.27Находит элемент по тестовому идентификатору.
Использование
Рассмотрим следующую структуру DOM.
<button data-testid="directions">Itinéraire</button>
Вы можете найти элемент по его тестовому идентификатору:
await page.getByTestId('directions').click();
Аргументы
Возвращает
Детали
По умолчанию, атрибут data-testid используется как тестовый идентификатор. Используйте selectors.setTestIdAttribute() для настройки другого атрибута тестового идентификатора, если это необходимо.
// Установите пользовательский атрибут тестового идентификатора из конфигурации @playwright/test:
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
testIdAttribute: 'data-pw'
},
});
getByText
Добавлено в: v1.27Позволяет находить элементы, содержащие заданный текст.
См. также locator.filter(), который позволяет сопоставлять по другим критериям, таким как доступная роль, а затем фильтровать по содержимому текста.
Использование
Рассмотрим следующую структуру DOM:
<div>Hello <span>world</span></div>
<div>Hello</div>
Вы можете находить элементы по подстроке текста, точной строке или регулярному выражению:
// Соответствует <span>
page.getByText('world');
// Соответствует первому <div>
page.getByText('Hello world');
// Соответствует второму <div>
page.getByText('Hello', { exact: true });
// Соответствует обоим <div>
page.getByText(/Hello/);
// Соответствует второму <div>
page.getByText(/^hello$/i);
Аргументы
-
Текст для поиска элемента.
-
optionsObject (опционально)
Возвращает
Детали
Сопоставление по тексту всегда нормализует пробелы, даже при точном совпадении. Например, оно превращает несколько пробелов в один, заменяет разрывы строк на пробелы и игнорирует начальные и конечные пробелы.
Элементы ввода типа button и submit сопоставляются по их value, а не по содержимому текста. Например, поиск по тексту "Log in" соответствует <input type=button value="Log in">.
getByTitle
Добавлено в: v1.27Позволяет находить элементы по их атрибуту title.
Использование
Рассмотрим следующую структуру DOM.
<span title='Issues count'>25 issues</span>
Вы можете проверить количество проблем, найдя его по тексту заголовка:
await expect(page.getByTitle('Issues count')).toHaveText('25 issues');
Аргументы
-
Текст для поиска элемента.
-
optionsObject (опционально)
Возвращает
goBack
Добавлено до v1.9Возвращает основной ответ ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления. Если невозможно вернуться назад, возвращает null.
Переход на предыдущую страницу в истории.
Тестирование кеша переходов назад/вперёд (BFCache) не поддерживается. По умолчанию Playwright отключает кеш переходов назад/вперёд во всех браузерах. Даже если включить его явно, внутреннее состояние Playwright зависит от событий навигации на сетевом уровне. Поскольку при восстановлении из BFCache DOM выходит из замороженного состояния без генерации этих событий, использование page.goBack() или page.goForward() для запуска восстановления из BFCache приведёт к истечению времени ожидания и рассинхронизации состояния Page.
Использование
await page.goBack();
await page.goBack(options);
Аргументы
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отмены сработает, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время операции в миллисекундах. По умолчанию
0- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
-
Возвращает
goForward
Добавлено до v1.9Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится с ответом последнего перенаправления. Если невозможно перейти вперед, возвращает null.
Переход на следующую страницу в истории.
Тестирование кеша переходов назад/вперёд (BFCache) не поддерживается. По умолчанию Playwright отключает кеш переходов назад/вперёд во всех браузерах. Даже если включить его явно, внутреннее состояние Playwright зависит от событий навигации на сетевом уровне. Поскольку при восстановлении из BFCache DOM размораживается без генерации этих событий, использование page.goBack() или page.goForward() для запуска восстановления из BFCache приведёт к превышению времени ожидания и рассинхронизации состояния Page.
Использование
await page.goForward();
await page.goForward(options);
Аргументы
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время операции в миллисекундах. По умолчанию
0- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
-
Возвращает
goto
Добавлено до v1.9Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится с первым не перенаправленным ответом.
Метод вызовет ошибку, если:
- произошла ошибка SSL (например, в случае самоподписанных сертификатов).
- целевой URL недействителен.
- превышено timeout во время навигации.
- удаленный сервер не отвечает или недоступен.
- основной ресурс не удалось загрузить.
Метод не вызовет ошибку, если удаленный сервер вернет любой действительный HTTP-код состояния, включая 404 "Not Found" и 500 "Internal Server Error". Код состояния для таких ответов можно получить, вызвав response.status().
Метод либо вызывает ошибку, либо возвращает ответ основного ресурса. Единственные исключения - это навигация на about:blank или навигация на тот же URL с другим хэшем, которые будут успешными и вернут null.
Режим без головы не поддерживает навигацию к PDF-документу. См. проблему в upstream.
Использование
await page.goto(url);
await page.goto(url, options);
Аргументы
-
URL для перехода на страницу. URL должен включать схему, например,
https://. Когда через параметры контекста был предоставлен baseURL и переданный URL является путем, он объединяется с помощью конструктораnew URL(). -
optionsObject (опционально)
Значение заголовка Referer. Если указано, оно имеет приоритет над значением заголовка referer, установленным с помощью page.setExtraHTTPHeaders().
-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и выбросит ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время операции в миллисекундах. По умолчанию
0- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
Возвращает
hideHighlight
Добавлено в: v1.60Скрывает все слои подсветки локаторов, ранее добавленные методом locator.highlight() на этой странице.
Использование
await page.hideHighlight();
Возвращает
isClosed
Добавлено до v1.9Указывает, что страница была закрыта.
Использование
page.isClosed();
Возвращает
locator
Добавлено в: v1.14Метод возвращает локатор элемента, который можно использовать для выполнения действий на этой странице/фрейме. Локатор разрешается в элемент непосредственно перед выполнением действия, поэтому серия действий на одном и том же локаторе может фактически выполняться на разных элементах DOM. Это произойдет, если структура DOM между этими действиями изменилась.
Использование
page.locator(selector);
page.locator(selector, options);
Аргументы
-
Селектор для использования при разрешении DOM элемента.
-
optionsObject (опционально)-
Сужает результаты метода до тех, которые содержат элементы, соответствующие этому относительному локатору. Например,
article, который имеетtext=Playwright, соответствует<article><div>Playwright</div></article>.Внутренний локатор должен быть относительным к внешнему локатору и запрашивается начиная с совпадения внешнего локатора, а не с корня документа. Например, вы можете найти
content, который имеетdivв<article><content><div>Playwright</div></content></article>. Однако поискcontent, который имеетarticle div, не удастся, потому что внутренний локатор должен быть относительным и не должен использовать элементы за пределамиcontent.Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.
-
hasNotLocator (опционально) Добавлено в: v1.33#Соответствует элементам, которые не содержат элемент, соответствующий внутреннему локатору. Внутренний локатор запрашивается относительно внешнего. Например,
article, который не имеетdiv, соответствует<article><span>Playwright</span></article>.Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.
-
hasNotTextstring | RegExp (опционально) Добавлено в: v1.33#Соответствует элементам, которые не содержат указанный текст где-либо внутри, возможно, в дочернем или потомственном элементе. При передаче string сопоставление нечувствительно к регистру и ищет подстроку.
-
hasTextstring | RegExp (опционально)#Соответствует элементам, содержащим указанный текст где-либо внутри, возможно, в дочернем или потомственном элементе. При передаче string сопоставление нечувствительно к регистру и ищет подстроку. Например,
"Playwright"соответствует<article><div>Playwright</div></article>.
-
Возвращает
mainFrame
Добавлено до v1.9Основной фрейм страницы. Гарантируется, что у страницы всегда есть основной фрейм, который сохраняется при навигации.
Использование
page.mainFrame();
Возвращает
opener
Добавлено до v1.9Возвращает родительскую страницу для всплывающих окон или null для остальных случаев. Если родительская страница уже закрыта, также возвращается null.
Использование
await page.opener();
Возвращает
pageErrors
Добавлено в: v1.56Возвращает до (на данный момент) 200 последних ошибок страницы на этой странице. Подробнее см. page.on('pageerror').
Использование
await page.pageErrors();
await page.pageErrors(options);
Аргументы
optionsObject (необязательно)-
filter"all" | "since-navigation" (необязательно) Добавлено в: v1.59#Определяет, какие ошибки возвращаются:
-
Возвращает
pause
Добавлено в: v1.9Приостанавливает выполнение скрипта. Playwright остановит выполнение и будет ждать, пока пользователь либо нажмёт кнопку «Resume» в оверлее страницы, либо вызовет playwright.resume() в консоли DevTools.
Во время паузы можно исследовать селекторы или выполнять ручные действия. После возобновления выполнение продолжится с того места, где было приостановлено.
Этот метод требует запуска Playwright в оконном режиме, с отключённой опцией headless.
Использование
await page.pause();
Возвращает
pdf
Добавлено до v1.9Возвращает буфер PDF.
page.pdf() создаёт PDF-версию страницы с CSS-медиа-типом print. Чтобы сгенерировать PDF с медиатипом screen, вызовите page.emulateMedia() перед page.pdf():
По умолчанию page.pdf() изменяет цвета для печати. Чтобы принудительно использовать точные цвета, применяйте свойство -webkit-print-color-adjust.
Использование
// Генерирует PDF с медиатипом 'screen'.
await page.emulateMedia({ media: 'screen' });
await 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 11inLegal: 8.5in x 14inTabloid: 11in x 17inLedger: 17in x 11inA0: 33.1in x 46.8inA1: 23.4in x 33.1inA2: 16.54in x 23.4inA3: 11.7in x 16.54inA4: 8.27in x 11.7inA5: 5.83in x 8.27inA6: 4.13in x 5.83in
Разметка headerTemplate и footerTemplate имеет ограничения:
- Теги
<script>внутри шаблонов не выполняются. - Стили страницы не применяются внутри шаблонов.
Аргументы
-
optionsObject (необязательно)-
displayHeaderFooterboolean (необязательно)# Отображать верхний и нижний колонтитулы. По умолчаниюfalse. -
footerTemplatestring (необязательно)# HTML-шаблон для нижнего колонтитула. Формат должен совпадать с headerTemplate. -
formatstring (необязательно)# Формат бумаги. Если указан, имеет приоритет над параметрами width и height. По умолчанию'Letter'. -
headerTemplatestring (необязательно)# HTML-шаблон для верхнего колонтитула. В шаблоне можно использовать классы:'date'— дата печати'title'— заголовок документа'url'— URL документа'pageNumber'— текущий номер страницы'totalPages'— общее количество страниц
-
heightstring | number (необязательно)# Высота бумаги, поддерживает единицы измерения. -
landscapeboolean (необязательно)# Ориентация бумаги. По умолчаниюfalse(портретная). -
outlineboolean (необязательно) Добавлено в: v1.42# Включить оглавление в PDF. По умолчаниюfalse. -
pageRangesstring (необязательно)# Диапазоны страниц для печати, например'1-5, 8, 11-13'. По умолчанию печатаются все страницы. -
pathstring (необязательно)# Путь для сохранения PDF. Если не указан, PDF не сохраняется на диск. -
preferCSSPageSizeboolean (необязательно)# Приоритет размеров из CSS@pageнадwidth,heightилиformat. По умолчаниюfalse. -
printBackgroundboolean (необязательно)# Печатать фоновые изображения. По умолчаниюfalse. -
scalenumber (необязательно)# Масштабирование рендеринга страницы. По умолчанию1. -
taggedboolean (необязательно) Добавлено в: v1.42# Генерировать доступный (tagged) PDF. По умолчаниюfalse. -
widthstring | number (необязательно)# Ширина бумаги, поддерживает единицы измерения.
-
Возвращает
pickLocator
Добавлено в: v1.59Включает режим выбора локатора, в котором наведение указателя на элементы страницы подсвечивает их и показывает соответствующий локатор. Когда пользователь нажимает на элемент, режим отключается и возвращается Locator для выбранного элемента.
Использование
const locator = await page.pickLocator();
console.log(locator);
Возвращает
reload
Добавлено до v1.9Этот метод перезагружает текущую страницу так же, как если бы пользователь инициировал обновление браузера. Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления.
Использование
await page.reload();
await page.reload(options);
Аргументы
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время операции в миллисекундах. По умолчанию
0- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
-
Возвращает
removeAllListeners
Добавлено в: v1.47Удаляет всех слушателей данного типа (или всех зарегистрированных слушателей, если тип не указан). Позволяет дождаться завершения асинхронных слушателей или игнорировать последующие ошибки от этих слушателей.
Использование
page.on('request', async request => {
const response = await request.response();
const body = await response.body();
console.log(body.byteLength);
});
await page.goto('https://playwright.dev', { waitUntil: 'domcontentloaded' });
// Ожидает завершения всех зарегистрированных событий 'request'.
await page.removeAllListeners('request', { behavior: 'wait' });
Аргументы
typestring (опционально)#optionsObject (опционально)-
behavior"wait" | "ignoreErrors" | "default" (опционально)#Указывает, ждать ли уже выполняющихся слушателей и что делать, если они вызывают ошибки:
'default'- не ждать завершения текущих вызовов слушателей (если есть), если слушатель вызывает ошибку, это может привести к необработанной ошибке'wait'- ждать завершения текущих вызовов слушателей (если есть)'ignoreErrors'- не ждать завершения текущих вызовов слушателей (если есть), все ошибки, вызванные слушателями после удаления, будут тихо пойманы
-
Возвращает
removeLocatorHandler
Добавлено в: v1.44Удаляет все обработчики локаторов, добавленные с помощью page.addLocatorHandler() для конкретного локатора.
Использование
await page.removeLocatorHandler(locator);
Аргументы
-
Локатор, переданный в page.addLocatorHandler().
Возвращает
requestGC
Добавлено в: v1.48Запрашивает у страницы выполнение сборки мусора. Обратите внимание, что нет гарантии, что все недостижимые объекты будут собраны.
Это полезно для обнаружения утечек памяти. Например, если на вашей странице есть большой объект 'suspect', который может утекать, вы можете проверить, что он не утек, используя WeakRef.
// 1. На вашей странице сохраните WeakRef для "suspect".
await page.evaluate(() => globalThis.suspectWeakRef = new WeakRef(suspect));
// 2. Запросите сборку мусора.
await page.requestGC();
// 3. Убедитесь, что weak ref не ссылается на оригинальный объект.
expect(await page.evaluate(() => !globalThis.suspectWeakRef.deref())).toBe(true);
Использование
await page.requestGC();
Возвращает
requests
Добавлено в: v1.56Возвращает до (на данный момент) 100 последних сетевых запросов со страницы. Подробнее см. page.on('request').
К возвращённым запросам следует обращаться сразу, иначе они могут быть собраны (garbage-collected), чтобы предотвратить неограниченный рост памяти по мере поступления новых запросов. После сборки получить большую часть информации о запросе невозможно.
Обратите внимание: запросы, сообщаемые через page.on('request'), не собираются, поэтому здесь есть компромисс между эффективным использованием памяти при page.requests() и объёмом доступной информации, сообщаемой через page.on('request').
Использование
await page.requests();
Возвращает
route
Добавлено до v1.9Маршрутизация предоставляет возможность изменять сетевые запросы, которые выполняются страницей.
После включения маршрутизации каждый запрос, соответствующий шаблону URL, будет приостановлен, если он не будет продолжен, выполнен или прерван.
Обработчик будет вызван только для первого URL, если ответ является перенаправлением.
page.route() не будет перехватывать запросы, перехваченные Service Worker. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив serviceWorkers в 'block'.
page.route() не будет перехватывать первый запрос всплывающей страницы. Используйте browserContext.route() вместо этого.
Использование
Пример простого обработчика, который прерывает все запросы изображений:
const page = await browser.newPage();
await page.route('**/*.{png,jpg,jpeg}', route => route.abort());
await page.goto('https://example.com');
await browser.close();
или тот же фрагмент, используя шаблон регулярного выражения:
const page = await browser.newPage();
await page.route(/(\.png$)|(\.jpg$)/, route => route.abort());
await page.goto('https://example.com');
await browser.close();
Можно исследовать запрос, чтобы решить, какое действие предпринять. Например, имитировать все запросы, содержащие некоторые данные POST, и оставлять все остальные запросы как есть:
await page.route('/api/**', async route => {
if (route.request().postData().includes('my-string'))
await route.fulfill({ body: 'mocked-data' });
else
await route.continue();
});
Если запрос соответствует нескольким зарегистрированным маршрутам, приоритет имеет маршрут, зарегистрированный последним.
Маршруты страницы имеют приоритет над маршрутами контекста браузера (настроенными с помощью browserContext.route()), если запрос соответствует обоим обработчикам.
Чтобы удалить маршрут с его обработчиком, вы можете использовать page.unroute().
Включение маршрутизации отключает HTTP-кэш.
Аргументы
-
urlstring | RegExp | URLPattern | function(URL):boolean#Glob-шаблон, регулярное выражение, шаблон URL или предикат, принимающий URL, для сопоставления URL при маршрутизации. Если в параметрах контекста задан baseURL, а переданный URL является строкой, которая не начинается с
*, он разрешается с помощью конструктораnew URL(). -
handlerfunction(Route, Request):Promise<Object> | Object#функция-обработчик для маршрутизации запроса.
-
optionsObject (опционально)
Возвращает
routeFromHAR
Добавлено в: v1.23Если указано, сетевые запросы, сделанные на странице, будут обслуживаться из HAR-файла. Подробнее читайте в разделе Воспроизведение из HAR.
Playwright не будет обслуживать запросы, перехваченные Service Worker, из HAR-файла. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив serviceWorkers в 'block'.
Использование
await page.routeFromHAR(har);
await page.routeFromHAR(har, options);
Аргументы
-
Путь к HAR файлу с предварительно записанными сетевыми данными. Если
pathявляется относительным путем, то он разрешается относительно текущей рабочей директории. -
optionsObject (опционально)-
notFound"abort" | "fallback" (опционально)#- Если установлено значение 'abort', любой запрос, не найденный в HAR-файле, будет прерван.
- Если установлено значение 'fallback', отсутствующие запросы будут отправлены в сеть.
По умолчанию abort.
-
Если указано, обновляет данный HAR с фактической сетевой информацией вместо обслуживания из файла. Файл записывается на диск при вызове browserContext.close().
-
updateContent"embed" | "attach" (опционально) Добавлено в: v1.32#Опциональная настройка для управления содержимым ресурсов. Если указано
attach, ресурсы сохраняются как отдельные файлы или записи в ZIP-архиве. Если указаноembed, содержимое сохраняется встраиваемым в HAR-файл. -
updateMode"full" | "minimal" (опционально) Добавлено в: v1.32#Когда установлено значение
minimal, записывается только информация, необходимая для маршрутизации из HAR. Это исключает размеры, время, страницу, куки, безопасность и другие типы информации HAR, которые не используются при воспроизведении из HAR. По умолчаниюminimal. -
urlstring | RegExp (опционально)#Глобальный шаблон, регулярное выражение или предикат для сопоставления URL запроса. Только запросы с URL, соответствующим шаблону, будут обслуживаться из HAR-файла. Если не указано, все запросы обслуживаются из HAR-файла.
-
Возвращает
routeWebSocket
Добавлено в: v1.48Этот метод позволяет изменять WebSocket-соединения, которые создаются страницей.
Обратите внимание, что только WebSocket, созданные после вызова этого метода, будут маршрутизироваться. Рекомендуется вызывать этот метод перед навигацией по странице.
Использование
Ниже приведен пример простого мока, который отвечает на одно сообщение. Подробнее и примеры смотрите в WebSocketRoute.
await page.routeWebSocket('/ws', ws => {
ws.onMessage(message => {
if (message === 'request')
ws.send('response');
});
});
Аргументы
-
urlstring | RegExp | URLPattern | function(URL):boolean#Только WebSocket с URL, соответствующим этому шаблону, будут маршрутизироваться. Строковый шаблон может быть относительным к baseURL контекстной опции.
-
handlerfunction(WebSocketRoute):Promise<Object> | Object#Функция-обработчик для маршрутизации WebSocket.
Возвращает
screenshot
Добавлено до v1.9Возвращает буфер с захваченным скриншотом.
Использование
await page.screenshot();
await page.screenshot(options);
Аргументы
optionsObject (опционально)-
animations"disabled" | "allow" (опционально)#При установке в
"disabled", останавливает CSS-анимации, CSS-переходы и веб-анимации. Анимации получают разное обращение в зависимости от их продолжительности:- конечные анимации быстро перематываются до завершения, чтобы они вызвали событие
transitionend. - бесконечные анимации отменяются до начального состояния, а затем воспроизводятся после скриншота.
По умолчанию
"allow", что оставляет анимации нетронутыми. - конечные анимации быстро перематываются до завершения, чтобы они вызвали событие
-
caret"hide" | "initial" (опционально)#При установке в
"hide", скриншот скроет текстовый курсор. При установке в"initial", поведение текстового курсора не будет изменено. По умолчанию"hide". -
-
xnumberx-координата верхнего левого угла области обрезки
-
ynumbery-координата верхнего левого угла области обрезки
-
widthnumberширина области обрезки
-
heightnumberвысота области обрезки
Объект, который указывает обрезку результирующего изображения.
-
-
fullPageboolean (опционально)#Если true, делает скриншот всей прокручиваемой страницы, вместо текущей видимой области. По умолчанию
false. -
maskArray<Locator> (опционально)#Укажите локаторы, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут покрыты розовым прямоугольником
#FF00FF(настраивается с помощью maskColor), который полностью покрывает их ограничивающий прямоугольник. Маска также применяется к невидимым элементам, см. Сопоставление только видимых элементов, чтобы отключить это. -
maskColorstring (опционально) Добавлено в: v1.35#Укажите цвет наложения для замаскированных элементов в CSS формате цвета. Цвет по умолчанию - розовый
#FF00FF. -
omitBackgroundboolean (опционально)#Скрывает белый фон по умолчанию и позволяет делать скриншоты с прозрачностью. Не применимо к изображениям
jpeg. По умолчаниюfalse. -
Путь к файлу для сохранения изображения. Тип скриншота будет определен по расширению файла. Если path является относительным путем, то он разрешается относительно текущей рабочей директории. Если путь не указан, изображение не будет сохранено на диск.
-
Качество изображения от 0 до 100. Не применяется к изображениям png. Для jpeg значение по умолчанию — 80. Для webp качество 100 (значение по умолчанию) позволяет получить изображение без потерь, а при меньших значениях используется сжатие с потерями.
-
scale"css" | "device" (необязательно)#При установке в
"css", скриншот будет иметь один пиксель на каждый css пиксель на странице. Для устройств с высоким разрешением это позволит уменьшить размер скриншотов. Использование опции"device"создаст один пиксель на каждый пиксель устройства, так что скриншоты устройств с высоким разрешением будут в два раза больше или даже больше.
По умолчанию — "device".
-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
stylestring (необязательно) Добавлено в: v1.41#Текст таблицы стилей для применения при создании скриншота. Здесь вы можете скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы помочь вам создавать повторяемые скриншоты. Эта таблица стилей проникает в Shadow DOM и применяется к внутренним фреймам.
Максимальное время ожидания в миллисекундах. По умолчанию 0 — без ограничения времени ожидания. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
type"png" | "jpeg" | "webp" (необязательно)#Укажите тип скриншота, по умолчанию
png.
Возвращает
setContent
Добавлено до версии v1.9Этот метод внутренне вызывает document.write(), наследуя все его специфические характеристики и поведение.
Использование
await page.setContent(html);
await page.setContent(html, options);
Аргументы
HTML-разметка, которую нужно задать для страницы.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время операции в миллисекундах. По умолчанию
0- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
-
Возвращает
setDefaultNavigationTimeout
Добавлено до версии v1.9Эта настройка изменит максимальное время навигации по умолчанию для следующих методов и связанных с ними ярлыков:
- page.goBack()
- page.goForward()
- page.goto()
- page.reload()
- page.setContent()
- page.waitForNavigation()
- page.waitForURL()
Использование
page.setDefaultNavigationTimeout(timeout);
Аргументы
setDefaultTimeout
Добавлено до версии v1.9Эта настройка изменит максимальное время по умолчанию для всех методов, принимающих опцию timeout.
page.setDefaultNavigationTimeout() имеет приоритет над page.setDefaultTimeout().
Использование
page.setDefaultTimeout(timeout);
Аргументы
setExtraHTTPHeaders
Добавлено до версии v1.9Дополнительные HTTP-заголовки будут отправляться с каждым запросом, инициированным страницей.
page.setExtraHTTPHeaders() не гарантирует порядок заголовков в исходящих запросах.
Использование
await page.setExtraHTTPHeaders(headers);
Аргументы
-
headersObject<string, string>#Объект, содержащий дополнительные HTTP-заголовки, которые будут отправляться с каждым запросом. Все значения заголовков должны быть строками.
Возвращает
setViewportSize
Добавлено до версии v1.9В случае нескольких страниц в одном браузере каждая страница может иметь свой собственный размер области просмотра. Однако browser.newContext() позволяет установить размер области просмотра (и многое другое) для всех страниц в контексте сразу.
page.setViewportSize() изменит размер страницы. Многие веб-сайты не ожидают, что телефоны будут менять размер, поэтому вы должны установить размер области просмотра перед переходом на страницу. page.setViewportSize() также сбросит размер screen, используйте browser.newContext() с параметрами screen и viewport, если вам нужен лучший контроль над этими свойствами.
Использование
const page = await browser.newPage();
await page.setViewportSize({
width: 640,
height: 480,
});
await page.goto('https://example.com');
Аргументы
Возвращает
title
Добавлено до версии v1.9Возвращает заголовок страницы.
Использование
await page.title();
Возвращает
unroute
Добавлено до версии v1.9Удаляет маршрут, созданный с помощью page.route(). Когда handler не указан, удаляет все маршруты для url.
Использование
await page.unroute(url);
await page.unroute(url, handler);
Аргументы
-
urlstring | RegExp | URLPattern | function(URL):boolean#Glob-шаблон, регулярное выражение, шаблон URL или предикат, принимающий URL, для сопоставления при маршрутизации.
-
handlerfunction(Route, Request):Promise<Object> | Object (необязательный)#Необязательная функция-обработчик для маршрутизации запроса.
Возвращает
unrouteAll
Добавлено в версии: v1.41Удаляет все маршруты, созданные с помощью page.route() и page.routeFromHAR().
Использование
await page.unrouteAll();
await page.unrouteAll(options);
Аргументы
optionsObject (опционально)-
behavior"wait" | "ignoreErrors" | "default" (опционально)#Указывает, следует ли ждать уже выполняющихся обработчиков и что делать, если они выбрасывают ошибки:
'default'- не ждать завершения текущих вызовов обработчиков (если есть), если обработчик выбрасывает ошибку, это может привести к необработанной ошибке'wait'- ждать завершения текущих вызовов обработчиков (если есть)'ignoreErrors'- не ждать завершения текущих вызовов обработчиков (если есть), все ошибки, выброшенные обработчиками после удаления маршрута, будут тихо пойманы
-
Возвращает
url
Добавлено до версии v1.9Использование
page.url();
Возвращает
video
Добавлено до версии v1.9Объект Video, связанный с этой страницей. Может использоваться для доступа к видеофайлу при использовании параметра контекста recordVideo.
Использование
page.video();
Возвращает
viewportSize
Добавлено до версии v1.9Использование
page.viewportSize();
Возвращает
waitForEvent
Добавлено до v1.9Ожидает, когда событие будет вызвано, и передает его значение в функцию-предикат. Возвращает, когда предикат возвращает истинное значение. Выдаст ошибку, если страница будет закрыта до того, как событие будет вызвано. Возвращает значение данных события.
Использование
// Начинаем ожидание загрузки перед кликом. Обратите внимание, что нет await.
const downloadPromise = page.waitForEvent('download');
await page.getByText('Download file').click();
const download = await downloadPromise;
Аргументы
-
Имя события, обычно передаваемое в
*.on(event). -
optionsOrPredicatefunction | Object (опционально)#-
predicatefunctionПолучает данные события и разрешается в истинное значение, когда ожидание должно завершиться.
-
timeoutnumber (опционально)Максимальное время ожидания в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Либо предикат, который получает событие, либо объект с опциями. Необязательно.
-
-
optionsObject (опционально)
Получает данные события и возвращает значение, приводимое к true, когда ожидание должно завершиться.
-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция вызовет ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут.
Возвращает
waitForFunction
Добавлено до v1.9Возвращает, когда pageFunction возвращает истинное значение. Разрешается в JSHandle истинного значения.
Использование
page.waitForFunction() может быть использован для наблюдения за изменением размера области просмотра:
const { webkit } = require('playwright'); // Или 'chromium' или 'firefox'.
(async () => {
const browser = await webkit.launch();
const page = await browser.newPage();
const watchDog = page.waitForFunction(() => window.innerWidth < 100);
await page.setViewportSize({ width: 50, height: 50 });
await watchDog;
await browser.close();
})();
Чтобы передать аргумент в предикат функции page.waitForFunction():
const selector = '.foo';
await page.waitForFunction(selector => !!document.querySelector(selector), selector);
Аргументы
-
pageFunctionfunction | string#Функция, которая будет выполнена в контексте страницы.
-
argEvaluationArgument (опционально)#Необязательный аргумент для передачи в pageFunction.
-
optionsObject (опционально)
Если polling имеет значение 'raf', то pageFunction постоянно выполняется в функции обратного вызова requestAnimationFrame. Если polling — число, оно интерпретируется как интервал в миллисекундах, с которым будет выполняться функция. По умолчанию используется raf.
-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время ожидания в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Возвращает
waitForLoadState
Добавлено до v1.9Возвращает, когда достигнуто требуемое состояние загрузки.
Это разрешается, когда страница достигает требуемого состояния загрузки, по умолчанию load. Навигация должна быть завершена, когда вызывается этот метод. Если текущий документ уже достиг требуемого состояния, разрешается немедленно.
В большинстве случаев этот метод не нужен, потому что Playwright автоматически ожидает перед каждым действием.
Использование
await page.getByRole('button').click(); // Клик вызывает навигацию.
await page.waitForLoadState(); // Обещание разрешается после события 'load'.
const popupPromise = page.waitForEvent('popup');
await page.getByRole('button').click(); // Клик вызывает всплывающее окно.
const popup = await popupPromise;
await popup.waitForLoadState('domcontentloaded'); // Ожидание события 'DOMContentLoaded'.
console.log(await popup.title()); // Всплывающее окно готово к использованию.
Аргументы
state"load" | "domcontentloaded" | "networkidle" (опционально)#
Необязательное состояние загрузки, которого нужно дождаться; по умолчанию — load. Если при загрузке текущего документа указанное состояние уже было достигнуто, метод завершается немедленно. Возможные значения:
'load'- дождаться наступления событияload.'domcontentloaded'- дождаться наступления событияDOMContentLoaded.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ дождаться отсутствия сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования; вместо этого используйте веб-проверки для оценки готовности страницы.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция выбросит ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время операции в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForRequest
Добавлено до v1.9Ожидает соответствующий запрос и возвращает его. Подробнее о событиях см. в разделе ожидание события.
Использование
// Начинаем ожидание запроса перед кликом. Обратите внимание, что await отсутствует.
const requestPromise = page.waitForRequest('https://example.com/resource');
await page.getByText('trigger request').click();
const request = await requestPromise;
// Альтернативный способ с предикатом. Обратите внимание, что await отсутствует.
const requestPromise = page.waitForRequest(request =>
request.url() === 'https://example.com' && request.method() === 'GET',
);
await page.getByText('trigger request').click();
const request = await requestPromise;
Аргументы
URL запроса в виде строки, регулярного выражения или предиката, принимающего объект Request. Если в параметрах контекста указан baseURL, а переданный URL является путём, он объединяется с базовым URL с помощью конструктора new URL().
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время ожидания в миллисекундах, по умолчанию 30 секунд, передайте
0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить с помощью метода page.setDefaultTimeout().
-
Возвращает
waitForResponse
Добавлено до v1.9Возвращает соответствующий ответ. Подробнее о событиях см. в разделе ожидание события.
Использование
// Начинаем ожидание ответа перед кликом. Обратите внимание, что await отсутствует.
const responsePromise = page.waitForResponse('https://example.com/resource');
await page.getByText('trigger response').click();
const response = await responsePromise;
// Альтернативный способ с предикатом. Обратите внимание, что await отсутствует.
const responsePromise = page.waitForResponse(response =>
response.url() === 'https://example.com' && response.status() === 200
&& response.request().method() === 'GET'
);
await page.getByText('trigger response').click();
const response = await responsePromise;
Аргументы
URL запроса в виде строки, регулярного выражения или предиката, принимающего объект Response. Если в параметрах контекста указан baseURL, а переданный URL является путём, он объединяется с базовым URL с помощью конструктора new URL().
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция завершится с ошибкой. Обратите внимание, что указание сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время ожидания в миллисекундах, по умолчанию 30 секунд, передайте
0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForURL
Добавлено в: v1.11Ожидает, пока основной фрейм перейдет на указанный URL.
Использование
await page.click('a.delayed-navigation'); // Клик по ссылке косвенно вызовет навигацию
await page.waitForURL('**/target.html');
Аргументы
-
urlstring | RegExp | URLPattern | function(URL):boolean#Glob-шаблон, регулярное выражение, шаблон URL или предикат, принимающий URL, для проверки соответствия при ожидании навигации. Обратите внимание: если параметр — строка без подстановочных символов, метод будет ожидать навигации на URL, в точности совпадающий с этой строкой.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция завершится с ошибкой. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время операции в миллисекундах. По умолчанию
0- без тайм-аута. Значение по умолчанию можно изменить через опциюnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
-
Возвращает
workers
Добавлено до v1.9Этот метод возвращает все выделенные WebWorkers, связанные со страницей.
Это не включает ServiceWorkers
Использование
page.workers();
Возвращает
Свойства
clock
Добавлено в: v1.45Playwright имеет возможность имитировать работу часов и течение времени.
Использование
page.clock
Тип
coverage
Добавлено до v1.9На данный момент доступно только для Chromium.
Реализация покрытия, специфичная для браузера. Подробнее см. Coverage.
Использование
page.coverage
Тип
keyboard
Добавлено до v1.9Использование
page.keyboard
Тип
localStorage
Added in: v1.61Предоставляет доступ к localStorage страницы для текущего источника. См. WebStorage.
await page.localStorage.setItem('token', 'abc');
const token = await page.localStorage.getItem('token');
Usage
page.localStorage
Type
mouse
Добавлено до v1.9Использование
page.mouse
Тип
request
Добавлено в: v1.16Помощник для тестирования API, связанный с этой страницей. Этот метод возвращает тот же экземпляр, что и browserContext.request в контексте страницы. Подробнее см. browserContext.request.
Использование
page.request
Тип
screencast
Added in: v1.59Объект Screencast, связанный с этой страницей.
Usage
await page.screencast.start({
onFrame: ({ data }) => {
console.log('received frame, jpeg size:', data.length);
},
});
// ... perform actions ...
await page.screencast.stop();
Type
sessionStorage
Added in: v1.61Предоставляет доступ к sessionStorage страницы для текущего источника. См. WebStorage.
await page.sessionStorage.setItem('flag', '1');
const flag = await page.sessionStorage.getItem('flag');
Usage
page.sessionStorage
Type
touchscreen
Добавлено до v1.9Использование
page.touchscreen
Тип
webmcp
Добавлено в: v1.64Инструменты, которые главный фрейм регистрирует через экспериментальный браузерный API WebMCP. Сокращённая запись для frame.webmcp главного фрейма page.mainFrame(). Подробнее см. WebMCP.
Использование
const tools = await page.webmcp.tools();
const result = await page.webmcp.callTool('add', { a: 2, b: 40 });
Тип
События
on('close')
Добавлено до v1.9Вызывается, когда страница закрывается.
Использование
page.on('close', data => {});
Данные события
on('console')
Добавлено до v1.9Вызывается, когда JavaScript на странице вызывает один из методов консольного API, например, console.log или console.dir.
Аргументы, переданные в console.log, доступны в аргументе обработчика события ConsoleMessage.
Использование
page.on('console', async msg => {
const values = [];
for (const arg of msg.args())
values.push(await arg.jsonValue());
console.log(...values);
});
await page.evaluate(() => console.log('hello', 5, { foo: 'bar' }));
Данные события
on('crash')
Добавлено до v1.9Вызывается, когда страница падает. Страницы браузера могут падать, если они пытаются выделить слишком много памяти. Когда страница падает, текущие и последующие операции будут вызывать исключения.
Наиболее распространенный способ справиться с падениями - поймать исключение:
try {
// Падение может произойти во время клика.
await page.click('button');
// Или во время ожидания события.
await page.waitForEvent('popup');
} catch (e) {
// Когда страница падает, сообщение об исключении содержит 'crash'.
}
Использование
page.on('crash', data => {});
Данные события
on('dialog')
Добавлено до v1.9Вызывается, когда появляется JavaScript-диалог, такой как alert, prompt, confirm или beforeunload. Слушатель должен либо dialog.accept(), либо dialog.dismiss() диалог - в противном случае страница заморозится, ожидая диалога, и действия, такие как клик, никогда не завершатся.
Использование
page.on('dialog', dialog => dialog.accept());
Когда нет слушателей page.on('dialog') или browserContext.on('dialog'), все диалоги автоматически отклоняются.
Данные события
on('dialogclosed')
Added in: v1.63Emitted when a JavaScript dialog has been closed, either by dialog.accept(), by dialog.dismiss(), or manually by the user in the headed browser.
Usage
page.on('dialogclosed', data => {});
Event data
on('domcontentloaded')
Добавлено в: v1.9Вызывается, когда JavaScript-событие DOMContentLoaded отправляется.
Использование
page.on('domcontentloaded', data => {});
Данные события
on('download')
Добавлено до v1.9Вызывается, когда начинается загрузка вложения. Пользователь может получить доступ к основным операциям с файлами на загруженном контенте через переданный экземпляр Download.
Использование
page.on('download', data => {});
Данные события
on('filechooser')
Добавлено в: v1.9Вызывается, когда предполагается появление выбора файла, например, после нажатия на <input type=file>. Playwright может ответить на это, установив файлы ввода с помощью fileChooser.setFiles(), которые могут быть загружены после этого.
page.on('filechooser', async fileChooser => {
await fileChooser.setFiles(path.join(__dirname, '/tmp/myfile.pdf'));
});
Использование
page.on('filechooser', data => {});
Данные события
on('frameattached')
Добавлено в: v1.9Вызывается, когда фрейм присоединяется.
Использование
page.on('frameattached', data => {});
Данные события
on('framedetached')
Добавлено в: v1.9Вызывается, когда фрейм отсоединяется.
Использование
page.on('framedetached', data => {});
Данные события
on('framenavigated')
Добавлено в: v1.9Вызывается, когда фрейм переходит на новый URL.
Использование
page.on('framenavigated', data => {});
Данные события
on('load')
Добавлено до v1.9Вызывается, когда JavaScript событие load отправляется.
Использование
page.on('load', data => {});
Данные события
on('pageerror')
Добавлено в: v1.9Вызывается, когда на странице происходит необработанное исключение.
// Логировать все необработанные ошибки в терминал
page.on('pageerror', exception => {
console.log(`Необработанное исключение: "${exception}"`);
});
// Перейти на страницу с исключением.
await page.goto('data:text/html,<script>throw new Error("Test")</script>');
Использование
page.on('pageerror', data => {});
Данные события
on('popup')
Добавлено до v1.9Вызывается, когда страница открывает новую вкладку или окно. Это событие вызывается в дополнение к browserContext.on('page'), но только для всплывающих окон, относящихся к этой странице.
Самый ранний момент, когда страница доступна, это когда она перешла на начальный URL. Например, при открытии всплывающего окна с помощью window.open('http://example.com'), это событие сработает, когда сетевой запрос к "http://example.com" будет выполнен и его ответ начнет загружаться во всплывающем окне. Если вы хотите маршрутизировать/слушать этот сетевой запрос, используйте browserContext.route() и browserContext.on('request') соответственно, вместо аналогичных методов на Page.
// Начать ожидание всплывающего окна перед кликом. Обратите внимание, что нет await.
const popupPromise = page.waitForEvent('popup');
await page.getByText('open the popup').click();
const popup = await popupPromise;
console.log(await popup.evaluate('location.href'));
Используйте page.waitForLoadState(), чтобы дождаться, пока страница достигнет определенного состояния (в большинстве случаев это не потребуется).
Использование
page.on('popup', data => {});
Данные события
on('request')
Добавлено до версии v1.9Вызывается, когда страница отправляет запрос. Объект request является доступным только для чтения. Чтобы перехватывать и изменять запросы, см. page.route() или browserContext.route().
Использование
page.on('request', data => {});
Данные события
on('requestfailed')
Добавлено в версии: v1.9Вызывается, когда запрос не удается выполнить, например, из-за истечения времени ожидания.
page.on('requestfailed', request => {
console.log(request.url() + ' ' + request.failure().errorText);
});
Ответы с ошибками HTTP, такие как 404 или 503, все равно считаются успешными с точки зрения HTTP, поэтому запрос завершится событием page.on('requestfinished'), а не page.on('requestfailed'). Запрос будет считаться неудачным только в том случае, если клиент не может получить HTTP-ответ от сервера, например, из-за сетевой ошибки net::ERR_FAILED.
Использование
page.on('requestfailed', data => {});
Данные события
on('requestfinished')
Добавлено в версии: v1.9Вызывается, когда запрос успешно завершается после загрузки тела ответа. Для успешного ответа последовательность событий: request, response и requestfinished.
Использование
page.on('requestfinished', data => {});
Данные события
on('response')
Добавлено до версии v1.9Вызывается, когда статус и заголовки response получены для запроса. Для успешного ответа последовательность событий: request, response и requestfinished.
Использование
page.on('response', data => {});
Данные события
on('websocket')
Добавлено в версии: v1.9Вызывается, когда отправляется запрос WebSocket.
Использование
page.on('websocket', data => {});
Данные события
on('worker')
Добавлено до версии v1.9Вызывается, когда страница порождает выделенный WebWorker.
Использование
page.on('worker', data => {});
Данные события
Устарело
$
Добавлено в версии: v1.9Используйте основанный на локаторах page.locator() вместо этого. Подробнее о локаторах.
Метод находит элемент, соответствующий указанному селектору на странице. Если ни один элемент не соответствует селектору, возвращаемое значение разрешается в null. Чтобы дождаться появления элемента на странице, используйте locator.waitFor().
Использование
await page.$(selector);
await page.$(selector, options);
Аргументы
-
Селектор для поиска.
-
optionsObject (опционально)
Возвращает
$$
Добавлено в: v1.9Вместо этого используйте вариант на основе локатора — page.locator(). Подробнее о локаторах.
Метод находит все элементы, соответствующие указанному селектору на странице. Если ни один элемент не соответствует селектору, возвращаемое значение будет равно [].
Использование
await page.$$(selector);
Аргументы
Возвращает
$eval
Добавлено в: v1.9Этот метод не ждёт, пока элемент пройдёт проверки готовности к действию (actionability checks), поэтому может приводить к нестабильным (flaky) тестам. Вместо этого используйте locator.evaluate(), другие вспомогательные методы Locator или web-first assertions.
Метод находит элемент, соответствующий указанному селектору на странице, и передает его в качестве первого аргумента в pageFunction. Если ни один элемент не соответствует селектору, метод выбрасывает ошибку. Возвращает значение pageFunction.
Если pageFunction возвращает Promise, то page.$eval() будет ожидать разрешения промиса и вернет его значение.
Использование
const searchValue = await page.$eval('#search', el => el.value);
const preloadHref = await page.$eval('link[rel=preload]', el => el.href);
const html = await page.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello');
// В TypeScript, этот пример требует явной аннотации типа (HTMLLinkElement) на el:
const preloadHrefTS = await page.$eval('link[rel=preload]', (el: HTMLLinkElement) => el.href);
Аргументы
-
Селектор для выполнения запроса.
-
pageFunctionfunction(Element) | string#Функция для выполнения в контексте страницы.
-
argEvaluationArgument (опционально)#Необязательный аргумент для передачи в pageFunction.
-
optionsObject (опционально)
Возвращает
$$eval
Добавлено в: v1.9В большинстве случаев locator.evaluateAll(), другие вспомогательные методы Locator и web-first assertions справляются с этой задачей лучше.
Метод находит все элементы, соответствующие указанному селектору на странице, и передает массив найденных элементов в качестве первого аргумента в pageFunction. Возвращает результат вызова pageFunction.
Если pageFunction возвращает Promise, то page.$$eval() будет ожидать разрешения промиса и вернет его значение.
Использование
const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10);
Аргументы
-
Селектор для выполнения запроса.
-
pageFunctionfunction(Array<Element>) | string#Функция для выполнения в контексте страницы.
-
argEvaluationArgument (опционально)#Необязательный аргумент для передачи в pageFunction.
Возвращает
check
Добавлено до v1.9Используйте основанный на локаторах locator.check() вместо этого. Подробнее о локаторах.
Этот метод отмечает элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, этот метод возвращается немедленно.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте page.mouse, чтобы кликнуть в центр элемента.
- Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await page.check(selector);
await page.check(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, прокручивает ли Playwright страницу, чтобы сделать элемент видимым перед выполнением действия. По умолчанию используется значение
"auto", при котором элемент при необходимости прокручивается в видимую область, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении"none"Playwright не выполняет прокрутку к элементу, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
Возвращает
click
Добавлено до v1.9Используйте основанный на локаторах locator.click() вместо этого. Подробнее о локаторах.
Этот метод кликает по элементу, соответствующему selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте page.mouse, чтобы кликнуть в центр элемента или в указанную position.
- Подождите, пока инициированные навигации не завершатся успешно или не завершатся с ошибкой, если только не установлена опция noWaitAfter.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await page.click(selector);
await page.click(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
button"left" | "right" | "middle" (опционально)#По умолчанию
left. -
clickCountnumber (опционально)#По умолчанию 1. См. UIEvent.detail.
-
Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию 0. -
Следует ли обходить проверки actionability. По умолчанию
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (опционально)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
noWaitAfterboolean (опционально)#УстарелоВ будущем эта опция будет по умолчанию
true.Действия, инициирующие навигации, ожидают, пока эти навигации не произойдут и страницы не начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Вам понадобится эта опция только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false.
-
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, прокручивает ли Playwright страницу, чтобы элемент оказался в области просмотра, перед выполнением действия. По умолчанию используется
"auto": при необходимости элемент прокручивается в область просмотра, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. Если установлено значение"none", Playwright не выполняет прокрутку к элементу, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiersбудут нажаты независимо отtrial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
Возвращает
dblclick
Добавлено до версии v1.9Используйте основанный на локаторах locator.dblclick() вместо этого. Подробнее о локаторах.
Этот метод выполняет двойной клик по элементу, соответствующему selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если такого элемента нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте page.mouse для двойного клика в центре элемента или в указанной position.
Если все шаги не завершены в течение указанного timeout, этот метод выбрасывает TimeoutError. Установка нулевого таймаута отключает это.
page.dblclick() генерирует два события click и одно событие dblclick.
Использование
await page.dblclick(selector);
await page.dblclick(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
button"left" | "right" | "middle" (опционально)#По умолчанию
left. -
Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию 0. -
Пропускать ли проверки actionability. По умолчанию
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (опционально)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается как "Control" на Windows и Linux и как "Meta" на macOS.
-
noWaitAfterboolean (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, прокручивает ли Playwright страницу, чтобы элемент оказался в видимой области, перед выполнением действия. По умолчанию используется
"auto": при необходимости элемент прокручивается в видимую область, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении"none"Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в видимой области. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiersбудут нажаты независимо отtrial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
Возвращает
dispatchEvent
Добавлено до версии v1.9Используйте основанный на локаторах locator.dispatchEvent() вместо этого. Подробнее о локаторах.
Пример ниже генерирует событие click на элементе. Независимо от состояния видимости элемента, click генерируется. Это эквивалентно вызову element.click().
Использование
await page.dispatchEvent('button#submit', 'click');
Внутри создается экземпляр события на основе указанного type, инициализируется с помощью свойств eventInit и генерируется на элементе. События по умолчанию composed, cancelable и всплывают.
Поскольку eventInit специфичен для события, пожалуйста, обратитесь к документации по событиям для списков начальных свойств:
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
Вы также можете указать JSHandle в качестве значения свойства, если хотите, чтобы живые объекты передавались в событие:
// Обратите внимание, что вы можете создать DataTransfer только в Chromium и Firefox
const dataTransfer = await page.evaluateHandle(() => new DataTransfer());
await page.dispatchEvent('#source', 'dragstart', { dataTransfer });
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Тип DOM события:
"click","dragstart", и т.д. -
eventInitEvaluationArgument (опционально)#
Необязательные свойства инициализации, специфичные для события.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и выбросит ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
fill
Добавлено до v1.9Используйте вариант на основе локаторов [locator.fill()] вместо этого. Подробнее о локаторах.
Этот метод ожидает элемент, соответствующий selector, ожидает проверки actionability, фокусирует элемент, заполняет его и вызывает событие input после заполнения. Обратите внимание, что вы можете передать пустую строку, чтобы очистить поле ввода.
Если целевой элемент не является элементом <input>, <textarea> или [contenteditable], этот метод вызывает ошибку. Однако, если элемент находится внутри элемента <label>, который имеет связанный control, будет заполнен именно этот контрол.
Чтобы отправить более детализированные события клавиатуры, используйте locator.pressSequentially().
Использование
await page.fill(selector, value);
await page.fill(selector, value, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Значение для заполнения элемента
<input>,<textarea>или[contenteditable]. -
optionsObject (опционально)
Эта опция не оказывает никакого влияния.
-
signalAbortSignal (необязательно) Добавлено в версии: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в версии: v1.14#Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Возвращает
focus
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.focus(). Подробнее о локаторах.
Этот метод получает элемент с selector и фокусирует его. Если нет элемента, соответствующего selector, метод ждет, пока соответствующий элемент не появится в DOM.
Использование
await page.focus(selector);
await page.focus(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
getAttribute
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.getAttribute(). Подробнее о локаторах.
Возвращает значение атрибута элемента.
Использование
await page.getAttribute(selector, name);
await page.getAttribute(selector, name, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
Имя атрибута, значение которого нужно получить.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
hover
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.hover(). Подробнее о локаторах.
Этот метод наводит курсор на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse, чтобы навести курсор на центр элемента или указанную position.
Если все шаги в совокупности не завершились в течение указанного timeout, этот метод вызывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await page.hover(selector);
await page.hover(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
Следует ли обходить проверки actionability. По умолчанию
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (опционально)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается как "Control" на Windows и Linux и как "Meta" на macOS.
-
noWaitAfterboolean (опционально) Добавлено в: v1.28#УстарелоЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, будет ли Playwright прокручивать элемент в область видимости перед выполнением действия. По умолчанию используется значение
"auto", при котором элемент при необходимости прокручивается в область видимости, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении"none"Playwright не прокручивает элемент, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и выбросит ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiersбудут нажаты независимо отtrial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
Возвращает
innerHTML
Добавлено до v1.9Используйте вариант на основе локаторов [locator.innerHTML()] вместо этого. Подробнее о локаторах.
Возвращает element.innerHTML.
Использование
await page.innerHTML(selector);
await page.innerHTML(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый из них.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
innerText
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.innerText(). Подробнее о локаторах.
Возвращает element.innerText.
Использование
await page.innerText(selector);
await page.innerText(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и выбросит ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
inputValue
Добавлено в: v1.13Вместо этого используйте вариант на основе локатора — locator.inputValue(). Подробнее о локаторах.
Возвращает input.value для выбранного элемента <input>, <textarea> или <select>.
Вызывает ошибку для элементов, не являющихся вводом. Однако, если элемент находится внутри элемента <label>, который имеет ассоциированный control, возвращает значение этого контрола.
Использование
await page.inputValue(selector);
await page.inputValue(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isChecked
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.isChecked(). Подробнее о локаторах.
Возвращает, отмечен ли элемент. Вызывает ошибку, если элемент не является флажком или радиокнопкой.
Использование
await page.isChecked(selector);
await page.isChecked(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isDisabled
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.isDisabled(). Подробнее о локаторах.
Возвращает, отключен ли элемент, противоположность enabled.
Использование
await page.isDisabled(selector);
await page.isDisabled(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isEditable
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.isEditable(). Подробнее о локаторах.
Возвращает, является ли элемент редактируемым.
Использование
await page.isEditable(selector);
await page.isEditable(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и выбросит ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isEnabled
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.isEnabled(). Подробнее о локаторах.
Возвращает, является ли элемент enabled.
Использование
await page.isEnabled(selector);
await page.isEnabled(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый из них.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isHidden
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.isHidden(). Подробнее о локаторах.
Возвращает, является ли элемент скрытым, противоположность visible. selector, который не соответствует ни одному элементу, считается скрытым.
Использование
await page.isHidden(selector);
await page.isHidden(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
strictboolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Устарело
Эта опция игнорируется. page.isHidden() не ждет, пока элемент станет скрытым, и возвращается немедленно.
-
Возвращает
isVisible
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.isVisible(). Подробнее о локаторах.
Возвращает, является ли элемент visible. selector, который не соответствует ни одному элементу, считается невидимым.
Использование
await page.isVisible(selector);
await page.isVisible(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
strictboolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Устарело
Эта опция игнорируется. page.isVisible() не ждет, пока элемент станет видимым, и возвращается немедленно.
-
Возвращает
press
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — 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". При указании с модификатором, модификатор нажимается и удерживается, пока не будет нажата последующая клавиша.
Использование
const page = await browser.newPage();
await page.goto('https://keycode.info');
await page.press('body', 'A');
await page.screenshot({ path: 'A.png' });
await page.press('body', 'ArrowLeft');
await page.screenshot({ path: 'ArrowLeft.png' });
await page.press('body', 'Shift+O');
await page.screenshot({ path: 'O.png' });
await browser.close();
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя клавиши для нажатия или символ для генерации, например,
ArrowLeftилиa. -
optionsObject (опционально)-
Время ожидания между
keydownиkeyupв миллисекундах. По умолчанию 0. -
noWaitAfterboolean (опционально)#УстарелоЭта опция по умолчанию будет
trueв будущем.Действия, инициирующие навигации, ожидают, пока эти навигации произойдут и страницы начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Эта опция нужна только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false.
-
Действия, инициирующие навигацию, ожидают выполнения этой навигации и начала загрузки страниц. Вы можете отключить это ожидание, установив данный флаг. Эта опция нужна только в исключительных случаях, например при переходе на недоступные страницы. По умолчанию — false.
-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Возвращает
selectOption
Добавлено до v1.9Используйте основанный на локаторах locator.selectOption() вместо этого. Подробнее о локаторах.
Этот метод ожидает элемент, соответствующий selector, ожидает проверки actionability, ждет, пока все указанные опции будут присутствовать в элементе <select>, и выбирает эти опции.
Если целевой элемент не является элементом <select>, этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>, который имеет ассоциированный control, будет использован этот control.
Возвращает массив значений опций, которые были успешно выбраны.
Вызывает событие change и input, как только все предоставленные опции были выбраны.
Использование
// Одиночный выбор, соответствующий значению или метке
page.selectOption('select#colors', 'blue');
// одиночный выбор, соответствующий метке
page.selectOption('select#colors', { label: 'Blue' });
// множественный выбор
page.selectOption('select#colors', ['red', 'green', 'blue']);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
valuesnull | string | ElementHandle | Array<string> | Object | Array<ElementHandle> | Array<Object>#-
valuestring (опционально)Соответствует
option.value. Опционально. -
labelstring (опционально)Соответствует
option.label. Опционально. -
indexnumber (опционально)Соответствует индексу. Опционально.
Опции для выбора. Если у
<select>есть атрибутmultiple, все соответствующие опции выбираются, в противном случае выбирается только первая опция, соответствующая одной из переданных опций. Строковые значения соответствуют как значениям, так и меткам. Опция считается соответствующей, если все указанные свойства совпадают. -
-
optionsObject (опционально)
Этот параметр не оказывает никакого эффекта.
-
signalAbortSignal (необязательный) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательный) Добавлено в: v1.14#Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Возвращает
setChecked
Добавлено в: v1.15Используйте вариант на основе локаторов [locator.setChecked()] вместо этого. Подробнее о локаторах.
Этот метод устанавливает или снимает флажок элемента, соответствующего selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку.
- Если элемент уже имеет правильное состояние флажка, этот метод немедленно возвращает управление.
- Подождите, пока не будут выполнены проверки actionability для найденного элемента, если не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле видимости, если это необходимо.
- Используйте page.mouse для нажатия в центре элемента.
- Убедитесь, что элемент теперь отмечен или не отмечен. Если нет, этот метод вызывает ошибку.
Если все шаги не завершены в течение указанного timeout, этот метод вызывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await page.setChecked(selector, checked);
await page.setChecked(selector, checked, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Указывает, следует ли установить или снять флажок.
-
optionsObject (опционально)
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется одна из видимых точек элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, будет ли Playwright прокручивать страницу, чтобы сделать элемент видимым перед выполнением действия. По умолчанию используется
"auto": при необходимости элемент прокручивается в область видимости, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении"none"Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию, без его выполнения.
Возвращает
setInputFiles
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.setInputFiles(). Подробнее о локаторах.
Устанавливает значение элемента ввода файла в указанные пути к файлам или файлы. Если некоторые из filePaths являются относительными путями, они разрешаются относительно текущего рабочего каталога. Для пустого массива очищает выбранные файлы. Для входных данных с атрибутом [webkitdirectory] поддерживается только один путь к каталогу.
Этот метод ожидает, что selector указывает на input element. Однако, если элемент находится внутри элемента <label>, который имеет связанную control, он нацелен на контроль вместо этого.
Использование
await page.setInputFiles(selector, files);
await page.setInputFiles(selector, files, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)
Этот параметр не оказывает никакого влияния.
-
signalAbortSignal (необязательный) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что указание сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательный) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Возвращает
tap
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.tap(). Подробнее о локаторах.
Этот метод выполняет нажатие на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если такого элемента нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте page.touchscreen для нажатия на центр элемента или указанную position.
Если все шаги в совокупности не завершились в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
page.tap() выбросит исключение, если параметр hasTouch контекста браузера имеет значение false.
Использование
await page.tap(selector);
await page.tap(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
Следует ли обходить проверки actionability. По умолчанию
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (опционально)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
noWaitAfterboolean (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, прокручивает ли Playwright страницу, чтобы элемент оказался в области просмотра перед выполнением действия. По умолчанию используется значение
"auto", при котором элемент при необходимости прокручивается в область просмотра, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении"none"Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiersбудут нажаты независимо отtrial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
Возвращает
textContent
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.textContent(). Подробнее о локаторах.
Возвращает element.textContent.
Использование
await page.textContent(selector);
await page.textContent(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и выбросит ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
type
Добавлено до v1.9В большинстве случаев вместо этого следует использовать locator.fill(). Нажимать клавиши по одной требуется только если на странице есть специальная обработка клавиатуры — в этом случае используйте locator.pressSequentially().
Отправляет событие keydown, keypress/input и keyup для каждого символа в тексте. page.type может использоваться для отправки детализированных событий клавиатуры. Для заполнения значений в полях формы используйте page.fill().
Чтобы нажать специальную клавишу, такую как Control или ArrowDown, используйте keyboard.press().
Использование
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Текст для ввода в фокусированный элемент.
-
optionsObject (опционально)
Этот параметр не оказывает никакого эффекта.
-
signalAbortSignal (необязательный) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательный) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Возвращает
uncheck
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.uncheck(). Подробнее о локаторах.
Этот метод снимает отметку с элемента, соответствующего selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку. Если элемент уже снят с отметки, этот метод сразу возвращает управление.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse для нажатия в центре элемента.
- Убедитесь, что элемент теперь снят с отметки. Если нет, этот метод вызывает ошибку.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод вызывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await page.uncheck(selector);
await page.uncheck(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, прокручивает ли Playwright страницу, чтобы элемент оказался в области просмотра, перед выполнением действия. По умолчанию используется
"auto": при необходимости выполняется прокрутка, чтобы элемент оказался в области просмотра, в том числе прокрутка вложенных прокручиваемых контейнеров. При значении"none"Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
Возвращает
waitForNavigation
Добавлено до v1.9Этот метод по своей природе подвержен гонкам, поэтому вместо него используйте page.waitForURL().
Ожидает навигации основного фрейма и возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления. В случае навигации к другому якорю или навигации из-за использования History API, навигация будет разрешена с null.
Использование
Это разрешается, когда страница переходит на новый URL или перезагружается. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию страницы. Например, цель клика имеет обработчик onclick, который вызывает навигацию из setTimeout. Рассмотрим этот пример:
// Начните ожидание навигации перед кликом. Обратите внимание, что нет await.
const navigationPromise = page.waitForNavigation();
await page.getByText('Navigate after timeout').click();
await navigationPromise;
Использование History API для изменения URL считается навигацией.
Аргументы
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время выполнения операции в миллисекундах. По умолчанию равно
0— без ограничения времени. Значение по умолчанию можно изменить с помощью параметраnavigationTimeoutв конфигурации или методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
urlstring | RegExp | URLPattern | function(URL):boolean (необязательно)#Glob-шаблон, регулярное выражение, URL-шаблон или функция-предикат, принимающая URL, для проверки соответствия URL при ожидании навигации. Обратите внимание: если параметр представляет собой строку без подстановочных символов, метод будет ожидать перехода на URL, в точности совпадающий с этой строкой.
-
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
-
Возвращает
waitForSelector
Добавлено до v1.9Вместо этого используйте web assertions, проверяющие видимость, или вариант на основе локатора — locator.waitFor(). Подробнее о локаторах.
Возвращает, когда элемент, указанный селектором, удовлетворяет опции state. Возвращает null, если ожидание для hidden или detached.
Playwright автоматически ожидает, когда элемент будет готов перед выполнением действия. Использование объектов Locator и веб-утверждений в первую очередь делает код свободным от ожидания селектора.
Ожидает, когда selector удовлетворит опции state (либо появится/исчезнет из DOM, либо станет видимым/скрытым). Если в момент вызова метода selector уже удовлетворяет условие, метод вернется немедленно. Если селектор не удовлетворяет условие в течение timeout миллисекунд, функция выбросит исключение.
Использование
Этот метод работает через навигации:
const { chromium } = require('playwright'); // Или 'firefox' или 'webkit'.
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
for (const currentURL of ['https://google.com', 'https://bbc.com']) {
await page.goto(currentURL);
const element = await page.waitForSelector('img');
console.log('Загружено изображение: ' + await element.getAttribute('src'));
}
await browser.close();
})();
Аргументы
Селектор для поиска.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
state"attached" | "detached" | "visible" | "hidden" (необязательно)#По умолчанию
'visible'. Может быть:'attached'- ожидание, когда элемент будет присутствовать в DOM.'detached'- ожидание, когда элемент не будет присутствовать в DOM.'visible'- ожидание, когда элемент будет иметь непустую ограничивающую рамку и не будетvisibility:hidden. Обратите внимание, что элемент без какого-либо содержимого или сdisplay:noneимеет пустую ограничивающую рамку и не считается видимым.'hidden'- ожидание, когда элемент будет либо отсоединен от DOM, либо иметь пустую ограничивающую рамку илиvisibility:hidden. Это противоположно опции'visible'.
-
strictboolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForTimeout
Добавлено до v1.9Никогда не ждите таймаута в производственной среде. Тесты, которые ждут времени, по своей природе ненадежны. Используйте действия Locator и веб-утверждения, которые ожидают автоматически.
Ожидает заданный timeout в миллисекундах.
Обратите внимание, что page.waitForTimeout() следует использовать только для отладки. Тесты, использующие таймер в производственной среде, будут ненадежными. Вместо этого используйте сигналы, такие как сетевые события, селекторы, становящиеся видимыми, и другие.
Использование
// ожидание 1 секунду
await page.waitForTimeout(1000);
Аргументы
Возвращает