Page
Page предоставляет методы для взаимодействия с отдельной вкладкой в Browser или с фоновой страницей расширения в Chromium. Один экземпляр Browser может содержать несколько экземпляров Page.
В этом примере создаётся страница, выполняется переход по URL, а затем сохраняется снимок экрана:
const { webkit } = require('playwright'); // Or 'chromium' or '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 генерирует различные события (описанные ниже), которые можно обрабатывать с помощью любых встроенных методов Node для работы с EventEmitter, например 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);
// Sometime later...
page.removeListener('request', logRequest); Методы
addInitScript
Добавлено до v1.9Добавляет скрипт, который будет выполняться в одном из следующих случаев:
- При каждой навигации страницы.
- При присоединении или навигации дочернего фрейма. В этом случае скрипт выполняется в контексте только что присоединённого фрейма.
Скрипт выполняется после создания документа, но до запуска любых его скриптов. Это полезно для изменения среды JavaScript, например для задания начального значения Math.random.
Использование
Пример переопределения Math.random до загрузки страницы:
// preload.js Math.random = () => 42;
// In your playwright script, assuming the preload.js file is in same directory
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 (необязательно)Если задано значение
true, функции, переданные в arg, становятся доступными на странице и могут вызываться из скрипта инициализации. Вызов такой функции возвращает Promise с результатом её выполнения. Внутри каждая функция становится доступной через page.exposeFunction(), поэтому технически она доступна из всех фреймов и миров страницы. В отличие от функций, передаваемых в page.evaluate(), функции, переданные в скрипт инициализации, доступны в каждом новом документе, поэтому они сохраняются при навигации. По умолчанию задано значениеfalse; в этом случае функции не сериализуются и без уведомления отбрасываются.
-
Возвращает
addLocatorHandler
При тестировании веб-страницы иногда появляются неожиданные наложения, например диалог «Зарегистрироваться», которые блокируют действия, автоматизацию которых вы хотите выполнить, например нажатие кнопки. Такие наложения не всегда появляются одинаково или в одно и то же время, поэтому их сложно обрабатывать в автоматизированных тестах.
Этот метод позволяет задать специальную функцию, называемую обработчиком, которая запускается при обнаружении видимого наложения. Задача обработчика — убрать наложение, чтобы тест мог продолжиться, как если бы его не было.
Обратите внимание на следующее:
- Если наложение появляется предсказуемо, рекомендуем явно дождаться его в тесте и закрыть в рамках обычного потока тестирования, а не использовать page.addLocatorHandler().
- Playwright проверяет наличие наложения каждый раз перед выполнением или повторной попыткой действия, для которого требуется проверка возможности выполнения действия, а также перед выполнением автоматической проверки утверждения с ожиданием. Если наложение видимо, Playwright сначала вызывает обработчик, а затем выполняет действие или проверку утверждения. Обратите внимание: обработчик вызывается только при выполнении действия или проверки утверждения. Если наложение станет видимым, но вы не будете выполнять никаких действий, обработчик не запустится.
- После выполнения обработчика Playwright проверит, что наложение, вызвавшее его, больше не отображается. Это поведение можно отключить с помощью noWaitAfter.
- Время выполнения обработчика учитывается в тайм-ауте действия или проверки утверждения, вызвавших обработчик. Если обработчик выполняется слишком долго, может произойти тайм-аут.
- Можно зарегистрировать несколько обработчиков. Однако одновременно будет выполняться только один обработчик. Убедитесь, что действия внутри обработчика не зависят от другого обработчика.
предупреждениеЗапуск обработчика изменит состояние страницы во время теста. Например, изменится текущий элемент в фокусе и положение мыши. Убедитесь, что действия, выполняемые после обработчика, являются самодостаточными и не зависят от того, что состояние фокуса и мыши осталось неизменным.
Например, рассмотрим тест, в котором вызывается locator.focus(), а затем keyboard.press(). Если между этими действиями обработчик нажмёт кнопку, скорее всего, в фокусе окажется не тот элемент, и нажатие клавиши произойдёт на неожиданном элементе. Чтобы избежать этой проблемы, используйте locator.press().
Другой пример — последовательность действий мышью, где после mouse.move() вызывается mouse.down(). Если обработчик запустится между этими действиями, во время нажатия кнопки мыши её положение снова будет неправильным. Предпочтительнее использовать самодостаточные действия, например locator.click(), которые не зависят от того, что состояние не изменилось из-за обработчика.
Использование
Пример закрытия диалога «Подпишитесь на рассылку», когда он появляется:
// Setup the handler.
await page.addLocatorHandler(page.getByText('Sign up to the newsletter'), async () => {
await page.getByRole('button', { name: 'No thanks' }).click();
});
// Write the test as usual.
await page.goto('https://example.com');
await page.getByRole('button', { name: 'Start here' }).click(); Пример пропуска страницы «Подтвердите сведения для защиты», если она отображается:
// Setup the handler.
await page.addLocatorHandler(page.getByText('Confirm your security details'), async () => {
await page.getByRole('button', { name: 'Remind me later' }).click();
});
// Write the test as usual.
await page.goto('https://example.com');
await page.getByRole('button', { name: 'Start here' }).click(); Пример с пользовательской функцией обратного вызова при каждой проверке возможности выполнения действия. Используется локатор <body>, который всегда видим, поэтому обработчик вызывается перед каждой проверкой возможности выполнения действия. Важно указать noWaitAfter, поскольку обработчик не скрывает элемент <body>.
// Setup the handler.
await page.addLocatorHandler(page.locator('body'), async () => {
await page.evaluate(() => window.removeObstructionsForTestIfNeeded());
}, { noWaitAfter: true });
// Write the test as usual.
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 }); Аргументы
-
locatorLocatorЛокатор, запускающий обработчик.
-
handlerfunction(Locator):Promise<Object>Функция, которая должна выполниться, когда появится locator. Эта функция должна убрать элемент, блокирующий такие действия, как нажатие.
-
optionsObject (необязательно)-
noWaitAfterboolean (необязательно)По умолчанию после вызова обработчика Playwright будет ждать, пока наложение не станет скрытым, и только затем продолжит действие или проверку утверждения, вызвавшие обработчик. Этот параметр позволяет отключить такое поведение, чтобы наложение могло оставаться видимым после выполнения обработчика.
-
timesnumber (необязательно)Задаёт максимальное количество вызовов обработчика. По умолчанию количество не ограничено.
-
Возвращает
addScriptTag
Добавлено до v1.9Добавляет на страницу тег <script> с заданным URL или содержимым. Возвращает добавленный тег после срабатывания события onload скрипта или после внедрения содержимого скрипта во фрейм.
Использование
await page.addScriptTag(); await page.addScriptTag(options);
Аргументы
-
optionsObject (необязательно)-
contentstring (необязательно)Исходный код JavaScript, который нужно внедрить во фрейм.
-
pathstring (необязательно)Путь к файлу JavaScript, который нужно внедрить во фрейм. Если
path— относительный путь, он разрешается относительно текущего рабочего каталога. -
typestring (необязательно)Тип скрипта. Используйте 'module', чтобы загрузить модуль JavaScript ES6. Подробнее см. в описании элемента script.
-
urlstring (необязательно)URL добавляемого скрипта.
-
Возвращает
addStyleTag
Добавлено до v1.9Добавляет на страницу тег <link rel="stylesheet"> с заданным URL или тег <style type="text/css"> с содержимым. Возвращает добавленный тег после срабатывания события onload таблицы стилей или после внедрения содержимого CSS во фрейм.
Использование
await page.addStyleTag(); await page.addStyleTag(options);
Аргументы
-
optionsObject (необязательно)
Возвращает
ariaSnapshot
Создаёт снимок aria страницы. Подробнее см. в разделе снимки aria.
Использование
await page.ariaSnapshot(); await page.ariaSnapshot(options);
Аргументы
-
optionsObject (необязательно)-
boxesboolean (необязательно)Если задано значение
true, в снимок добавляются ограничивающие рамки каждого элемента в виде[box=x,y,width,height]. Координаты относительно области просмотра, в пикселях CSS, как возвращаетElement.getBoundingClientRect(). По умолчанию задано значениеfalse. -
depthnumber (необязательно)Если задано, ограничивает глубину снимка.
-
mode"ai" | "default" (необязательно)Если задано значение
"ai", возвращается снимок, оптимизированный для обработки ИИ: он включает ссылки на элементы, такие как[ref=e2], и снимки<iframe>s. По умолчанию задано значение"default". -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию задано
0— тайм-аут отсутствует. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
ariaSnapshotJSON
Создаёт снимок aria страницы в виде произвольного объекта JSON. Возвращает то же дерево, что и page.ariaSnapshot(), сериализованное как значение JSON вместо разметки YAML. Подробное описание формата см. в разделе locator.ariaSnapshotJSON().
Использование
await page.ariaSnapshotJSON(); await page.ariaSnapshotJSON(options);
Аргументы
-
optionsObject (необязательно)-
boxesboolean (необязательно)Если задано значение
true, в снимок включаются ограничивающие рамки каждого элемента в виде свойстваboxс полямиx,y,widthиheight. Координаты относительно области просмотра, в пикселях CSS, как возвращаетElement.getBoundingClientRect(). По умолчанию задано значениеfalse. -
depthnumber (необязательно)Если задано, ограничивает глубину снимка.
-
mode"ai" | "default" (необязательно)Если задано значение
"ai", возвращается снимок, оптимизированный для обработки ИИ: он включает ссылки на элементы, такие как[ref=e2], и снимки<iframe>s. По умолчанию задано значение"default". -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию задано
0— тайм-аут отсутствует. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
bringToFront
Добавлено до v1.9Перемещает страницу на передний план (активирует вкладку).
Использование
await page.bringToFront();
Возвращает
cancelPickLocator
Отменяет выполняющийся вызов page.pickLocator(), деактивируя режим выбора локатора. Если режим выбора локатора не активен, метод ничего не делает.
Использование
await page.cancelPickLocator();
Возвращает
clearConsoleMessages
Удаляет все сохранённые сообщения консоли этой страницы. Последующие вызовы page.consoleMessages() будут возвращать только сообщения, зарегистрированные после очистки.
Использование
await page.clearConsoleMessages();
Возвращает
clearPageErrors
Удаляет все сохранённые ошибки этой страницы. Последующие вызовы page.pageErrors() будут возвращать только ошибки, возникшие после очистки.
Использование
await page.clearPageErrors();
Возвращает
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 (необязательно)Причина, которая будет указана для операций, прерванных закрытием страницы.
-
runBeforeUnloadboolean (необязательно)По умолчанию задано значение
false. Определяет, нужно ли запускать обработчики страницы before unload.
-
Возвращает
consoleMessages
Возвращает до (на данный момент) 200 последних сообщений консоли этой страницы. Подробнее см. в разделе page.on('console').
Использование
await page.consoleMessages(); await page.consoleMessages(options);
Аргументы
-
optionsObject (необязательно)-
filter"all" | "since-navigation" (необязательно)Определяет, какие сообщения будут возвращены:
-
Возвращает
content
Добавлено до v1.9Возвращает полное HTML-содержимое страницы, включая объявление doctype.
Использование
await page.content();
Возвращает
context
Добавлено до v1.9Получает контекст браузера, к которому относится страница.
Использование
page.context();
Возвращает
dragAndDrop
Этот метод перетаскивает исходный элемент к целевому. Сначала он перемещается к исходному элементу и выполняет mousedown, затем перемещается к целевому элементу и выполняет mouseup.
Использование
await page.dragAndDrop('#source', '#target');
// or specify exact positions relative to the top-left corners of the elements:
await page.dragAndDrop('#source', '#target', {
sourcePosition: { x: 34, y: 7 },
targetPosition: { x: 10, y: 20 },
}); Аргументы
-
sourcestringСелектор для поиска перетаскиваемого элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
targetstringСелектор для поиска элемента, на который нужно перетащить исходный элемент. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
forceboolean (необязательно)Нужно ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
noWaitAfterboolean (необязательно)УстарелоЭта опция не действует.
Эта опция не действует.
-
scroll"auto" | "none" (необязательно)Управляет прокруткой элемента в область видимости перед выполнением действия. По умолчанию —
"auto": элемент прокручивается в область видимости при необходимости, включая прокрутку вложенных прокручиваемых контейнеров. Если задано"none", Playwright не прокручивает элемент, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это полезно, чтобы проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
sourcePositionObject (необязательно)Щёлкает по исходному элементу в этой точке относительно верхнего левого угла внутреннего поля элемента. Если точка не указана, используется произвольная видимая точка элемента.
-
stepsnumber (необязательно)По умолчанию — 1. Отправляет
nинтерполированных событийmousemove, имитируя перемещение междуmousedownиmouseupперетаскивания. Если задано значение 1, в конечной точке генерируется одно событиеmousemove. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
targetPositionObject (необязательно)Отпускает элемент над целевым элементом в этой точке относительно верхнего левого угла внутреннего поля элемента. Если точка не указана, используется произвольная видимая точка элемента.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, тайм-аут не установлен. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() либо page.setDefaultTimeout(). -
trialboolean (необязательно)Если задано, этот метод выполняет только проверки возможности выполнения действия и пропускает само действие. По умолчанию —
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" (необязательно)Имитирует медиавыражение prefers-colors-scheme. Допустимые значения:
'light'и'dark'. Передачаnullотключает имитацию цветовой схемы.'no-preference'устарел. -
contrastnull | "no-preference" | "more" (необязательно)Имитирует медиавыражение
'prefers-contrast'. Допустимые значения:'no-preference','more'. Передачаnullотключает имитацию контрастности. -
forcedColorsnull | "active" | "none" (необязательно)Имитирует медиавыражение
'forced-colors'. Допустимые значения:'active'и'none'. Передачаnullотключает имитацию принудительных цветов. -
medianull | "screen" | "print" (необязательно)Изменяет тип CSS-медиа для страницы. Допустимы только значения
'screen','print'иnull. Передачаnullотключает имитацию CSS-медиа. -
reducedMotionnull | "reduce" | "no-preference" (необязательно)Имитирует медиавыражение
'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); // prints "56" Вместо функции также можно передать строку:
console.log(await page.evaluate('1 + 2')); // prints "3"
const x = 10;
console.log(await page.evaluate(`1 + ${x}`)); // prints "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 (необязательно)Если задано значение
true, функции, переданные внутри arg, становятся доступными на странице и могут вызываться из функции страницы. Вызов такой функции возвращает Promise с результатом. Внутри каждая функция становится доступной через page.exposeFunction(), поэтому технически её можно вызвать из всех фреймов и контекстов страницы. Открытые функции удаляются при навигации верхнего уровня. По умолчанию используетсяfalse; в этом случае функции не сериализуются, и при передаче функции возникает ошибка.
-
Возвращает
evaluateHandle
Добавлено до v1.9Возвращает значение, полученное при вызове pageFunction, в виде JSHandle.
Единственное отличие между page.evaluate() и page.evaluateHandle() состоит в том, что page.evaluateHandle() возвращает JSHandle.
Если функция, переданная в page.evaluateHandle(), возвращает Promise, page.evaluateHandle() дождётся его выполнения и вернёт полученное значение.
Использование
// Handle for the window object. const aWindowHandle = await page.evaluateHandle(() => Promise.resolve(window));
Вместо функции также можно передать строку:
const aHandle = await page.evaluateHandle('document'); // Handle for the '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 (необязательно)Если задано значение
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'); // Or 'chromium' or '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');
})(); Аргументы
-
namestringИмя функции в объекте window.
-
callbackfunctionФункция обратного вызова, которая будет вызвана в контексте Playwright.
Возвращает
exposeFunction
Добавлено до v1.9Метод добавляет функцию с именем name к объекту window каждого фрейма страницы. При вызове функция выполняет callback и возвращает Promise, который разрешается значением, возвращённым callback.
Если callback возвращает Promise, будет выполнено ожидание его разрешения.
См. browserContext.exposeFunction() — вариант предоставления функции для всего контекста.
примечаниеФункции, установленные с помощью page.exposeFunction(), сохраняются при навигации.
Использование
Пример добавления функции sha256 на страницу:
const { webkit } = require('playwright'); // Or 'chromium' or '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');
})(); Аргументы
-
namestringИмя функции в объекте window
-
callbackfunctionФункция обратного вызова, которая будет вызвана в контексте Playwright.
Возвращает
frame
Добавлено до v1.9Возвращает фрейм, соответствующий указанным критериям. Нужно указать либо name, либо url.
Использование
const frame = page.frame('frame-name'); const frame = page.frame({ url: /.*domain.*/ }); Аргументы
-
-
namestring (необязательно)Имя фрейма, указанное в атрибуте
nameэлементаiframe. Необязательно. -
urlstring | RegExp | URLPattern | function(URL):boolean (необязательно)Шаблон glob, регулярное выражение, шаблон URL или предикат, получающий
urlфрейма в виде объекта URL. Необязательно.
Имя фрейма или другие параметры поиска фрейма.
-
Возвращает
frameLocator
При работе с iframe можно создать локатор фрейма, который перейдёт внутрь 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
Позволяет находить элементы по их альтернативному тексту.
Использование
Например, этот метод найдёт изображение по альтернативному тексту "Playwright logo":
<img alt='Playwright logo'>
await page.getByAltText('Playwright logo').click(); Аргументы
-
Текст, по которому нужно найти элемент.
-
optionsObject (необязательно)-
exactboolean (необязательно)Нужно ли искать точное совпадение: с учётом регистра и всей строки. По умолчанию — false. Не применяется при поиске по регулярному выражению. Обратите внимание: при точном совпадении пробелы всё равно обрезаются.
-
Возвращает
getByLabel
Позволяет находить элементы ввода по тексту связанного элемента <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 (необязательно)-
exactboolean (необязательно)Нужно ли искать точное совпадение: с учетом регистра и по всей строке. По умолчанию — false. Игнорируется при поиске по регулярному выражению. Обратите внимание: при точном поиске пробелы всё равно обрезаются.
-
Возвращает
getByPlaceholder
Позволяет находить элементы ввода по тексту заполнителя.
Использование
Например, рассмотрим следующую структуру DOM.
<input type="email" placeholder="name@example.com" />
Можно заполнить поле ввода, найдя его по тексту заполнителя:
await page
.getByPlaceholder('name@example.com')
.fill('playwright@microsoft.com'); Аргументы
-
Текст, по которому нужно найти элемент.
-
optionsObject (необязательно)-
exactboolean (необязательно)Нужно ли искать точное совпадение: с учетом регистра и по всей строке. По умолчанию — false. Игнорируется при поиске по регулярному выражению. Обратите внимание: при точном поиске пробелы всё равно обрезаются.
-
Возвращает
getByRole
Позволяет находить элементы по их роли 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 (необязательно)-
checkedboolean (необязательно)Атрибут, который обычно задаётся элементами
aria-checkedили встроенными элементами управления<input type=checkbox>.Подробнее об атрибуте
aria-checked. -
descriptionstring | RegExp (необязательно)Параметр для сопоставления с доступным описанием. По умолчанию сопоставление выполняется без учета регистра и по подстроке; используйте exact, чтобы изменить это поведение.
Подробнее о доступном описании.
-
disabledboolean (необязательно)Атрибут, который обычно задаётся элементами
aria-disabledилиdisabled.примечаниеВ отличие от большинства других атрибутов,
disabledнаследуется по иерархии DOM. Подробнее об атрибутеaria-disabled. -
exactboolean (необязательно)Нужно ли сопоставлять имя и описание точно: с учетом регистра и по всей строке. По умолчанию — false. Игнорируется, если значение является регулярным выражением. Обратите внимание: при точном поиске пробелы всё равно обрезаются.
-
expandedboolean (необязательно)Атрибут, который обычно задаётся элементом
aria-expanded.Подробнее об атрибуте
aria-expanded. -
includeHiddenboolean (необязательно)Параметр, определяющий, будут ли находиться скрытые элементы. По умолчанию селектор ролей находит только видимые элементы, как они определены в ARIA.
Подробнее об атрибуте
aria-hidden. -
levelnumber (необязательно)Числовой атрибут, обычно присутствующий у ролей
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
Находит элемент по идентификатору теста.
Использование
Рассмотрим следующую структуру DOM.
<button data-testid="directions">Itinéraire</button>
Можно найти элемент по его идентификатору теста:
await page.getByTestId('directions').click(); Аргументы
Возвращает
Подробности
По умолчанию в качестве идентификатора теста используется атрибут data-testid. При необходимости вызовите selectors.setTestIdAttribute(), чтобы настроить другой атрибут идентификатора теста.
// Set custom test id attribute from @playwright/test config:
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
testIdAttribute: 'data-pw'
},
}); getByText
Позволяет находить элементы, содержащие заданный текст.
См. также locator.filter(), который позволяет сначала найти элемент по другому критерию, например по доступной роли, а затем отфильтровать его по текстовому содержимому.
Использование
Рассмотрим следующую структуру DOM:
<div>Hello <span>world</span></div> <div>Hello</div>
Можно искать по подстроке, точной строке или регулярному выражению:
// Matches <span>
page.getByText('world');
// Matches first <div>
page.getByText('Hello world');
// Matches second <div>
page.getByText('Hello', { exact: true });
// Matches both <div>s
page.getByText(/Hello/);
// Matches second <div>
page.getByText(/^hello$/i); Аргументы
-
Текст, по которому нужно найти элемент.
-
optionsObject (необязательно)-
exactboolean (необязательно)Нужно ли искать точное совпадение: с учетом регистра и по всей строке. По умолчанию — false. Игнорируется при поиске по регулярному выражению. Обратите внимание: при точном поиске пробелы всё равно обрезаются.
-
Возвращает
Подробности
При поиске по тексту пробелы всегда нормализуются, даже при точном совпадении. Например, несколько пробелов заменяются одним, переносы строк — пробелами, а начальные и конечные пробелы игнорируются.
Элементы ввода типа button и submit сопоставляются по их value, а не по текстовому содержимому. Например, поиск по тексту "Log in" находит <input type=button value="Log in">.
getByTitle
Позволяет находить элементы по атрибуту заголовка.
Использование
Рассмотрим следующую структуру DOM.
<span title='Issues count'>25 issues</span>
Можно проверить количество проблем, найдя элемент по тексту заголовка:
await expect(page.getByTitle('Issues count')).toHaveText('25 issues'); Аргументы
-
Текст, по которому нужно найти элемент.
-
optionsObject (необязательно)-
exactboolean (необязательно)Нужно ли искать точное совпадение: с учетом регистра и по всей строке. По умолчанию — false. Игнорируется при поиске по регулярному выражению. Обратите внимание: при точном поиске пробелы всё равно обрезаются.
-
Возвращает
goBack
Добавлен до версии 1.9Возвращает ответ для основного ресурса. При нескольких перенаправлениях переход завершается ответом последнего перенаправления. Если вернуться назад невозможно, возвращает null.
Переходит на предыдущую страницу в истории.
предупреждениеТестирование кэша возврата/перехода вперёд (BFCache) не поддерживается. По умолчанию Playwright отключает кэш возврата/перехода вперёд во всех браузерах. Даже если его включить явно, внутреннее состояние Playwright зависит от событий навигации на сетевом уровне. При восстановлении из BFCache DOM размораживается без отправки этих событий, поэтому использование
page.goBack()илиpage.goForward()для восстановления из BFCache приведёт к тайм-аутам и рассинхронизации состоянияPage.
Использование
await page.goBack(); await page.goBack(options);
Аргументы
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
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
Добавлен до версии 1.9Возвращает ответ для основного ресурса. При нескольких перенаправлениях переход завершается ответом последнего перенаправления. Если перейти вперёд невозможно, возвращает null.
Переходит на следующую страницу в истории.
предупреждениеТестирование кэша возврата/перехода вперёд (BFCache) не поддерживается. По умолчанию Playwright отключает кэш возврата/перехода вперёд во всех браузерах. Даже если его включить явно, внутреннее состояние Playwright зависит от событий навигации на сетевом уровне. При восстановлении из BFCache DOM размораживается без отправки этих событий, поэтому использование
page.goBack()илиpage.goForward()для восстановления из BFCache приведёт к тайм-аутам и рассинхронизации состоянияPage.
Использование
await page.goForward(); await page.goForward(options);
Аргументы
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
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
Добавлен до версии 1.9Возвращает ответ для основного ресурса. При нескольких перенаправлениях переход завершается первым ответом, не являющимся перенаправлением.
Метод вызовет ошибку, если:
- возникла ошибка SSL (например, из-за самоподписанных сертификатов).
- целевой URL недействителен.
- во время навигации превышено значение тайм-аута.
- удалённый сервер не отвечает или недоступен.
- не удалось загрузить основной ресурс.
Метод не вызовет ошибку, если удалённый сервер вернул любой допустимый код состояния HTTP, включая 404 «Не найдено» и 500 «Внутренняя ошибка сервера». Код состояния таких ответов можно получить, вызвав response.status().
примечаниеМетод либо вызывает ошибку, либо возвращает ответ для основного ресурса. Исключения — переход к
about:blankили переход к тому же URL с другим хешем: в этих случаях операция завершается успешно и возвращаетnull.
примечаниеРежим без интерфейса не поддерживает переход к PDF-документу. См. исходную проблему.
Использование
await page.goto(url); await page.goto(url, options);
Аргументы
-
urlstringURL, на который нужно перейти. URL должен содержать схему, например
https://. Если в параметрах контекста задан baseURL, а переданный URL является путём, они объединяются с помощью конструктораnew URL(). -
optionsObject (необязательно)-
refererstring (необязательно)Значение заголовка Referer. Если указано, оно имеет приоритет над значением заголовка referer, заданным с помощью page.setExtraHTTPHeaders().
-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
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
Скрывает все наложения подсветки локаторов, ранее добавленные вызовом locator.highlight() на этой странице.
Использование
await page.hideHighlight();
Возвращает
isClosed
Добавлено до v1.9Показывает, что страница была закрыта.
Использование
page.isClosed();
Возвращает
locator
Метод возвращает локатор элемента, который можно использовать для выполнения действий на этой странице или в этом фрейме. Локатор разрешается в элемент непосредственно перед выполнением действия, поэтому последовательность действий с одним и тем же локатором фактически может выполняться над разными элементами DOM. Это произойдёт, если структура DOM изменится между этими действиями.
Использование
page.locator(selector); page.locator(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента DOM.
-
optionsObject (необязательно)-
hasLocator (необязательно)Ограничивает результаты метода элементами, содержащими элементы, соответствующие этому относительному локатору. Например,
article, у которого естьtext=Playwright, соответствует<article><div>Playwright</div></article>.Внутренний локатор должен быть относительным к внешнему локатору. Поиск начинается с совпадения внешнего локатора, а не с корня документа. Например, можно найти
content, у которого естьdivв<article><content><div>Playwright</div></content></article>. Однако поискcontent, у которого естьarticle div, завершится неудачей, поскольку внутренний локатор должен быть относительным и не должен использовать элементы за пределамиcontent.Обратите внимание, что внешний и внутренний локаторы должны принадлежать одному фрейму. Внутренний локатор не должен содержать FrameLocator.
-
hasNotLocator (необязательно)Соответствует элементам, не содержащим элемент, соответствующий внутреннему локатору. Внутренний локатор выполняет поиск относительно внешнего. Например,
article, у которого нетdiv, соответствует<article><span>Playwright</span></article>.Обратите внимание, что внешний и внутренний локаторы должны принадлежать одному фрейму. Внутренний локатор не должен содержать FrameLocator.
-
hasNotTextstring | RegExp (необязательно)Соответствует элементам, которые не содержат указанный текст, в том числе внутри дочернего или вложенного элемента. Если передана строка string, поиск подстроки выполняется без учёта регистра.
-
hasTextstring | RegExp (необязательно)Соответствует элементам, содержащим указанный текст, в том числе внутри дочернего или вложенного элемента. Если передана строка string, поиск подстроки выполняется без учёта регистра. Например,
"Playwright"соответствует<article><div>Playwright</div></article>.
-
Возвращает
mainFrame
Добавлено до v1.9Главный фрейм страницы. У страницы гарантированно есть главный фрейм, который сохраняется при переходах.
Использование
page.mainFrame();
Возвращает
opener
Добавлено до v1.9Возвращает страницу-инициатор для всплывающих страниц и null для остальных. Если страница-инициатор уже закрыта, возвращается null.
Использование
await page.opener();
Возвращает
pageErrors
Возвращает до 200 последних ошибок страницы (в настоящее время). Подробнее см. в описании события page.on('pageerror').
Использование
await page.pageErrors(); await page.pageErrors(options);
Аргументы
-
optionsObject (необязательно)-
filter"all" | "since-navigation" (необязательно)Определяет, какие ошибки возвращаются:
-
Возвращает
pause
Приостанавливает выполнение скрипта. Playwright остановит выполнение скрипта и будет ждать, пока пользователь не нажмёт кнопку «Возобновить» в наложении на странице или не вызовет playwright.resume() в консоли DevTools.
Во время паузы пользователь может проверять селекторы или выполнять действия вручную. После возобновления выполнение исходного скрипта продолжится с места, где оно было приостановлено.
примечаниеДля этого метода требуется запуск Playwright в режиме с отображением браузера и с параметром headless, имеющим значение false.
Использование
await page.pause();
Возвращает
pdf
Добавлено до v1.9Возвращает буфер PDF.
page.pdf() создаёт PDF страницы с использованием print CSS для печати. Чтобы создать PDF с использованием screen, вызовите page.emulateMedia() перед вызовом page.pdf():
примечаниеПо умолчанию
page.pdf()создаёт PDF с изменёнными для печати цветами. Используйте свойство-webkit-print-color-adjust, чтобы принудительно отображать точные цвета.
Использование
// Generates a PDF with 'screen' media type.
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 11in -
Legal: 8.5in x 14in -
Tabloid: 11in x 17in -
Ledger: 17in x 11in -
A0: 33.1in x 46.8in -
A1: 23.4in x 33.1in -
A2: 16.54in x 23.4in -
A3: 11.7in x 16.54in -
A4: 8.27in x 11.7in -
A5: 5.83in x 8.27in -
A6: 4.13in x 5.83in
примечаниеДля разметки headerTemplate и footerTemplate действуют следующие ограничения: > 1. Теги скриптов внутри шаблонов не выполняются. > 2. Стили страницы внутри шаблонов недоступны.
Аргументы
-
optionsObject (необязательно)-
displayHeaderFooterboolean (необязательно)Отображать верхний и нижний колонтитулы. По умолчанию
false. -
footerTemplatestring (необязательно)HTML-шаблон нижнего колонтитула для печати. Должен иметь тот же формат, что и headerTemplate.
-
formatstring (необязательно)Формат бумаги. Если задан, имеет приоритет над параметрами width и height. По умолчанию 'Letter'.
-
headerTemplatestring (необязательно)HTML-шаблон верхнего колонтитула для печати. Должен быть корректной HTML-разметкой с указанными ниже классами, в которые подставляются значения для печати:
-
'date'дата печати в форматированном виде -
'title'заголовок документа -
'url'адрес документа -
'pageNumber'номер текущей страницы -
'totalPages'общее количество страниц в документе
-
-
heightstring | number (необязательно)Высота бумаги; принимает значения с указанием единиц измерения.
-
landscapeboolean (необязательно)Ориентация бумаги. По умолчанию
false. -
marginObject (необязательно)-
topstring | number (необязательно)Верхнее поле; принимает значения с указанием единиц измерения. По умолчанию
0. -
rightstring | number (необязательно)Правое поле; принимает значения с указанием единиц измерения. По умолчанию
0. -
bottomstring | number (необязательно)Нижнее поле; принимает значения с указанием единиц измерения. По умолчанию
0. -
leftstring | number (необязательно)Левое поле; принимает значения с указанием единиц измерения. По умолчанию
0.
Поля страницы; по умолчанию отсутствуют.
-
-
outlineboolean (необязательно)Встраивать ли структуру документа в PDF. По умолчанию
false. -
pageRangesstring (необязательно)Диапазоны страниц для печати, например '1-5, 8, 11-13'. По умолчанию пустая строка, что означает печать всех страниц.
-
pathstring (необязательно)Путь к файлу для сохранения PDF. Если path задан как относительный путь, он разрешается относительно текущего рабочего каталога. Если путь не указан, PDF не будет сохранён на диск.
-
preferCSSPageSizeboolean (необязательно)Устанавливает приоритет размера CSS
@page, заданного на странице, над параметрами width, height и format. По умолчаниюfalse, при котором содержимое масштабируется для соответствия размеру бумаги. -
printBackgroundboolean (необязательно)Печатать фоновые изображения. По умолчанию
false. -
scalenumber (необязательно)Масштаб отображения веб-страницы. По умолчанию
1. Значение масштаба должно находиться в диапазоне от 0.1 до 2. -
taggedboolean (необязательно)Создавать ли PDF с тегами (доступный PDF). По умолчанию
false. -
widthstring | number (необязательно)Ширина бумаги; принимает значения с указанием единиц измерения.
-
Возвращает
pickLocator
Включает режим выбора локатора: при наведении указателя на элементы страницы они подсвечиваются, а соответствующий локатор отображается. После щелчка пользователя по элементу режим отключается и возвращается Locator выбранного элемента.
Использование
const locator = await page.pickLocator(); console.log(locator);
Возвращает
reload
Добавлено до v1.9Этот метод перезагружает текущую страницу так же, как если бы пользователь обновил её в браузере. Возвращает ответ на основной ресурс. При нескольких перенаправлениях переход завершится с ответом последнего перенаправления.
Использование
await page.reload(); await page.reload(options);
Аргументы
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
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
Удаляет все обработчики событий заданного типа (или все зарегистрированные обработчики, если тип не указан). Позволяет дождаться завершения асинхронных обработчиков или игнорировать последующие ошибки от них.
Использование
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' });
// Waits for all the reported 'request' events to resolve.
await page.removeAllListeners('request', { behavior: 'wait' }); Аргументы
-
typestring (необязательно) -
optionsObject (необязательно)-
behavior"wait" | "ignoreErrors" | "default" (необязательно)Определяет, нужно ли ждать завершения уже выполняющихся обработчиков и что делать, если они вызывают ошибки:
-
'default'— не ждать завершения текущих вызовов обработчика (если они есть); если обработчик вызовет ошибку, она может остаться необработанной -
'wait'— дождаться завершения текущих вызовов обработчика (если они есть) -
'ignoreErrors'— не ждать завершения текущих вызовов обработчика (если они есть); все ошибки, вызванные обработчиками после удаления, будут молча перехвачены
-
-
Возвращает
removeLocatorHandler
Удаляет все обработчики локатора, добавленные методом page.addLocatorHandler() для указанного локатора.
Использование
await page.removeLocatorHandler(locator);
Аргументы
-
locatorLocatorЛокатор, переданный в page.addLocatorHandler().
Возвращает
requestGC
Запрашивает у страницы выполнение сборки мусора. Обратите внимание, что нет гарантии, что будут собраны все недостижимые объекты.
Это полезно для обнаружения утечек памяти. Например, если на странице есть большой объект 'suspect', который может утекать, можно проверить отсутствие утечки с помощью WeakRef.
// 1. In your page, save a WeakRef for the "suspect". await page.evaluate(() => globalThis.suspectWeakRef = new WeakRef(suspect)); // 2. Request garbage collection. await page.requestGC(); // 3. Check that weak ref does not deref to the original object. expect(await page.evaluate(() => !globalThis.suspectWeakRef.deref())).toBe(true);
Использование
await page.requestGC();
Возвращает
requests
Возвращает до 100 последних сетевых запросов этой страницы (в настоящее время). Подробнее см. в описании события page.on('request').
К возвращённым запросам следует обращаться сразу, иначе они могут быть удалены, чтобы предотвратить неограниченный рост потребления памяти при поступлении новых запросов. После удаления получить большую часть информации о запросе невозможно.
Обратите внимание, что запросы, передаваемые через событие page.on('request'), не удаляются. Поэтому приходится выбирать между эффективным использованием памяти с помощью page.requests() и объёмом доступной информации, передаваемой через page.on('request').
Использование
await page.requests();
Возвращает
route
Добавлено до v1.9Маршрутизация позволяет изменять сетевые запросы, выполняемые страницей.
После включения маршрутизации каждый запрос, соответствующий шаблону URL, будет приостановлен до тех пор, пока его выполнение не будет продолжено, обработано ответом или отменено.
примечаниеЕсли ответ является перенаправлением, обработчик будет вызван только для первого URL.
примечаниеpage.route() не перехватывает запросы, перехваченные Service Worker. См. эту проблему. При перехвате запросов рекомендуется отключать Service Worker, задав для 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 для сопоставления при маршрутизации. Если в параметрах контекста задан baseURL, а указанный URL является строкой, не начинающейся с
*, он разрешается с помощью конструктораnew URL(). -
handlerfunction(Route, Request):Promise<Object> | ObjectФункция-обработчик для маршрутизации запроса.
-
optionsObject (необязательно)-
timesnumber (необязательно)Сколько раз следует использовать маршрут. По умолчанию он будет использоваться каждый раз.
-
Возвращает
routeFromHAR
Если этот параметр указан, сетевые запросы, выполняемые на странице, будут обслуживаться из файла HAR. Подробнее см. в разделе Воспроизведение из HAR.
Playwright не будет обслуживать из файла HAR запросы, перехваченные Service Worker. См. эту задачу. При перехвате запросов рекомендуем отключить Service Worker, установив для serviceWorkers значение 'block'.
Использование
await page.routeFromHAR(har); await page.routeFromHAR(har, options);
Аргументы
-
harstringПуть к файлу HAR с предварительно записанными сетевыми данными. Если
path— относительный путь, он разрешается относительно текущего рабочего каталога. -
optionsObject (необязательно)-
notFound"abort" | "fallback" (необязательно)- Если задано значение 'abort', любой запрос, не найденный в файле HAR, будет отменен.
- Если задано значение 'fallback', отсутствующие запросы будут отправлены в сеть.
По умолчанию — abort.
-
updateboolean (необязательно)Если параметр указан, файл HAR обновляется фактической информацией о сети вместо обслуживания запросов из файла. Файл записывается на диск при вызове browserContext.close().
-
updateContent"embed" | "attach" (необязательно)Необязательная настройка управления содержимым ресурсов. Если указано
attach, ресурсы сохраняются в отдельных файлах или записях ZIP-архива. Если указаноembed, содержимое сохраняется непосредственно в файле HAR. -
updateMode"full" | "minimal" (необязательно)Если задано значение
minimal, записывается только информация, необходимая для маршрутизации из HAR. При этом пропускаются размеры, временные параметры, страница, файлы cookie, сведения о безопасности и другие данные HAR, не используемые при воспроизведении из HAR. По умолчанию —minimal. -
urlstring | RegExp (необязательно)Шаблон glob, регулярное выражение или предикат для сопоставления URL запроса. Из файла HAR будут обслуживаться только запросы, URL которых соответствует шаблону. Если параметр не указан, из файла HAR обслуживаются все запросы.
-
Возвращает
routeWebSocket
Этот метод позволяет изменять WebSocket-соединения, устанавливаемые страницей.
Обратите внимание: маршрутизироваться будут только WebSockets, созданные после вызова этого метода. Рекомендуется вызывать этот метод до перехода на страницу.
Использование
Ниже приведен пример простой имитации, которая отвечает на одно сообщение. Дополнительные сведения и примеры см. в 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-переходы и Web Animations. Обработка анимаций зависит от их длительности:- конечные анимации ускоряются до завершения, поэтому они вызовут событие
transitionend. - бесконечные анимации отменяются и возвращаются в исходное состояние, а после создания снимка экрана запускаются снова.
По умолчанию используется
"allow", при котором анимации остаются без изменений. - конечные анимации ускоряются до завершения, поэтому они вызовут событие
-
caret"hide" | "initial" (необязательно)Если задано значение
"hide", курсор ввода текста будет скрыт на снимке экрана. Если задано значение"initial", поведение курсора ввода текста не изменится. По умолчанию используется"hide". -
clipObject (необязательно)-
xnumberКоордината x верхнего левого угла области обрезки
-
ynumberКоордината y верхнего левого угла области обрезки
-
widthnumberШирина области обрезки
-
heightnumberВысота области обрезки
Объект, задающий обрезку итогового изображения.
-
-
fullPageboolean (необязательно)Если значение равно true, создается снимок всей прокручиваемой страницы, а не только текущей видимой области просмотра. По умолчанию —
false. -
maskArray<Locator> (необязательно)Укажите локаторы элементов, которые нужно замаскировать при создании снимка экрана. Поверх замаскированных элементов будет наложен розовый прямоугольник
#FF00FF(его цвет можно настроить с помощью maskColor), полностью закрывающий их ограничивающий прямоугольник. Маска также применяется к невидимым элементам; см. раздел Сопоставление только видимых элементов, чтобы отключить это поведение. -
maskColorstring (необязательно)Задайте цвет прямоугольника, накладываемого на замаскированные элементы, в формате цвета CSS. Цвет по умолчанию — розовый
#FF00FF. -
omitBackgroundboolean (необязательно)Скрывает белый фон по умолчанию и позволяет создавать снимки экрана с прозрачностью. Не применяется к изображениям
jpeg. По умолчанию —false. -
pathstring (необязательно)Путь к файлу для сохранения изображения. Формат снимка экрана определяется по расширению файла. Если path — относительный путь, он разрешается относительно текущего рабочего каталога. Если путь не указан, изображение не будет сохранено на диск.
-
qualitynumber (необязательно)Качество изображения от 0 до 100. Не применяется к изображениям
png. Дляjpegзначение по умолчанию —80. Дляwebpкачество100(значение по умолчанию) обеспечивает сжатие без потерь, а при меньших значениях используется сжатие с потерями. -
scale"css" | "device" (необязательно)Если задано значение
"css", на каждый пиксель CSS страницы приходится один пиксель снимка экрана. На устройствах с высоким разрешением это позволяет уменьшить размер снимков. При использовании параметра"device"на каждый пиксель устройства приходится один пиксель снимка, поэтому снимки с устройств высокого разрешения будут вдвое больше или даже крупнее.По умолчанию —
"device". -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал прерван, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
stylestring (необязательно)Текст таблицы стилей, применяемой при создании снимка экрана. С ее помощью можно скрывать динамические элементы, делать элементы невидимыми или менять их свойства, чтобы создавать воспроизводимые снимки экрана. Эта таблица стилей проникает в Shadow DOM и применяется к внутренним фреймам.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
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);
Аргументы
-
htmlstringHTML-разметка, которая будет назначена странице.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
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);
Аргументы
-
timeoutnumberМаксимальное время навигации в миллисекундах
setDefaultTimeout
Добавлено до v1.9Этот параметр изменяет максимальное время по умолчанию для всех методов, принимающих параметр timeout.
примечаниеpage.setDefaultNavigationTimeout() имеет приоритет над page.setDefaultTimeout().
Использование
page.setDefaultTimeout(timeout);
Аргументы
-
timeoutnumberМаксимальное время в миллисекундах. Передайте
0, чтобы отключить тайм-аут.
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'); Аргументы
-
viewportSizeObject
Возвращает
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
Удаляет все маршруты, созданные с помощью 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Ожидает возникновения события и передает его значение функции-предикату. Возвращает результат, когда предикат возвращает истинное значение. Вызывает ошибку, если страница закрывается до возникновения события. Возвращает значение данных события.
Использование
// Start waiting for download before clicking. Note no await.
const downloadPromise = page.waitForEvent('download');
await page.getByText('Download file').click();
const download = await downloadPromise; Аргументы
-
eventstringИмя события — обычно то же имя, которое передается в
*.on(event). -
optionsOrPredicatefunction | Object (необязательно)-
predicatefunctionПолучает данные события и разрешается с истинным значением, когда ожидание должно завершиться.
-
timeoutnumber (необязательно)Максимальное время ожидания в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методами browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Предикат, получающий событие, либо объект параметров. Необязательно.
-
-
optionsObject (необязательно)-
predicatefunction (необязательно)Получает данные события и разрешается с истинным значением, когда ожидание должно завершиться.
-
signalAbortSignal (необязательно)Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал прерван, ожидание будет отменено, а операция вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут.
-
Возвращает
waitForFunction
Добавлено до v1.9Возвращает результат, когда pageFunction возвращает истинное значение. Результатом является JSHandle этого истинного значения.
Использование
page.waitForFunction() можно использовать для отслеживания изменения размера области просмотра:
const { webkit } = require('playwright'); // Or 'chromium' or '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 (необязательно)-
pollingnumber | "raf" (необязательно)Если параметр polling равен
'raf', то pageFunction постоянно выполняется в обратном вызовеrequestAnimationFrame. Если polling — число, оно используется как интервал в миллисекундах, с которым будет выполняться функция. По умолчанию —raf. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал прерван, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)Максимальное время ожидания в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методами browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForLoadState
Добавлено до v1.9Возвращает результат, когда достигнуто требуемое состояние загрузки.
Этот вызов завершается, когда страница достигает требуемого состояния загрузки, по умолчанию load. К моменту вызова этого метода навигация должна быть зафиксирована. Если текущий документ уже достиг требуемого состояния, вызов завершается немедленно.
примечаниеВ большинстве случаев этот метод не требуется, поскольку Playwright автоматически ожидает готовности перед каждым действием.
Использование
await page.getByRole('button').click(); // Click triggers navigation.
await page.waitForLoadState(); // The promise resolves after 'load' event. const popupPromise = page.waitForEvent('popup');
await page.getByRole('button').click(); // Click triggers a popup.
const popup = await popupPromise;
await popup.waitForLoadState('domcontentloaded'); // Wait for the 'DOMContentLoaded' event.
console.log(await popup.title()); // Popup is ready to use. Аргументы
-
state"load" | "domcontentloaded" | "networkidle" (необязательно)Необязательное состояние загрузки, которого нужно дождаться. По умолчанию —
load. Если состояние уже достигнуто во время загрузки текущего документа, метод завершается немедленно. Возможные значения:-
'load'— дождаться возникновения событияload. -
'domcontentloaded'— дождаться возникновения событияDOMContentLoaded. -
'networkidle'— НЕ РЕКОМЕНДУЕТСЯ: дождаться отсутствия сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования; вместо этого оценивайте готовность с помощью веб-проверок.
-
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал прерван, ожидание будет отменено, а операция вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)Максимальное время выполнения операции в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраnavigationTimeoutв конфигурации либо методами browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForRequest
Добавлено до v1.9Ожидает соответствующий запрос и возвращает его. Дополнительные сведения о событиях см. в разделе ожидание события.
Использование
// Start waiting for request before clicking. Note no await.
const requestPromise = page.waitForRequest('https://example.com/resource');
await page.getByText('trigger request').click();
const request = await requestPromise;
// Alternative way with a predicate. Note no await.
const requestPromise = page.waitForRequest(request =>
request.url() === 'https://example.com' && request.method() === 'GET',
);
await page.getByText('trigger request').click();
const request = await requestPromise; Аргументы
-
urlOrPredicatestring | RegExp | function(Request):boolean | Promise<boolean>Строка URL запроса, регулярное выражение или предикат, получающий объект Request.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал прерван, ожидание будет отменено, а операция вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)Максимальное время ожидания в миллисекундах. По умолчанию — 30 секунд; передайте
0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить с помощью метода page.setDefaultTimeout().
-
Возвращает
waitForResponse
Добавлено до v1.9Возвращает соответствующий ответ. Дополнительные сведения о событиях см. в разделе ожидание события.
Использование
// Start waiting for response before clicking. Note no await.
const responsePromise = page.waitForResponse('https://example.com/resource');
await page.getByText('trigger response').click();
const response = await responsePromise;
// Alternative way with a predicate. Note no 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; Аргументы
-
urlOrPredicatestring | RegExp | function(Response):boolean | Promise<boolean>Строка URL запроса, регулярное выражение или предикат, получающий объект Response. Если в параметрах контекста задан baseURL, а переданный URL является путем, они объединяются с помощью конструктора
new URL(). -
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал прерван, ожидание будет отменено, а операция вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)Максимальное время ожидания в миллисекундах. По умолчанию — 30 секунд; передайте
0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForURL
Ожидает перехода главного фрейма по указанному URL.
Использование
await page.click('a.delayed-navigation'); // Clicking the link will indirectly cause a navigation
await page.waitForURL('**/target.html'); Аргументы
-
urlstring | RegExp | URLPattern | function(URL):booleanШаблон glob, регулярное выражение, шаблон URL или предикат, получающий URL для сопоставления во время ожидания навигации. Обратите внимание: если параметр — строка без символов подстановки, метод будет ожидать перехода по URL, полностью совпадающему с этой строкой.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить ожидание с помощью
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
Playwright позволяет имитировать часы и ход времени.
Использование
page.clock
Тип
coverage
Добавлено до v1.9примечаниеПока доступно только для Chromium.
Реализация Coverage, специфичная для браузера. Подробнее см. в разделе Coverage.
Использование
page.coverage
Тип
keyboard
Добавлено до v1.9Использование
page.keyboard
Тип
localStorage
Предоставляет доступ к localStorage страницы для текущего источника. См. WebStorage.
await page.localStorage.setItem('token', 'abc');
const token = await page.localStorage.getItem('token'); Использование
page.localStorage
Тип
mouse
Добавлено до v1.9Использование
page.mouse
Тип
request
Вспомогательный API для тестирования, связанный с этой страницей. Этот метод возвращает тот же экземпляр, что и browserContext.request в контексте страницы. Подробнее см. в разделе browserContext.request.
Использование
page.request
Тип
screencast
Объект Screencast, связанный с этой страницей.
Использование
page.screencast.on('screencastFrame', data => {
console.log('received frame, jpeg size:', data.length);
});
await page.screencast.start();
// ... perform actions ...
await page.screencast.stop(); Тип
sessionStorage
Предоставляет доступ к sessionStorage страницы для текущего источника. См. WebStorage.
await page.sessionStorage.setItem('flag', '1');
const flag = await page.sessionStorage.getItem('flag'); Использование
page.sessionStorage
Тип
touchscreen
Добавлено до v1.9Использование
page.touchscreen
Тип
События
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 {
// Crash might happen during a click.
await page.click('button');
// Or while waiting for an event.
await page.waitForEvent('popup');
} catch (e) {
// When the page crashes, exception message contains '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')
Вызывается, когда диалоговое окно JavaScript закрыто с помощью dialog.accept(), dialog.dismiss() или вручную пользователем в браузере с графическим интерфейсом.
Использование
page.on('dialogclosed', data => {}); Данные события
on('domcontentloaded')
Вызывается при отправке события JavaScript DOMContentLoaded.
Использование
page.on('domcontentloaded', data => {}); Данные события
on('download')
Добавлено до v1.9Вызывается при начале загрузки вложения. Пользователь может выполнять основные операции с загруженным файлом через переданный экземпляр Download.
Использование
page.on('download', data => {}); Данные события
on('filechooser')
Вызывается при появлении окна выбора файла, например после щелчка по <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')
Вызывается при присоединении фрейма.
Использование
page.on('frameattached', data => {}); Данные события
on('framedetached')
Вызывается при отсоединении фрейма.
Использование
page.on('framedetached', data => {}); Данные события
on('framenavigated')
Вызывается при переходе фрейма на новый URL.
Использование
page.on('framenavigated', data => {}); Данные события
on('load')
Добавлено до v1.9Вызывается при отправке события JavaScript load.
Использование
page.on('load', data => {}); Данные события
on('pageerror')
Вызывается при возникновении необработанного исключения на странице.
// Log all uncaught errors to the terminal
page.on('pageerror', exception => {
console.log(`Uncaught exception: "${exception}"`);
});
// Navigate to a page with an 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.
// Start waiting for popup before clicking. Note no 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')
Вызывается при сбое запроса, например из-за превышения времени ожидания.
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')
Вызывается при успешном завершении запроса после загрузки тела ответа. Для успешного ответа последовательность событий следующая: request, response и requestfinished.
Использование
page.on('requestfinished', data => {}); Данные события
on('response')
Добавлено до v1.9Вызывается при получении статуса и заголовков response для запроса. Для успешного ответа последовательность событий следующая: request, response и requestfinished.
Использование
page.on('response', data => {}); Данные события
on('websocket')
Вызывается при отправке запроса WebSocket.
Использование
page.on('websocket', data => {}); Данные события
on('worker')
Добавлено до v1.9Вызывается при запуске страницей выделенного веб-воркера.
Использование
page.on('worker', data => {}); Данные события
Устаревшее
$
Не рекомендуетсяВместо этого используйте page.locator(). Подробнее см. в разделе локаторы.
Метод находит на странице элемент, соответствующий указанному селектору. Если селектору не соответствует ни один элемент, возвращаемое значение разрешается в null. Чтобы дождаться появления элемента на странице, используйте locator.waitFor().
Использование
await page.$(selector); await page.$(selector, options);
Аргументы
-
selectorstringСелектор для поиска.
-
optionsObject (необязательно)-
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
Возвращает
$$
Не рекомендуетсяВместо этого используйте page.locator(). Подробнее см. в разделе локаторы.
Метод находит на странице все элементы, соответствующие указанному селектору. Если селектору не соответствует ни один элемент, возвращаемое значение разрешается в [].
Использование
await page.$$(selector);
Аргументы
-
selectorstringСелектор для поиска.
Возвращает
$eval
Не рекомендуетсяЭтот метод не ожидает, пока элемент пройдёт проверки возможности выполнения действия, поэтому может привести к нестабильным тестам. Вместо него используйте locator.evaluate(), другие вспомогательные методы Locator или проверки, ориентированные на веб-страницу.
Метод находит на странице элемент, соответствующий указанному селектору, и передаёт его первым аргументом в 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');
// In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el:
const preloadHrefTS = await page.$eval('link[rel=preload]', (el: HTMLLinkElement) => el.href); Аргументы
-
selectorstringСелектор для поиска.
-
pageFunctionfunction(Element) | stringФункция, выполняемая в контексте страницы.
-
argEvaluationArgument (необязательно)Необязательный аргумент, передаваемый в pageFunction.
-
optionsObject (необязательно)-
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
Возвращает
$$eval
Не рекомендуетсяВ большинстве случаев лучше справляются locator.evaluateAll(), другие вспомогательные методы Locator и проверки, ориентированные на веб-страницу.
Метод находит на странице все элементы, соответствующие указанному селектору, и передаёт массив найденных элементов первым аргументом в pageFunction. Возвращает результат вызова pageFunction.
Если pageFunction возвращает Promise, вызов page.$$eval() дождётся разрешения промиса и вернёт его значение.
Использование
const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10); Аргументы
-
selectorstringСелектор для поиска.
-
pageFunctionfunction(Array<Element>) | stringФункция, выполняемая в контексте страницы.
-
argEvaluationArgument (необязательно)Необязательный аргумент, передаваемый в pageFunction.
Возвращает
check
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.check(). Подробнее см. в разделе локаторы.
Этот метод отмечает элемент, соответствующий selector, выполняя следующие шаги:
- Находит элемент, соответствующий selector. Если такого элемента нет, ожидает, пока соответствующий элемент не будет добавлен в DOM.
- Проверяет, что найденный элемент является флажком или переключателем. В противном случае метод вызывает исключение. Если элемент уже отмечен, метод немедленно возвращает управление.
- Ожидает прохождения элементом проверок возможности выполнения действия, если только не задан параметр force. Если во время проверок элемент отсоединяется, всё действие выполняется повторно.
- При необходимости прокручивает страницу, чтобы элемент стал видимым.
- Использует page.mouse, чтобы щёлкнуть по центру элемента.
- Проверяет, что элемент теперь отмечен. В противном случае метод вызывает исключение.
Если все шаги не завершатся за указанный период ожидания timeout, метод вызовет исключение TimeoutError. Указание нулевого времени ожидания отключает это ограничение.
Использование
await page.check(selector); await page.check(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
forceboolean (необязательно)Следует ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
positionObject (необязательно)Точка относительно верхнего левого угла области внутренних отступов элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, будет ли Playwright прокручивать страницу, чтобы элемент стал видимым, перед выполнением действия. По умолчанию —
"auto": элемент прокручивается в область просмотра при необходимости, включая прокрутку вложенных прокручиваемых контейнеров. Если задано значение"none", Playwright не прокручивает страницу, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это полезно, чтобы проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout(). -
trialboolean (необязательно)Если задано, этот метод выполняет только проверки возможности выполнения действия, не выполняя само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его.
-
Возвращает
click
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.click(), работающий с локатором. Подробнее о локаторах.
Этот метод щёлкает по элементу, соответствующему селектору, выполняя следующие действия:
- Находит элемент, соответствующий селектору. Если такого элемента нет, ждёт, пока соответствующий элемент не будет добавлен в DOM.
- Ожидает прохождения проверок возможности выполнения действия для найденного элемента, если не задан параметр force. Если во время проверок элемент отсоединяется от DOM, действие повторяется целиком.
- При необходимости прокручивает страницу, чтобы элемент стал видимым.
- Использует page.mouse, чтобы щёлкнуть по центру элемента или в указанной позиции.
- Ожидает успешного или неуспешного завершения запущенной навигации, если не задан параметр noWaitAfter.
Если все действия в совокупности не завершились за указанный тайм-аут, этот метод вызывает ошибку TimeoutError. Передача нулевого тайм-аута отключает его.
Использование
await page.click(selector); await page.click(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
button"left" | "right" | "middle" (необязательно)По умолчанию —
left. -
clickCountnumber (необязательно)По умолчанию — 1. См. UIEvent.detail.
-
delaynumber (необязательно)Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию — 0. -
forceboolean (необязательно)Следует ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Модификаторы клавиш для нажатия. Гарантирует, что во время операции нажаты только эти модификаторы, а затем восстанавливает текущее состояние модификаторов. Если параметр не указан, используются уже нажатые модификаторы. "ControlOrMeta" соответствует "Control" в Windows и Linux и "Meta" в macOS.
-
noWaitAfterboolean (необязательно)УстарелоВ будущем для этого параметра будет использоваться значение
trueпо умолчанию.Действия, запускающие навигацию, ожидают её начала и загрузки страниц. Чтобы отключить ожидание, задайте этот флаг. Этот параметр нужен только в исключительных случаях, например при переходе на недоступные страницы. По умолчанию —
false. -
positionObject (необязательно)Точка относительно верхнего левого угла области внутренних отступов элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, будет ли Playwright прокручивать страницу, чтобы элемент стал видимым, перед выполнением действия. По умолчанию —
"auto": элемент прокручивается в область просмотра при необходимости, включая прокрутку вложенных прокручиваемых контейнеров. Если задано значение"none", Playwright не прокручивает страницу, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это полезно, чтобы проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout(). -
trialboolean (необязательно)Если задано, этот метод выполняет только проверки возможности выполнения действия, не выполняя само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его. Обратите внимание: клавиши клавиатурыmodifiersбудут нажаты независимо отtrial, чтобы можно было тестировать элементы, видимые только при нажатии этих клавиш.
-
Возвращает
dblclick
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.dblclick(), работающий с локатором. Подробнее о локаторах.
Этот метод дважды щёлкает по элементу, соответствующему селектору, выполняя следующие действия:
- Находит элемент, соответствующий селектору. Если такого элемента нет, ждёт, пока соответствующий элемент не будет добавлен в DOM.
- Ожидает прохождения проверок возможности выполнения действия для найденного элемента, если не задан параметр force. Если во время проверок элемент отсоединяется от DOM, действие повторяется целиком.
- При необходимости прокручивает страницу, чтобы элемент стал видимым.
- Использует page.mouse, чтобы дважды щёлкнуть по центру элемента или в указанной позиции.
Если все действия в совокупности не завершились за указанный тайм-аут, этот метод вызывает ошибку TimeoutError. Передача нулевого тайм-аута отключает его.
Примечание
page.dblclick()отправляет два событияclickи одно событиеdblclick.
Использование
await page.dblclick(selector); await page.dblclick(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
button"left" | "right" | "middle" (необязательно)По умолчанию —
left. -
delaynumber (необязательно)Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию — 0. -
forceboolean (необязательно)Следует ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Модификаторы клавиш для нажатия. Гарантирует, что во время операции нажаты только эти модификаторы, а затем восстанавливает текущее состояние модификаторов. Если параметр не указан, используются уже нажатые модификаторы. "ControlOrMeta" соответствует "Control" в Windows и Linux и "Meta" в macOS.
-
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
positionObject (необязательно)Точка относительно верхнего левого угла области внутренних отступов элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, будет ли Playwright прокручивать страницу, чтобы элемент стал видимым, перед выполнением действия. По умолчанию —
"auto": элемент прокручивается в область просмотра при необходимости, включая прокрутку вложенных прокручиваемых контейнеров. Если задано значение"none", Playwright не прокручивает страницу, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это полезно, чтобы проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout(). -
trialboolean (необязательно)Если задано, этот метод выполняет только проверки возможности выполнения действия, не выполняя само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его. Обратите внимание: клавиши клавиатурыmodifiersбудут нажаты независимо отtrial, чтобы можно было тестировать элементы, видимые только при нажатии этих клавиш.
-
Возвращает
dispatchEvent
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.dispatchEvent(), работающий с локатором. Подробнее о локаторах.
Приведённый ниже фрагмент кода отправляет элементу событие click. Событие click отправляется независимо от состояния видимости элемента. Это эквивалентно вызову element.click().
Использование
await page.dispatchEvent('button#submit', 'click'); Внутри метода создаётся экземпляр события заданного типа, инициализируется свойствами eventInit и отправляется элементу. По умолчанию события composed, cancelable и всплывают.
Поскольку eventInit зависит от типа события, список начальных свойств см. в документации по событиям:
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
В качестве значения свойства можно также указать JSHandle, чтобы передать событию живые объекты:
// Note you can only create DataTransfer in Chromium and Firefox
const dataTransfer = await page.evaluateHandle(() => new DataTransfer());
await page.dispatchEvent('#source', 'dragstart', { dataTransfer }); Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
typestringТип события DOM:
"click","dragstart"и т. д. -
eventInitEvaluationArgument (необязательно)Необязательные свойства инициализации, зависящие от типа события.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
fill
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.fill(), работающий с локатором. Подробнее о локаторах.
Этот метод ожидает появления элемента, соответствующего селектору, прохождения проверок возможности выполнения действия, переводит фокус на элемент, заполняет его и после заполнения вызывает событие input. Чтобы очистить поле ввода, передайте пустую строку.
Если целевой элемент не является элементом <input>, <textarea> или [contenteditable], этот метод вызывает ошибку. Однако если элемент находится внутри элемента <label>, с которым связан элемент управления, вместо него будет заполнен элемент управления.
Для отправки точных событий клавиатуры используйте locator.pressSequentially().
Использование
await page.fill(selector, value); await page.fill(selector, value, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
valuestringЗначение для заполнения элемента
<input>,<textarea>или[contenteditable]. -
optionsObject (необязательно)-
forceboolean (необязательно)Определяет, следует ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов приводит к исключению.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
focus
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.focus(), работающий на основе локатора. Подробнее о локаторах.
Этот метод находит элемент по селектору и устанавливает на него фокус. Если элемент, соответствующий селектору, отсутствует, метод ожидает его появления в DOM.
Использование
await page.focus(selector); await page.focus(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов приводит к исключению.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
getAttribute
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.getAttribute(), работающий на основе локатора. Подробнее о локаторах.
Возвращает значение атрибута элемента.
Использование
await page.getAttribute(selector, name); await page.getAttribute(selector, name, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
namestringИмя атрибута, значение которого нужно получить.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов приводит к исключению.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
hover
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.hover(), работающий на основе локатора. Подробнее о локаторах.
Этот метод наводит указатель на элемент, соответствующий селектору, выполняя следующие действия:
- Находит элемент, соответствующий селектору. Если такого элемента нет, ожидает его добавления в DOM.
- Ожидает прохождения проверок возможности выполнения действия для найденного элемента, если только не задан параметр force. Если во время проверок элемент отсоединяется от DOM, все действие выполняется повторно.
- При необходимости прокручивает страницу, чтобы элемент оказался в области видимости.
- Использует page.mouse, чтобы навести указатель на центр элемента или на указанную позицию.
Если все эти действия не завершатся за указанное время ожидания, метод вызовет ошибку TimeoutError. Передача нулевого тайм-аута отключает ограничение по времени.
Использование
await page.hover(selector); await page.hover(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
forceboolean (необязательно)Определяет, следует ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Клавиши-модификаторы, которые нужно нажать. Гарантирует, что во время выполнения операции будут нажаты только эти клавиши, а затем восстанавливает прежнее состояние модификаторов. Если параметр не указан, используются уже нажатые модификаторы. "ControlOrMeta" соответствует "Control" в Windows и Linux и "Meta" в macOS.
-
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
positionObject (необязательно)Точка относительно верхнего левого угла внутреннего поля элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, прокручивает ли Playwright страницу, чтобы элемент оказался в области видимости перед выполнением действия. По умолчанию —
"auto": элемент прокручивается в область видимости при необходимости, в том числе с прокруткой вложенных прокручиваемых контейнеров. Если задано"none", Playwright не прокручивает страницу, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это позволяет проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов приводит к исключению.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout(). -
trialboolean (необязательно)Если параметр задан, метод выполняет только проверки возможности выполнения действия и пропускает само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его. Обратите внимание: клавиши клавиатурыmodifiersбудут нажаты независимо отtrial, чтобы можно было тестировать элементы, видимые только при нажатии этих клавиш.
-
Возвращает
innerHTML
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.innerHTML(), работающий на основе локатора. Подробнее о локаторах.
Возвращает element.innerHTML.
Использование
await page.innerHTML(selector); await page.innerHTML(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов приводит к исключению.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
innerText
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.innerText(), работающий на основе локатора. Подробнее о локаторах.
Возвращает element.innerText.
Использование
await page.innerText(selector); await page.innerText(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов приводит к исключению.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
inputValue
Не рекомендуетсяВместо этого используйте locator.inputValue(), работающий на основе локатора. Подробнее о локаторах.
Возвращает input.value выбранного элемента <input>, <textarea> или <select>.
Для элементов, не являющихся полями ввода, вызывает ошибку. Однако если элемент находится внутри элемента <label>, связанного с элементом control, возвращает значение этого элемента управления.
Использование
await page.inputValue(selector); await page.inputValue(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов приводит к исключению.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
isChecked
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.isChecked(), работающий на основе локатора. Подробнее о локаторах.
Возвращает, отмечен ли элемент. Вызывает ошибку, если элемент не является флажком или переключателем.
Использование
await page.isChecked(selector); await page.isChecked(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isDisabled
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод locator.isDisabled() на основе локатора. Подробнее о локаторах.
Возвращает, отключён ли элемент; противоположное состояние — включён.
Использование
await page.isDisabled(selector); await page.isDisabled(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isEditable
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод locator.isEditable() на основе локатора. Подробнее о локаторах.
Возвращает, является ли элемент редактируемым.
Использование
await page.isEditable(selector); await page.isEditable(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isEnabled
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод locator.isEnabled() на основе локатора. Подробнее о локаторах.
Возвращает, является ли элемент включённым.
Использование
await page.isEnabled(selector); await page.isEnabled(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isHidden
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод locator.isHidden() на основе локатора. Подробнее о локаторах.
Возвращает, скрыт ли элемент; противоположное состояние — видимый. Селектор, которому не соответствует ни один элемент, считается скрытым.
Использование
await page.isHidden(selector); await page.isHidden(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)УстарелоЭтот параметр игнорируется. page.isHidden() не ожидает, пока элемент станет скрытым, и возвращает результат немедленно.
-
Возвращает
isVisible
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод locator.isVisible() на основе локатора. Подробнее о локаторах.
Возвращает, является ли элемент видимым. Селектор, которому не соответствует ни один элемент, считается невидимым.
Использование
await page.isVisible(selector); await page.isVisible(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)УстарелоЭтот параметр игнорируется. 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(); Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
keystringНазвание клавиши для нажатия или символ для ввода, например
ArrowLeftилиa. -
optionsObject (необязательно)-
delaynumber (необязательно)Время ожидания между
keydownиkeyupв миллисекундах. По умолчанию — 0. -
noWaitAfterboolean (необязательно)УстарелоВ будущем для этого параметра будет установлено значение
trueпо умолчанию.Действия, инициирующие переходы, ожидают завершения этих переходов и начала загрузки страниц. Можно отказаться от ожидания, установив этот флаг. Этот параметр нужен только в исключительных случаях, например при переходе на недоступные страницы. По умолчанию —
false. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
selectOption
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод locator.selectOption() на основе локатора. Подробнее о локаторах.
Этот метод ожидает появления элемента, соответствующего селектору, прохождения проверок возможности взаимодействия, а также наличия всех указанных параметров в элементе <select>, после чего выбирает эти параметры.
Если целевой элемент не является элементом <select>, метод вызывает ошибку. Однако если элемент находится внутри элемента <label>, с которым связан элемент управления, вместо него будет использован этот элемент управления.
Возвращает массив значений параметров, которые были успешно выбраны.
После выбора всех указанных параметров инициирует события change и input.
Использование
// Single selection matching the value or label
page.selectOption('select#colors', 'blue');
// single selection matching the label
page.selectOption('select#colors', { label: 'Blue' });
// multiple selection
page.selectOption('select#colors', ['red', 'green', 'blue']);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
valuesnull | string | ElementHandle | Array<string> | Object | Array<ElementHandle> | Array<Object>-
valuestring (необязательно)Сопоставление по
option.value. Необязательный параметр. -
labelstring (необязательно)Сопоставление по
option.label. Необязательный параметр. -
indexnumber (необязательно)Сопоставление по индексу. Необязательный параметр.
Параметры для выбора. Если у
<select>есть атрибутmultiple, будут выбраны все подходящие параметры, иначе будет выбран только первый параметр, соответствующий одному из переданных значений. Строковые значения сопоставляются как со значениями, так и с метками. Параметр считается соответствующим, если совпадают все указанные свойства. -
-
optionsObject (необязательно)-
forceboolean (необязательно)Нужно ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
setChecked
Не рекомендуетсяВместо этого используйте метод locator.setChecked(), работающий с локатором. Подробнее о локаторах.
Этот метод устанавливает или снимает флажок у элемента, соответствующего селектору, выполняя следующие шаги:
- Найти элемент, соответствующий селектору. Если такого элемента нет, дождаться появления соответствующего элемента в DOM.
- Убедиться, что найденный элемент является флажком или переключателем. Если это не так, метод вызывает ошибку.
- Если элемент уже имеет нужное состояние, метод немедленно возвращает управление.
- Дождаться прохождения проверок возможности выполнения действия для найденного элемента, если не задан параметр force. Если во время проверок элемент отсоединяется от DOM, действие повторяется целиком.
- При необходимости прокрутить страницу, чтобы элемент оказался в видимой области.
- Использовать page.mouse для щелчка по центру элемента.
- Убедиться, что флажок установлен или снят. Если это не так, метод вызывает ошибку.
Если все шаги вместе не будут завершены за указанный тайм-аут, метод вызовет ошибку TimeoutError. Передача нулевого значения отключает тайм-аут.
Использование
await page.setChecked(selector, checked); await page.setChecked(selector, checked, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
checkedbooleanУстановить или снять флажок.
-
optionsObject (необязательно)-
forceboolean (необязательно)Нужно ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
positionObject (необязательно)Точка относительно верхнего левого угла области внутренних отступов элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, будет ли Playwright прокручивать страницу, чтобы элемент оказался в видимой области перед выполнением действия. По умолчанию —
"auto": элемент прокручивается в видимую область при необходимости, включая прокрутку вложенных прокручиваемых контейнеров. Если задано"none", Playwright не прокручивает элемент, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это полезно, чтобы проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout(). -
trialboolean (необязательно)Если параметр задан, метод выполняет только проверки возможности выполнения действия и пропускает само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его.
-
Возвращает
setInputFiles
Добавлено до версии v1.9Не рекомендуетсяВместо этого используйте метод locator.setInputFiles(), работающий с локатором. Подробнее о локаторах.
Задаёт значение поля выбора файла, используя указанные пути к файлам или сами файлы. Если некоторые элементы filePaths являются относительными путями, они разрешаются относительно текущего рабочего каталога. Пустой массив очищает список выбранных файлов. Для полей с атрибутом [webkitdirectory] поддерживается только один путь к каталогу.
Этот метод ожидает, что селектор указывает на элемент input. Однако, если элемент находится внутри элемента <label>, связанного с элементом управления, вместо него используется этот элемент управления.
Использование
await page.setInputFiles(selector, files); await page.setInputFiles(selector, files, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
tap
Добавлено до версии v1.9Не рекомендуетсяВместо этого используйте метод locator.tap(), работающий с локатором. Подробнее о локаторах.
Этот метод нажимает на элемент, соответствующий селектору, выполняя следующие шаги:
- Найти элемент, соответствующий селектору. Если такого элемента нет, дождаться появления соответствующего элемента в DOM.
- Дождаться прохождения проверок возможности выполнения действия для найденного элемента, если не задан параметр force. Если во время проверок элемент отсоединяется от DOM, действие повторяется целиком.
- При необходимости прокрутить страницу, чтобы элемент оказался в видимой области.
- Использовать page.touchscreen, чтобы нажать на центр элемента или на указанную позицию.
Если все шаги вместе не будут завершены за указанный тайм-аут, метод вызовет ошибку TimeoutError. Передача нулевого значения отключает тайм-аут.
Примечаниеpage.tap() вызовет ошибку, если для контекста браузера параметр hasTouch имеет значение false.
Использование
await page.tap(selector); await page.tap(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
forceboolean (необязательно)Нужно ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Клавиши-модификаторы, которые нужно нажать. Гарантирует, что во время операции нажаты только эти клавиши, а затем восстанавливает исходное состояние модификаторов. Если параметр не указан, используются уже нажатые клавиши-модификаторы. "ControlOrMeta" соответствует "Control" в Windows и Linux и "Meta" в macOS.
-
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
positionObject (необязательно)Точка относительно верхнего левого угла области внутренних отступов элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, будет ли Playwright прокручивать страницу, чтобы элемент оказался в видимой области перед выполнением действия. По умолчанию —
"auto": элемент прокручивается в видимую область при необходимости, включая прокрутку вложенных прокручиваемых контейнеров. Если задано"none", Playwright не прокручивает элемент, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это полезно, чтобы проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout(). -
trialboolean (необязательно)Если параметр задан, метод выполняет только проверки возможности выполнения действия и пропускает само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его. Обратите внимание: клавиши клавиатурыmodifiersбудут нажаты независимо отtrial, чтобы можно было тестировать элементы, видимые только при нажатии этих клавиш.
-
Возвращает
textContent
Добавлено до версии v1.9Не рекомендуетсяВместо этого используйте метод locator.textContent(), работающий с локатором. Подробнее о локаторах.
Возвращает element.textContent.
Использование
await page.textContent(selector); await page.textContent(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
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().
Использование
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
textstringТекст, вводимый в элемент, находящийся в фокусе.
-
optionsObject (необязательно)-
delaynumber (необязательно)Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию — 0.
-
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методами browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
uncheck
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод locator.uncheck(), основанный на локаторе. Подробнее о локаторах.
Этот метод снимает отметку с элемента, соответствующего селектору, выполняя следующие действия:
- Находит элемент, соответствующий селектору. Если такого элемента нет, ждёт, пока соответствующий элемент не будет добавлен в DOM.
- Проверяет, что найденный элемент — это флажок или переключатель. В противном случае метод вызывает исключение. Если отметка с элемента уже снята, метод немедленно возвращает результат.
- Ожидает успешного прохождения проверок возможности выполнения действия для найденного элемента, если не задан параметр force. Если во время проверок элемент отсоединяется, действие повторяется целиком.
- При необходимости прокручивает страницу до элемента.
- Использует page.mouse, чтобы щёлкнуть по центру элемента.
- Проверяет, что отметка с элемента снята. В противном случае метод вызывает исключение.
Если все действия в совокупности не завершились за указанный период ожидания, метод вызывает ошибку TimeoutError. Передача нулевого тайм-аута отключает его.
Использование
await page.uncheck(selector); await page.uncheck(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
forceboolean (необязательно)Следует ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
positionObject (необязательно)Точка относительно верхнего левого угла внутренней области элемента. Если не указана, используется одна из видимых точек элемента.
-
scroll"auto" | "none" (необязательно)Определяет, будет ли Playwright прокручивать страницу до элемента перед выполнением действия. По умолчанию —
"auto": страница прокручивается до элемента при необходимости, в том числе прокручиваются вложенные прокручиваемые контейнеры. Если задано"none", Playwright не прокручивает страницу до элемента, и действие завершается неудачно, если элемент уже не находится в области просмотра. Это полезно для проверки того, что пользователь может получить доступ к элементу без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методами browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (необязательно)Если задано, этот метод выполняет только проверки возможности выполнения действия, пропуская само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его.
-
Возвращает
waitForNavigation
Добавлено до v1.9УстарелоЭтот метод подвержен гонкам; вместо него используйте page.waitForURL().
Ожидает навигации главного фрейма и возвращает ответ на основной ресурс. При нескольких перенаправлениях навигация завершится ответом последнего перенаправления. При переходе к другому якорю или навигации вследствие использования History API навигация завершится значением null.
Использование
Метод завершается, когда страница переходит на новый URL или перезагружается. Он полезен, если вы запускаете код, который косвенно вызывает навигацию страницы. Например, у цели щелчка есть обработчик onclick, который запускает навигацию из setTimeout. Рассмотрим следующий пример:
// Start waiting for navigation before clicking. Note no await.
const navigationPromise = page.waitForNavigation();
await page.getByText('Navigate after timeout').click();
await navigationPromise; ПримечаниеИзменение URL с помощью History API считается навигацией.
Аргументы
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить ожидание с помощью
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, полностью совпадающий с этой строкой.
-
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)Момент, когда операция считается успешно завершённой; по умолчанию —
load. Возможны следующие события:-
'domcontentloaded'— операция считается завершённой при срабатывании событияDOMContentLoaded. -
'load'— операция считается завершённой при срабатывании событияload. -
'networkidle'— НЕ РЕКОМЕНДУЕТСЯ: операция считается завершённой, если сетевые подключения отсутствуют как минимум500мс. Не используйте этот метод для тестирования; вместо этого полагайтесь на веб-проверки готовности. -
'commit'— операция считается завершённой, когда получен ответ сети и началась загрузка документа.
-
-
Возвращает
waitForSelector
Добавлено до v1.9Не рекомендуетсяВместо этого используйте веб-проверки видимости или метод locator.waitFor(), основанный на локаторе. Подробнее о локаторах.
Возвращает результат, когда элемент, указанный селектором, соответствует параметру state. Возвращает null при ожидании hidden или detached.
ПримечаниеPlaywright автоматически ожидает готовности элемента перед выполнением действия. Использование объектов Locator и веб-проверок с автоматическим ожиданием позволяет писать код без ожидания селектора.
Ожидает, пока селектор не будет соответствовать параметру state (элемент не появится в DOM или не исчезнет из него либо не станет видимым или скрытым). Если на момент вызова метода селектор уже соответствует условию, метод немедленно возвращает результат. Если селектор не соответствует условию в течение указанного времени ожидания в миллисекундах, функция вызовет ошибку.
Использование
Метод работает при переходах между страницами:
const { chromium } = require('playwright'); // Or 'firefox' or '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('Loaded image: ' + await element.getAttribute('src'));
}
await browser.close();
})(); Аргументы
-
selectorstringСелектор для поиска.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
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 (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует более чем одному элементу, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методами browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForTimeout
Добавлено до v1.9Не рекомендуетсяНе используйте ожидание по тайм-ауту в рабочем коде. Тесты, ожидающие определённое время, по своей природе нестабильны. Используйте действия Locator и веб-проверки с автоматическим ожиданием.
Ожидает указанное время тайм-аута в миллисекундах.
Обратите внимание: page.waitForTimeout() следует использовать только для отладки. Тесты, использующие таймер в рабочем коде, будут нестабильными. Вместо этого используйте сигналы, например сетевые события или появление селекторов, и другие подобные условия.
Использование
// wait for 1 second await page.waitForTimeout(1000);
Аргументы
-
timeoutnumberВремя ожидания
Возвращает
© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-page