Страница
Страница предоставляет методы для взаимодействия с одной вкладкой в браузере или с фоновой страницей расширения в Chromium страницы фонового расширения. Один экземпляр браузера может содержать несколько экземпляров страницы.
В этом примере создается страница, она перенаправляется на 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.js, таких как 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
Добавлен до версии 1.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(), не определён.
Аргументы
-
scriptфункция | строка | объект-
pathстрока (необязательно)Путь к файлу JavaScript. Если
path— относительный путь, он разрешается относительно текущей рабочей директории. Необязательно. -
contentстрока (необязательно)Сырой скрипт-код. Необязательно.
Скрипт, который будет оценён на странице.
-
-
argсериализуемый (необязательно)Необязательный аргумент для передачи в script (поддерживается только при передаче функции).
Возвращает
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 }); Аргументы
-
locatorЛокаторЛокатор, который вызывает обработчик.
-
handlerфункция(Локатор):Promise<объект>Функция, которая должна быть выполнена, когда появляется locator. Эта функция должна убрать элемент, который блокирует действия, такие как клик.
-
optionsобъект (необязательно)-
noWaitAfterboolean (необязательно)По умолчанию после вызова обработчика Playwright ожидает, пока наложение не исчезнет, и только тогда Playwright продолжит действие/утверждение, которое вызвало обработчик. Этот параметр позволяет отказаться от этого поведения, чтобы наложение оставалось видимым после выполнения обработчика.
-
timesчисло (необязательно)Указывает максимальное количество вызовов этого обработчика. По умолчанию без ограничений.
-
Возвращает
addScriptTag
Добавлен до версии 1.9Добавляет тег <script> на страницу с желаемым URL или содержимым. Возвращает добавленный тег при срабатывании события onload скрипта или когда скрипт-код был инжектирован в фрейм.
Использование
await page.addScriptTag(); await page.addScriptTag(options);
Аргументы
-
optionsОбъект (необязательно)-
contentстрока (необязательно)Сырой JavaScript-код, который будет инжектирован во фрейм.
-
pathстрока (необязательно)Путь к JavaScript-файлу, который будет инжектирован во фрейм. Если
pathэто относительный путь, то он будет разрешён относительно текущей рабочей директории. -
typeстрока (необязательно)Тип скрипта. Используйте 'module', чтобы загрузить JavaScript-модуль ES6. См. script для более подробной информации.
-
urlстрока (необязательно)URL скрипта, который будет добавлен.
-
Возвращает
addStyleTag
Добавлен до v1.9Добавляет тег <link rel="stylesheet"> на страницу с желаемым URL или тег <style type="text/css"> с содержимым. Возвращает добавленный тег, когда происходит событие onload стилей или когда CSS-содержимое было инжектировано во фрейм.
Использование
await page.addStyleTag(); await page.addStyleTag(options);
Аргументы
-
optionsОбъект (необязательно)-
contentстрока (необязательно)Сырой CSS-код, который будет инжектирован во фрейм.
-
pathстрока (необязательно)Путь к CSS-файлу, который будет инжектирован во фрейм. Если
pathэто относительный путь, то он будет разрешён относительно текущей рабочей директории. -
urlстрока (необязательно)URL тега
<link>.
-
Возвращает
bringToFront
Добавлен до v1.9Переводит страницу на передний план (активирует вкладку).
Использование
await page.bringToFront();
Возвращает
close
Добавлен до v1.9Если runBeforeUnload false, не выполняет обработчики закрытия и ждёт закрытия страницы. Если runBeforeUnload true, метод выполнит обработчики закрытия, но не будет ждать закрытия страницы.
По умолчанию, page.close() не выполняет обработчики beforeunload.
примЕсли runBeforeUnload передан как true, может появиться диалоговое окно
beforeunload, которое нужно обработать вручную через событие page.on('dialog').
Использование
await page.close(); await page.close(options);
Аргументы
-
optionsОбъект (необязательно)-
reasonстрока (необязательно)Причина, сообщаемая при прерывании операций закрытием страницы.
-
runBeforeUnloadбулево значение (необязательно)По умолчанию
false. Выполнять ли обработчики загрузки страницы перед закрытием.
-
Возвращает
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Селектор для поиска элемента, на который нужно опустить перетаскиваемый элемент. Если селектор соответствует нескольким элементам, используется первый.
-
optionsОбъект (необязательно)-
forceboolean (необязательно)Пропустить ли проверки действительности действия. По умолчанию
false. -
noWaitAfterboolean (необязательно)УстаревшееЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
sourcePositionОбъект (необязательно)Координаты щелчка по исходному элементу относительно верхнего левого угла области отступа элемента. Если не указано, используется какая-то видимая точка элемента.
-
strictboolean (необязательно)Если true, вызов требует, чтобы селектор разрешился в один элемент. Если селектор разрешается более чем на один элемент, вызов генерирует исключение.
-
targetPositionОбъект (необязательно)Координаты опускания на целевой элемент относительно верхнего левого угла области отступа элемента. Если не указано, используется какая-то видимая точка элемента.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
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 Аргументы
-
optionsОбъект (необязательно)-
colorSchemenull | "светлый" | "тёмный" | "без предпочтений" (необязательно)Эмулирует среду prefers-colors-scheme, поддерживаемые значения —
'light'и'dark'. Передачаnullотключает эмуляцию цветовой схемы.'no-preference'устарело. -
forcedColorsnull | "активный" | "нет" (необязательно)Эмулирует среду
'forced-colors', поддерживаемые значения —'active'и'none'. Передачаnullотключает эмуляцию принудительных цветов. -
medianull | "экран" | "печать" (необязательно)Изменяет тип CSS среды страницы. Разрешены только значения
'screen','print'иnull. Передачаnullотключает эмуляцию CSS среды. -
reducedMotionnull | "снизить" | "без предпочтений" (необязательно)Эмулирует среду
'prefers-reduced-motion', поддерживаемые значения —'reduce','no-preference'. Передачаnullотключает эмуляцию снижения анимации.
-
Возвращает
evaluate
Добавлен до v1.9Возвращает значение вызова pageFunction.
Если функция, переданная в page.evaluate(), возвращает Promise, то page.evaluate() ожидает разрешения промиса и возвращает его значение.
Если функция, переданная в page.evaluate(), возвращает несериализуемое значение, то 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.evaluate('document.body');
const html = await page.evaluate<string, HTMLElement>(([body, suffix]) =>
body.innerHTML + suffix, [bodyHandle, 'hello']
);
await bodyHandle.dispose(); Аргументы
-
Функция, которая будет выполняться в контексте страницы.
-
argEvaluationArgument (необязательно)Необязательный аргумент для передачи в pageFunction.
Возвращает
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();
Аргументы
-
Функция, которая должна быть выполнена в контексте страницы.
-
argEvaluationArgument (необязательно)Необязательный аргумент для передачи в pageFunction.
Возвращаемое значение
exposeBinding
Добавлен до версии 1.9Метод добавляет функцию под названием имя в объект 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');
})(); Аргументы
-
nameстрокаИмя функции в объекте window.
-
callbackфункцияФункция обратного вызова, которая будет вызвана в контексте Playwright.
-
optionsобъект (необязательно)-
handleбулево значение (необязательно)УстарелоЭтот параметр будет удалён в будущем.
Указывает, передавать ли аргумент как handle вместо значения. При передаче handle поддерживается только один аргумент. При передаче по значению поддерживается несколько аргументов.
-
Возвращаемое значение
exposeFunction
Добавлен до версии 1.9Метод добавляет функцию под названием имя в объект 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');
})(); Аргументы
-
nameстрокаИмя функции в объекте window.
-
callbackфункцияФункция обратного вызова, которая будет вызвана в контексте Playwright.
Возвращаемое значение
frame
Добавлен до версии 1.9Возвращает фрейм, соответствующий заданным критериям. Необходимо указать либо name, либо url.
Использование
const frame = page.frame('frame-name'); const frame = page.frame({ url: /.*domain.*/ }); Аргументы
Возвращаемое значение
frameLocator
При работе с iframe можно создать локатор фрейма, который войдёт во фрейм и позволит выбирать элементы внутри него.
Использование
Следующий фрагмент находит элемент с текстом "Submit" во фрейме с id my-frame, как <iframe id="my-frame">:
const locator = page.frameLocator('#my-iframe').getByText('Submit');
await locator.click(); Аргументы
-
selectorстрокаСелектор для разрешения DOM-элемента.
Возвращаемое значение
frames
Добавлен до версии 1.9Массив всех фреймов, присоединённых к странице.
Использование
page.frames();
Возвращаемое значение
getByAltText
Позволяет находить элементы по их текстовому описанию (alt text).
Использование
Например, этот метод найдёт изображение по текстовому описанию «Логотип Playwright»:
<img alt='Playwright logo'>
await page.getByAltText('Playwright logo').click(); Аргументы
-
textстрока | выражение регулярного типаТекст для поиска элемента.
-
optionsобъект (необязательно)-
exactбулево (необязательно)Требовать точное совпадение: регистрозависимое и по всему тексту. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение всё равно обрезает пробелы.
-
Возвращает
getByLabel
Позволяет находить элементы ввода по тексту связанного с ними элемента <label> или aria-labelledby или по атрибуту aria-label.
Использование
Например, этот метод найдёт поля ввода с метками «Имя пользователя» и «Пароль» в следующем 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'); Аргументы
-
textстрока | выражение регулярного типаТекст для поиска элемента.
-
optionsобъект (необязательно)-
exactбулево (необязательно)Требовать точное совпадение: регистрозависимое и по всему тексту. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение всё равно обрезает пробелы.
-
Возвращает
getByPlaceholder
Позволяет находить поля ввода по текстовому описанию placeholder.
Использование
Рассмотрим следующую структуру DOM.
<input type="email" placeholder="name@example.com" />
Вы можете заполнить поле ввода после его поиска по текстовому описанию placeholder:
await page
.getByPlaceholder('name@example.com')
.fill('playwright@microsoft.com'); Аргументы
-
textстрока | выражение регулярного типаТекст для поиска элемента.
-
optionsобъект (необязательно)-
exactбулево (необязательно)Требовать точное совпадение: регистрозависимое и по всему тексту. По умолчанию 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.
-
optionsОбъект (необязательно)-
checkedboolean (необязательно)Атрибут, обычно устанавливаемый
aria-checkedили нативными<input type=checkbox>элементами управления.Узнайте больше о
aria-checked. -
disabledboolean (необязательно)Атрибут, обычно устанавливаемый
aria-disabledилиdisabled.примечаниеВ отличие от большинства других атрибутов,
disabledнаследуется через иерархию DOM. Узнайте больше оaria-disabled. -
exactboolean (необязательно)Соответствует ли имя точно: регистрозависимо и по всему строковому значению. По умолчанию false. Игнорируется, если имя является регулярным выражением. Обратите внимание, что точное соответствие всё ещё обрезает пробелы.
-
expandedboolean (необязательно)Атрибут, обычно устанавливаемый
aria-expanded.Узнайте больше о
aria-expanded. -
includeHiddenboolean (необязательно)Параметр, определяющий, будут ли учитываться скрытые элементы. По умолчанию, соответствие по роли выбирает только нескрытые элементы, как определено ARIA.
Узнайте больше о
aria-hidden. -
levelчисло (необязательно)Числовой атрибут, обычно присутствующий для ролей
heading,listitem,row,treeitem, со значениями по умолчанию для<h1>-<h6>элементов.Узнайте больше о
aria-level. -
nameстрока | 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); Аргументы
-
Текст для поиска элемента.
-
optionsОбъект (необязательно)-
exactboolean (необязательно)Находить точное совпадение: регистрозависимое и по всему строковому значению. По умолчанию false. Игнорируется при поиске по регулярному выражению. Точное совпадение всё ещё обрезает пробелы.
-
Возвращает
Подробности
Сопоставление по тексту всегда приводит пробелы к нормальному виду, даже при точном совпадении. Например, это объединяет несколько пробелов в один, преобразует символы перевода строки в пробелы и игнорирует начальные и конечные пробелы.
Элементы ввода типа button и submit сопоставляются по их value вместо содержимого текста. Например, поиск по тексту "Log in" соответствует <input type=button value="Log in">.
getByTitle
Позволяет находить элементы по атрибуту title.
Использование
Рассмотрим следующую структуру DOM.
<span title='Issues count'>25 issues</span>
Вы можете проверить количество проблем после его нахождения по тексту title:
await expect(page.getByTitle('Issues count')).toHaveText('25 issues'); Аргументы
-
Текст для поиска элемента.
-
optionsОбъект (необязательно)-
exactлогическое (необязательно)Определяет, нужно ли искать точное совпадение: чувствительность к регистру и полное совпадение строки. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение всё равно обрезает пробелы.
-
Возвращает
goBack
Добавлена до версии 1.9Возвращает ответ на основной запрос ресурса. В случае нескольких перенаправлений навигация будет выполнена с ответом последнего перенаправления. Если невозможно вернуться назад, возвращает null.
Переход на предыдущую страницу в истории.
Использование
await page.goBack(); await page.goBack(options);
Аргументы
-
optionsОбъект (необязательно)-
timeoutчисло (необязательно)Максимальное время выполнения в миллисекундах. По умолчанию
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.
Переход на следующую страницу в истории.
Использование
await page.goForward(); await page.goForward(options);
Аргументы
-
optionsОбъект (необязательно)-
timeoutчисло (необязательно)Максимальное время выполнения в миллисекундах. По умолчанию
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);
Аргументы
-
urlстрокаURL для перехода на страницу. URL должен включать схему, например,
https://. Если с помощью параметров контекста был предоставлен baseURL, а переданный URL является путём, он объединяется с помощью конструктораnew URL(). -
optionsОбъект (необязательно)-
refererстрока (необязательно)Значение заголовка referer. Если предоставлено, оно будет иметь приоритет над значением заголовка referer, установленным с помощью page.setExtraHTTPHeaders().
-
timeoutчисло (необязательно)Максимальное время выполнения в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию можно изменить с помощью параметраnavigationTimeoutв конфигурации или используя методы browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)Когда считать операцию успешной, по умолчанию
load. События могут быть:-
'domcontentloaded'— считать операцию завершённой, когда срабатывает событиеDOMContentLoaded. -
'load'— считать операцию завершённой, когда срабатывает событиеload. -
'networkidle'— НЕ РЕКОМЕНДУЕТСЯ считать операцию завершённой, когда нет сетевых подключений в течение как минимум500мс. Не используйте этот метод для тестирования, вместо этого опирайтесь на веб-утверждения для оценки готовности. -
'commit'— считать операцию завершённой, когда получен сетевой ответ и документ начал загружаться.
-
-
Возвращает
isClosed
Добавлен до версии 1.9Указывает, что страница закрыта.
Использование
page.isClosed();
Возвращает
locator
Метод возвращает локатор элемента, который может использоваться для выполнения действий на этой странице/рамке. Локатор разрешается в элемент непосредственно перед выполнением действия, поэтому серия действий с одним и тем же локатором может фактически выполняться на разных элементах DOM. Это может произойти, если структура DOM изменилась между этими действиями.
Использование
page.locator(selector); page.locator(selector, options);
Аргументы
-
selectorстрокаСелектор, используемый при разрешении элемента DOM.
-
optionsобъект (необязательно)-
hasNotLocator (необязательно)Сопоставляет элементы, которые не содержат элемент, соответствующий внутреннему локатору. Внутренний локатор запрашивается относительно внешнего. Например,
articleбезdivсоответствует<article><span>Playwright</span></article>.Обратите внимание, что внешний и внутренний локаторы должны принадлежать одной и той же рамке. Внутренний локатор не должен содержать FrameLocatorов.
-
hasNotTextстрока | RegExp (необязательно)Сопоставляет элементы, не содержащие указанный текст где-либо внутри, возможно, в дочернем или потомке. При передаче строки сопоставление регистронезависимое и ищет подстроку.
-
hasTextстрока | RegExp (необязательно)Сопоставляет элементы, содержащие указанный текст где-либо внутри, возможно, в дочернем или потомке. При передаче строки сопоставление регистронезависимое и ищет подстроку. Например,
"Playwright"соответствует<article><div>Playwright</div></article>. -
hasLocator (необязательно)Сужает результаты метода до тех, которые содержат элементы, соответствующие этому относительному локатору. Например,
articleкоторый имеетtext=Playwrightсоответствует<article><div>Playwright</div></article>.Внутренний локатор должен быть относительным к внешнему локатору и запрашивается, начиная с совпадения внешнего локатора, а не корня документа. Например, вы можете найти
contentкоторый имеетdivв<article><content><div>Playwright</div></content></article>. Однако поискcontentкоторый имеетarticle divзавершится неудачей, так как внутренний локатор должен быть относительным и не должен использовать какие-либо элементы за пределамиcontent.Обратите внимание, что внешний и внутренний локаторы должны принадлежать одной и той же рамке. Внутренний локатор не должен содержать FrameLocatorов.
-
Возвращает
mainFrame
Добавлен до версии 1.9Основная рамка страницы. Страница гарантированно имеет основную рамку, которая сохраняется во время навигации.
Использование
page.mainFrame();
Возвращает
opener
Добавлен до версии 1.9Возвращает открыватель для всплывающих страниц и null для других. Если открыватель уже закрыт, возвращает null.
Использование
await page.opener();
Возвращает
pause
Приостанавливает выполнение скрипта. Playwright прекратит выполнение скрипта и подождет, пока пользователь не нажмет кнопку «Возобновить» в наложенном элементе страницы или не вызовет playwright.resume() в консоли DevTools.
Пользователь может просматривать селекторы или выполнять ручные шаги во время паузы. Возобновление продолжит выполнение исходного скрипта с места его приостановки.
примечаниеЭтот метод требует запуска Playwright в режиме с отображением, с ложным headless параметром.
Использование
await page.pause();
Возвращает
pdf
Добавлен до версии 1.9Возвращает буфер PDF.
примечаниеГенерация PDF в настоящее время поддерживается только в Chromium headless.
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' }); Параметры ширина, высота и отступ принимают значения с единицами измерения. Значения без единиц измерения рассматриваются как пиксели.
Несколько примеров:
-
page.pdf({width: 100})- печатает со значением ширины 100 пикселей -
page.pdf({width: '100px'})- печатает со значением ширины 100 пикселей -
page.pdf({width: '10cm'})- печатает со значением ширины 10 сантиметров.
Все возможные единицы измерения:
-
px- пиксель -
in- дюйм -
cm- сантиметр -
mm- миллиметр
Параметры формат:
-
Letter: 8,5 дюйма x 11 дюймов -
Legal: 8,5 дюйма x 14 дюймов -
Tabloid: 11 дюймов x 17 дюймов -
Ledger: 17 дюймов x 11 дюймов -
A0: 33,1 дюйма x 46,8 дюймов -
A1: 23,4 дюйма x 33,1 дюймов -
A2: 16,54 дюйма x 23,4 дюймов -
A3: 11,7 дюйма x 16,54 дюймов -
A4: 8,27 дюйма x 11,7 дюймов -
A5: 5,83 дюйма x 8,27 дюймов -
A6: 4,13 дюйма x 5,83 дюймов
примечаниеРазметка headerTemplate и footerTemplate имеет следующие ограничения: > 1. Теги скриптов внутри шаблонов не оцениваются. > 2. Стили страницы не видны внутри шаблонов.
Аргументы
-
optionsОбъект (необязательно)-
displayHeaderFooterboolean (необязательно)Отобразить заголовок и подвал. По умолчанию
false. -
footerTemplateстрока (необязательно)HTML-шаблон для подвала печати. Должен использовать тот же формат, что и headerTemplate.
-
formatстрока (необязательно)Формат бумаги. Если задано, имеет приоритет над параметрами ширина или высота. По умолчанию 'Letter'.
-
headerTemplateстрока (необязательно)HTML-шаблон для заголовка печати. Должен быть корректной HTML-разметкой со следующими классами, используемыми для вставки значений печати:
-
'date'отформатированная дата печати -
'title'название документа -
'url'расположение документа -
'pageNumber'номер текущей страницы -
'totalPages'общее количество страниц в документе
-
-
heightстрока | число (необязательно)Высота бумаги, принимает значения с единицами измерения.
-
landscapeboolean (необязательно)Ориентация бумаги. По умолчанию
false. -
marginОбъект (необязательно)-
topстрока | число (необязательно)Верхнее поле, принимает значения с единицами измерения. По умолчанию
0. -
rightстрока | число (необязательно)Правое поле, принимает значения с единицами измерения. По умолчанию
0. -
bottomстрока | число (необязательно)Нижнее поле, принимает значения с единицами измерения. По умолчанию
0. -
leftстрока | число (необязательно)Левое поле, принимает значения с единицами измерения. По умолчанию
0.
Поля бумаги, по умолчанию отсутствуют.
-
-
outlineboolean (необязательно)Включать ли оглавление документа в PDF. По умолчанию
false. -
pageRangesстрока (необязательно)Диапазоны страниц для печати, например, '1-5, 8, 11-13'. По умолчанию пустая строка, что означает печать всех страниц.
-
pathстрока (необязательно)Путь к файлу для сохранения PDF. Если путь относительный, он будет разрешён относительно текущей рабочей директории. Если путь не указан, PDF не будет сохранён на диск.
-
preferCSSPageSizeboolean (необязательно)Приоритетизировать любые объявленные в CSS размеры страницы над значениями, указанными в width, height или format. По умолчанию
false, что приведет к масштабированию содержимого для соответствия размеру бумаги. -
printBackgroundboolean (необязательно)Печать графики фона. По умолчанию
false. -
scaleчисло (необязательно)Масштаб рендеринга веб-страницы. По умолчанию
1. Значение масштаба должно быть между 0,1 и 2. -
taggedboolean (необязательно)Генерировать ли PDF с тегами (доступный PDF). По умолчанию
false. -
widthстрока | число (необязательно)Ширина бумаги, принимает значения с единицами измерения.
-
Возвращает
reload
Добавлен до версии v1.9Этот метод перезагружает текущую страницу так же, как если бы пользователь вызвал обновление браузера. Возвращает ответ основного ресурса. В случае нескольких редиректов навигация разрешится с ответом последнего редиректа.
Использование
await page.reload(); await page.reload(options);
Аргументы
-
optionsОбъект (необязательно)-
timeoutчисло (необязательно)Максимальное время выполнения в миллисекундах. По умолчанию
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' }); Аргументы
-
typeстрока (необязательно) -
optionsОбъект (необязательно)-
behavior"ожидание" | "пропуститьОшибки" | "по умолчанию" (необязательно)Указывает, нужно ли ожидать уже запущенные обработчики и что делать, если они выбросят ошибки:
-
'default'- не ждать завершения текущих вызовов обработчика (если есть), если обработчик выбросит ошибку, это может привести к необработанной ошибке -
'wait'- ждать завершения текущих вызовов обработчика (если есть) -
'ignoreErrors'- не ждать завершения текущих вызовов обработчика (если есть), все ошибки, выброшенные обработчиками после удаления, будут молча перехвачены
-
-
Возвращает
removeLocatorHandler
Удаляет все обработчики локаторов, добавленные с помощью page.addLocatorHandler() для определённого локатора.
Использование
await page.removeLocatorHandler(locator);
Аргументы
-
locatorЛокаторЛокатор, переданный в 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();
Возвращает
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.
Аргументы
-
urlстрока | регулярное выражение | функция(URL):булевоШаблон совпадения, шаблон регулярных выражений или предикат, принимающий URL для сопоставления при маршрутизации. При указании baseURL в опциях контекста и передаче URL в виде пути, он объединяется с помощью конструктора
new URL(). -
handlerфункция(маршрут, запрос):Promise<Объект> | Объектфункция-обработчик для маршрутизации запроса.
-
optionsОбъект (необязательно)-
timesчисло (необязательно)Как часто маршрут должен использоваться. По умолчанию он будет использоваться каждый раз.
-
Возвращает
routeFromHAR
Если указано, сетевые запросы, выполняемые на странице, будут обслуживаться из файла HAR. Подробнее о воспроизведении из HAR.
Playwright не будет обслуживать запросы, перехваченные Service Worker, из файла HAR. См. эту проблему. Рекомендуется отключить Service Worker при использовании перехвата запросов, установив serviceWorkers в 'block'.
Использование
await page.routeFromHAR(har); await page.routeFromHAR(har, options);
Аргументы
-
harстрокаПуть к файлу HAR с предварительно записанными сетевыми данными. Если
path— это относительный путь, то он разрешается относительно текущего рабочего каталога. -
optionsОбъект (необязательно)-
notFound"abort" | "fallback" (необязательно)- Если установлено значение 'abort', любые запросы, отсутствующие в файле HAR, будут прерваны.
- Если установлено значение 'fallback', отсутствующие запросы будут отправлены в сеть.
По умолчанию используется значение abort.
-
updateлогическое (необязательно)Если указано, обновляет заданный HAR фактической сетевой информацией вместо получения из файла. Файл записывается на диск, когда вызывается browserContext.close().
-
updateContent"embed" | "attach" (необязательно)Необязательная настройка для управления управлением содержимым ресурсов. Если
attachуказано, ресурсы сохраняются как отдельные файлы или записи в архиве ZIP. Еслиembedуказано, содержимое сохраняется внутри файла HAR. -
updateMode"full" | "minimal" (необязательно)При установке значения
minimal, записывается только информация, необходимая для маршрутизации из HAR. Это опускает размеры, временные характеристики, страницу, куки, безопасность и другие типы информации HAR, которые не используются при воспроизведении из HAR. По умолчанию используетсяminimal. -
urlстрока | RegExp (необязательно)Шаблон glob, регулярное выражение или предикат для сопоставления URL запроса. Только запросы с URL, соответствующие шаблону, будут получены из файла HAR. Если не указано, все запросы получаются из файла HAR.
-
Возвращает
routeWebSocket
Этот метод позволяет изменять соединения WebSocket, которые создаются страницей.
Обратите внимание, что только WebSockets, созданные после вызова этого метода, будут маршрутизированы. Рекомендуется вызывать этот метод перед навигацией по странице.
Использование
Ниже приведен пример простого мока, который отвечает на одно сообщение. Подробнее и примеры см. в WebSocketRoute.
await page.routeWebSocket('/ws', ws => {
ws.onMessage(message => {
if (message === 'request')
ws.send('response');
});
}); Аргументы
-
urlстрока | RegExp | функция(URL):логическоеМаршрутизируются только WebSocket с URL, соответствующим этому шаблону. Строковый шаблон может быть относительным к контексту опции baseURL.
-
handlerфункция(WebSocketRoute):Promise<Объект> | ОбъектФункция-обработчик для маршрутизации WebSocket.
Возвращает
screenshot
Добавлена до версии v1.9Возвращает буфер с захваченным скриншотом.
Использование
await page.screenshot(); await page.screenshot(options);
Аргументы
-
optionsОбъект (необязательно)-
animations"disabled" | "allow" (необязательно)При установке в значение
"disabled", останавливаются анимации CSS, переходы CSS и веб-анимации. Анимации обрабатываются по-разному в зависимости от их продолжительности:- конечные анимации быстро проигрываются до завершения, поэтому они вызовут событие
transitionend. - бесконечные анимации отменяются до начального состояния и затем воспроизводятся повторно после создания скриншота.
По умолчанию устанавливается
"allow", что оставляет анимации без изменений. - конечные анимации быстро проигрываются до завершения, поэтому они вызовут событие
-
caret"hide" | "initial" (необязательно)При установке в значение
"hide", курсор в скриншоте будет скрыт. При установке в значение"initial", поведение курсора текста не изменится. По умолчанию"hide". -
clipОбъект (необязательно)-
xчислоКоордината x левого верхнего угла области обрезки
-
yчислоКоордината y левого верхнего угла области обрезки
-
widthчислоШирина области обрезки
-
heightчислоВысота области обрезки
Объект, определяющий обрезку результирующего изображения.
-
-
fullPageлогическое значение (необязательно)При значении true, делает скриншот всей прокручиваемой страницы, а не только текущего видимого окна просмотра. По умолчанию
false. -
maskМассив<Locator> (необязательно)Укажите локаторы, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут перекрыты розовым прямоугольником
#FF00FF(настраиваемым с помощью maskColor), который полностью покрывает его границу. -
maskColorстрока (необязательно)Укажите цвет прямоугольника маски для замаскированных элементов в формате CSS. Цвет по умолчанию — розовый
#FF00FF. -
omitBackgroundлогическое значение (необязательно)Скрывает стандартный белый фон и позволяет создавать скриншоты с прозрачностью. Неприменимо к
jpegизображениям. По умолчаниюfalse. -
pathстрока (необязательно)Путь к файлу для сохранения изображения. Тип скриншота будет определен по расширению файла. Если путь path является относительным, то он разрешается относительно текущей рабочей директории. Если путь не указан, изображение не будет сохранено на диск.
-
qualityчисло (необязательно)Качество изображения, от 0 до 100. Неприменимо к
pngизображениям. -
scale"css" | "device" (необязательно)При установке в значение
"css", скриншот будет содержать один пиксель на каждый пиксель CSS на странице. Для устройств с высоким разрешением это поможет сохранить скриншоты компактными. Использование параметра"device"приведет к одному пикселю на каждый пиксель устройства, поэтому скриншоты устройств с высоким разрешением будут в два раза больше или даже больше.По умолчанию
"device". -
styleстрока (необязательно)Текст таблицы стилей для применения при создании скриншота. Здесь вы можете скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы помочь в создании повторяемых скриншотов. Эта таблица стилей проникает через Shadow DOM и применяется к внутренним фреймам.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
type"png" | "jpeg" (необязательно)Укажите тип скриншота, по умолчанию
png.
-
Возвращаемое значение
setContent
Добавлен до версии 1.9Этот метод внутренне вызывает document.write(), наследуя все его особенности и поведение.
Использование
await page.setContent(html); await page.setContent(html, options);
Аргументы
-
htmlстрокаHTML-разметка для назначения странице.
-
optionsОбъект (необязательно)-
timeoutчисло (необязательно)Максимальное время выполнения операции в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)Когда считать операцию успешной, по умолчанию
load. События могут быть:-
'domcontentloaded'— считать операцию завершенной, когда будет вызвано событиеDOMContentLoaded. -
'load'— считать операцию завершенной, когда будет вызвано событиеload. -
'networkidle'— НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда в течение как минимум500мс не будет сетевых подключений. Не используйте этот метод для тестирования, вместо этого полагайтесь на веб-утверждения для оценки готовности. -
'commit'— считать операцию завершенной, когда получен сетевой ответ и началась загрузка документа.
-
-
Возвращаемое значение
setDefaultNavigationTimeout
Добавлен до версии 1.9Это значение изменит максимальное время навигации по умолчанию для следующих методов и связанных сокращений:
- page.goBack()
- page.goForward()
- page.goto()
- page.reload()
- page.setContent()
- page.waitForNavigation()
- page.waitForURL()
примечание
Использование
page.setDefaultNavigationTimeout(timeout);
Аргументы
-
timeoutчислоМаксимальное время навигации в миллисекундах
setDefaultTimeout
Добавлена до версии 1.9Это настройка изменит значение максимального времени по умолчанию для всех методов, принимающих параметр timeout.
примечаниеpage.setDefaultNavigationTimeout() имеет приоритет над page.setDefaultTimeout().
Использование
page.setDefaultTimeout(timeout);
Аргументы
-
timeoutчислоМаксимальное время в миллисекундах
setExtraHTTPHeaders
Добавлена до версии 1.9Дополнительные HTTP-заголовки будут отправляться с каждым запросом, инициированным страницей.
примечаниеpage.setExtraHTTPHeaders() не гарантирует порядок заголовков в исходящих запросах.
Использование
await page.setExtraHTTPHeaders(headers);
Аргументы
-
headersОбъект<строка, строка>Объект, содержащий дополнительные HTTP-заголовки, которые будут отправляться с каждым запросом. Все значения заголовков должны быть строками.
Возвращает
setViewportSize
Добавлена до версии 1.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'); Аргументы
-
viewportSizeОбъект
Возвращает
title
Добавлена до версии 1.9Возвращает заголовок страницы.
Использование
await page.title();
Возвращает
unroute
Добавлена до версии 1.9Удаляет маршрут, созданный с помощью page.route(). Если параметр handler не указан, удаляются все маршруты для url.
Использование
await page.unroute(url); await page.unroute(url, handler);
Аргументы
-
urlстрока | RegExp | функция(URL):логическоеШаблон glob, шаблон regex или предикат, принимающий URL для сопоставления при маршрутизации.
-
handlerфункция(Маршрут, Запрос):Promise<объект> | объект (необязательно)Необязательная функция-обработчик для маршрутизации запроса.
Возвращает
unrouteAll
Удаляет все маршруты, созданные с помощью page.route() и page.routeFromHAR().
Использование
await page.unrouteAll(); await page.unrouteAll(options);
Аргументы
-
optionsОбъект (необязательно)-
behavior"wait" | "ignoreErrors" | "default" (необязательно)Указывает, нужно ли ожидать уже запущенных обработчиков и что делать, если они выбросят ошибки:
-
'default'- не ждать завершения текущих вызовов обработчика (если таковые имеются), при ошибке от немаршрутизированного обработчика может возникнуть необработанная ошибка -
'wait'- ожидать завершения текущих вызовов обработчиков (если таковые имеются) -
'ignoreErrors'- не ждать завершения текущих вызовов обработчиков (если таковые имеются), все ошибки, выброшенные обработчиками после отмены маршрутизации, молча перехватываются
-
-
Возвращает
url
Добавлена до версии 1.9Использование
page.url();
Возвращает
video
Добавлена до версии 1.9Объект видео, связанный с этой страницей.
Использование
page.video();
Возвращает
viewportSize
Добавлена до версии 1.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; Аргументы
-
eventстрокаИмя события, то же, что обычно передается в
*.on(event). -
optionsOrPredicateфункция | Объект (необязательно)-
predicateфункцияПолучает данные события и возвращает истинное значение, когда ожидание должно завершиться.
-
timeoutчисло (необязательно)Максимальное время ожидания в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию может быть изменено с помощью опцииactionTimeoutв конфигурации, или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Либо предикат, принимающий данные события, либо объект опций. Необязательно.
-
-
optionsОбъект (необязательно)-
predicateфункция (необязательно)Получает данные события и возвращает истинное значение, когда ожидание должно завершиться.
-
Возвращает
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);
Аргументы
-
Функция, которая будет вычисляться в контексте страницы.
-
argEvaluationArgument (необязательно)Необязательный аргумент для передачи функции pageFunction.
-
optionsОбъект (необязательно)-
pollingчисло | "raf" (необязательно)Если polling —
'raf', то pageFunction постоянно выполняется вrequestAnimationFrameколлбэке. Если polling — число, то оно рассматривается как интервал в миллисекундах, с которым функция будет выполняться. По умолчаниюraf. -
timeoutчисло (необязательно)Максимальное время ожидания в миллисекундах. По умолчанию
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мс. Не используйте этот метод для тестирования, вместо этого полагайтесь на веб-утверждения для оценки готовности.
-
-
optionsОбъект (необязательно)-
timeoutчисло (необязательно)Максимальное время работы в миллисекундах. По умолчанию
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; Аргументы
-
urlOrPredicateстрока | выражение регулярного соответствия | функция(запрос):булево значение | обещание<булево значение>Строка URL запроса, регулярное выражение или предикат, принимающий объект запроса.
-
optionsобъект (необязательно)-
timeoutчисло (необязательно)Максимальное время ожидания в миллисекундах, по умолчанию 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; Аргументы
-
urlOrPredicateстрока | выражение регулярного соответствия | функция(ответ):булево значение | обещание<булево значение>Строка URL запроса, регулярное выражение или предикат, принимающий объект ответа. Если через опции контекста был указан базовый URL, и переданный URL является путём, он объединяется с помощью конструктора
new URL(). -
optionsобъект (необязательно)-
timeoutчисло (необязательно)Максимальное время ожидания в миллисекундах, по умолчанию 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'); Аргументы
-
urlстрока | выражение регулярного соответствия | функция(URL):булево значениеШаблон glob, шаблон регулярного выражения или предикат, принимающий URL для сопоставления во время ожидания навигации. Обратите внимание, что если параметр является строкой без символов подстановки, метод будет ожидать навигации к URL, точно равному строке.
-
optionsобъект (необязательно)-
timeoutчисло (необязательно)Максимальное время выполнения в миллисекундах. По умолчанию
0- нет таймаута. Значение по умолчанию можно изменить, используя опциюnavigationTimeoutв конфигурации или методы browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)Когда считать операцию успешной, по умолчанию
load. События могут быть следующими:-
'domcontentloaded'- считать операцию завершённой, когда сработает событиеDOMContentLoaded. -
'load'- считать операцию завершённой, когда сработает событиеload. -
'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершённой, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности вместо этого. -
'load'- считать операцию завершённой, когда сетевой ответ получен и документ начал загружаться.
-
-
Возвращает
workers
Добавлен до версии v1.9Этот метод возвращает все выделенные WebWorkers, связанные со страницей.
замечаниеЭто не включает ServiceWorkers
Использование
page.workers();
Возвращает
Свойства
clock
Playwright имеет возможность имитировать часы и течение времени.
Использование
page.clock
Тип
coverage
Добавлен до версии v1.9замечаниеДоступно только для Chromium на данный момент.
Реализация покрытия, специфичная для браузера. Подробнее см. покрытие.
Использование
page.coverage
Тип
keyboard
Добавлен до версии v1.9Использование
page.keyboard
Тип
mouse
Добавлен до версии v1.9Использование
page.mouse
Тип
request
Помощник по тестированию API, связанный с этой страницей. Этот метод возвращает тот же экземпляр, что и browserContext.request на контексте страницы. Подробнее см. browserContext.request.
Использование
page.request
Тип
сенсорный экран
Добавлен до 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('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') соответственно вместо аналогичных методов на Странице.
// 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Вызывается при получении статуса и заголовков ответа ответа для запроса. Для успешного ответа последовательность событий — request, response и requestfinished.
Использование
page.on('response', data => {}); Данные события
on('websocket')
Вызывается при отправке запроса WebSocket.
Использование
page.on('websocket', data => {}); Данные события
on('worker')
Добавлен до версии v1.9Вызывается при запуске отдельного WebWorker страницей.
Использование
page.on('worker', data => {}); Данные события
Устаревший
$
Не рекомендуетсяИспользуйте основанный на локаторе page.locator() вместо этого. Подробнее о локатоpax.
Метод находит элемент, соответствующий указанному селектору на странице. Если селектор не соответствует ни одному элементу, возвращаемое значение разрешается до null. Чтобы дождаться элемента на странице, используйте locator.waitFor().
Использование
await page.$(selector); await page.$(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска.
-
optionsОбъект (необязательно)-
strictлогический (необязательно)Если true, вызов требует, чтобы селектор разрешился в единственный элемент. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
Возвращает
$$
Не рекомендуетсяИспользуйте основанный на локаторе page.locator() вместо этого. Подробнее о локатоpax.
Метод находит все элементы, соответствующие указанному селектору на странице. Если селектор не соответствует ни одному элементу, возвращаемое значение разрешается до [].
Использование
await page.$$(selector);
Аргументы
-
selectorстрокаСелектор для поиска.
Возвращает
$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); Аргументы
-
selectorстрокаСелектор для поиска.
-
pageFunctionФункция(Элемент) | строкаФункция, которая должна быть выполнена в контексте страницы.
-
argEvaluationArgument (необязательно)Необязательный аргумент для передачи функции pageFunction.
-
optionsОбъект (необязательно)-
strictлогический (необязательно)Если true, вызов требует, чтобы селектор разрешился в единственный элемент. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
Возвращает
$$eval
Не рекомендуетсяВ большинстве случаев locator.evaluateAll(), другие вспомогательные методы Locator и веб-ориентированные утверждения работают лучше.
Метод находит все элементы, соответствующие указанному селектору на странице, и передает массив сопоставленных элементов в качестве первого аргумента функции pageFunction. Возвращает результат вызова pageFunction.
Если pageFunction возвращает Promise, тогда page.$$eval() ожидает разрешения обещания и возвращает его значение.
Использование
const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10); Аргументы
-
selectorстрокаСелектор для поиска.
-
pageFunctionФункция(Массив<Элемент>) | строкаФункция, которая должна быть выполнена в контексте страницы.
-
argEvaluationArgument (необязательно)Необязательный аргумент для передачи функции pageFunction.
Возвращает
accessibility
Добавлен до версии v1.9УстаревшийЭтот параметр не рекомендуется. Используйте другие библиотеки, такие как Axe, если вам необходимо проверить доступность страницы. См. наше руководство по Node.js пошаговую инструкцию по интеграции с Axe.
Использование
page.accessibility
Тип
check
Добавлен до v1.9Не рекомендуетсяВместо этого используйте основанный на локаторе locator.check(). Подробнее о локаторох.
Этот метод проверяет элемент, соответствующий селектору, выполняя следующие шаги:
- Найти элемент, соответствующий селектору. Если такого элемента нет, подождать, пока соответствующий элемент не будет добавлен в DOM.
- Убедиться, что найденный элемент — это флажок или переключатель. В противном случае метод генерирует исключение. Если элемент уже выбран, метод возвращается немедленно.
- Подождать проверки активируемости на найденном элементе, если параметр force не установлен. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутить элемент в видимую область, если необходимо.
- Использовать page.mouse для нажатия в центре элемента.
- Убедиться, что элемент теперь выбран. В противном случае метод генерирует исключение.
Если все шаги не завершаются в течение указанного времени ожидания, метод генерирует исключение TimeoutError. Передача нулевого значения времени ожидания отключает это.
Использование
await page.check(selector); await page.check(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если существует несколько элементов, удовлетворяющих селектору, будет использован первый.
-
optionsОбъект (необязательно)-
forceлогическое значение (необязательно)Не учитывать проверки активируемости. По умолчанию
false. -
noWaitAfterлогическое значение (необязательно)УстаревшийЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
positionОбъект (необязательно)Точка, используемая относительно верхнего левого угла области отступа элемента. Если не указано, используется видимая точка элемента.
-
strictлогическое значение (необязательно)Если значение true, селектор должен ссылаться на один элемент. Если селектор указывает на более одного элемента, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— нет времени ожидания. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialлогическое значение (необязательно)Если установлено, этот метод выполняет только проверки активируемости и пропускает действие. По умолчанию
false. Полезно для ожидания готовности элемента к действию без его выполнения.
-
Возвращает
click
Добавлен до v1.9Не рекомендуетсяВместо этого используйте основанный на локаторе locator.click(). Подробнее о локаторох.
Этот метод нажимает на элемент, соответствующий селектору, выполняя следующие шаги:
- Найти элемент, соответствующий селектору. Если такого элемента нет, подождать, пока соответствующий элемент не будет добавлен в DOM.
- Подождать проверки активируемости на найденном элементе, если параметр force не установлен. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутить элемент в видимую область, если необходимо.
- Использовать page.mouse для нажатия в центре элемента или в указанной позиции.
- Подождать завершения инициированных навигаций (успеха или неудачи), если параметр noWaitAfter не установлен.
Если все шаги не завершаются в течение указанного времени ожидания, метод генерирует исключение TimeoutError. Передача нулевого значения времени ожидания отключает это.
Использование
await page.click(selector); await page.click(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору соответствует несколько элементов, используется первый.
-
optionsОбъект (необязательно)-
button"слева" | "справа" | "посередине" (необязательно)По умолчанию
left. -
clickCountчисло (необязательно)по умолчанию 1. См. UIEvent.detail.
-
delayчисло (необязательно)Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию 0. -
forceлогическое значение (необязательно)Пропустить проверки действительности действия. По умолчанию
false. -
modifiersМассив<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Модификаторы клавиш для нажатия. Обеспечивает нажатие только этих модификаторов во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" преобразуется в "Control" в Windows и Linux и в "Meta" в macOS.
-
noWaitAfterлогическое значение (необязательно)УстарелоВ будущем этот параметр по умолчанию будет
true.Действия, инициирующие навигацию, ожидают, пока эти навигации произойдут, а страницы начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Этот параметр необходим только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false. -
positionОбъект (необязательно)Точка, используемая относительно верхнего левого угла поля отступа элемента. Если не указано, используется какая-либо видимая точка элемента.
-
strictлогическое значение (необязательно)Если значение true, селектор должен соответствовать одному элементу. Если селектору соответствует более одного элемента, вызываемый метод генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialлогическое значение (необязательно)Если установлено, этот метод выполняет только проверки действительности действия и пропускает само действие. По умолчанию
false. Полезно дождаться готовности элемента для действия, не выполняя его. Обратите внимание, что нажатие клавиатурныхmodifiersбудет выполняться независимо отtrial, чтобы можно было тестировать элементы, которые видны только при нажатии этих клавиш.
-
Возвращает
двойной щелчок
Добавлен до v1.9Не рекомендуетсяИспользуйте основанный на локаторе locator.dblclick() вместо этого. Подробнее о локаторах.
Этот метод выполняет двойной щелчок по элементу, соответствующему селектору selector, выполняя следующие шаги:
- Найти элемент, соответствующий селектору selector. Если его нет, подождать, пока соответствующий элемент не появится в DOM.
- Дождаться проверок действительности для соответствующего элемента, если параметр force не установлен. Если элемент откреплён во время проверок, вся операция повторяется.
- Прокрутить элемент в видимую область при необходимости.
- Использовать page.mouse, чтобы выполнить двойной щелчок в центре элемента или в указанной позиции position.
Если все шаги не завершаются в течение указанного timeout, этот метод генерирует ошибку TimeoutError. Передача нулевого таймаута отключает его.
Примечание
page.dblclick()отправляет дваclickсобытия и одноdblclickсобытие.
Использование
await page.dblclick(selector); await page.dblclick(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору удовлетворяют несколько элементов, используется первый.
-
optionsОбъект (необязательно)-
button"слева" | "справа" | "посередине" (необязательно)По умолчанию
left. -
delayчисло (необязательно)Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию 0. -
forceлогическое значение (необязательно)Пропускать ли проверки действительности. По умолчанию
false. -
modifiersМассив<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Модификаторы клавиш для нажатия. Гарантирует, что во время операции нажаты только эти модификаторы, а затем восстанавливаются текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" преобразуется в "Control" в Windows и Linux и в "Meta" в macOS.
-
noWaitAfterлогическое значение (необязательно)УстарелоЭтот параметр не оказывает никакого влияния.
Этот параметр не оказывает никакого влияния.
-
positionОбъект (необязательно)Точка, используемая относительно верхнего левого угла области отступа элемента. Если не указано, используется некоторая видимая точка элемента.
-
strictлогическое значение (необязательно)Если значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— нет таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialлогическое значение (необязательно)Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию
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 }); Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору удовлетворяют несколько элементов, используется первый.
-
typeстрокаТип события DOM:
"click","dragstart", и т.д. -
eventInitEvaluationArgument (необязательно)Необязательные специфичные для события свойства инициализации.
-
optionsОбъект (необязательно)-
strictлогическое значение (необязательно)Если значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— нет таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
fill
Добавлен до v1.9Не рекомендуетсяИспользуйте базовые locator.fill() вместо этого. Подробнее о локаторох.
Этот метод ожидает элемента, соответствующего селектору, ожидает проверки действительности, фокусирует элемент, заполняет его и вызывает событие input после заполнения. Обратите внимание, что вы можете передать пустую строку для очистки поля ввода.
Если целевой элемент не является элементом <input>, <textarea> или [contenteditable], этот метод генерирует ошибку. Однако, если элемент находится внутри элемента <label>, который имеет связанное control, вместо этого будет заполнен control.
Для отправки событий клавиатуры с высокой детализацией используйте locator.pressSequentially().
Использование
await page.fill(selector, value); await page.fill(selector, value, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору удовлетворяют несколько элементов, будет использован первый.
-
valueстрокаЗначение для заполнения элемента
<input>,<textarea>или[contenteditable]. -
optionsобъект (необязательно)-
forceбулево значение (необязательно)Необходимость пропуска проверок активности. По умолчанию
false. -
noWaitAfterбулево значение (необязательно)УстарелоЭтот параметр не оказывает влияния.
Этот параметр не оказывает влияния.
-
strictбулево значение (необязательно)При значении true, селектор должен указывать на единственный элемент. Если селектор указывает на более чем один элемент, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
focus
Добавлен до v1.9Не рекомендуетсяИспользуйте основанный на локаторах метод locator.focus() вместо этого. Подробнее о локаторах.
Этот метод получает элемент с селектором и фокусирует его. Если элемента, соответствующего селектору, нет, метод ожидает появления такого элемента в DOM.
Использование
await page.focus(selector); await page.focus(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору удовлетворяют несколько элементов, будет использован первый.
-
optionsобъект (необязательно)-
strictбулево значение (необязательно)При значении true, селектор должен указывать на единственный элемент. Если селектор указывает на более чем один элемент, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
getAttribute
Добавлен до v1.9Не рекомендуетсяИспользуйте основанный на локаторах метод locator.getAttribute() вместо этого. Подробнее о локаторах.
Возвращает значение атрибута элемента.
Использование
await page.getAttribute(selector, name); await page.getAttribute(selector, name, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору удовлетворяют несколько элементов, будет использован первый.
-
nameстрокаИмя атрибута, для которого нужно получить значение.
-
optionsобъект (необязательно)-
strictбулево значение (необязательно)При значении true, селектор должен указывать на единственный элемент. Если селектор указывает на более чем один элемент, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
hover
Добавлен до v1.9Не рекомендуетсяИспользуйте основанный на локаторах метод locator.hover() вместо этого. Подробнее о локаторах.
Этот метод наводит указатель мыши на элемент, соответствующий селектору, выполняя следующие шаги:
- Находит элемент, соответствующий селектору. Если такого элемента нет, ожидает его появления в DOM.
- Ожидает завершения проверок активности для выбранного элемента, если параметр force не установлен. Если элемент откреплен во время проверок, действие повторяется.
- Если нужно, прокручивает элемент в область видимости.
- Использует page.mouse для наведения указателя на центр элемента или указанную позицию.
Если все шаги не завершаются в течение заданного таймаута timeout, метод генерирует исключение TimeoutError. Передача нулевого таймаута отключает это ограничение.
Использование
await page.hover(selector); await page.hover(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsОбъект (необязательно)-
forceлогическое (необязательно)Обойти проверки действительности. По умолчанию
false. -
modifiersМассив<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Модификаторы клавиш для нажатия. Гарантирует, что при выполнении операции нажаты только эти модификаторы, а затем восстанавливаются текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" соответствует "Control" в Windows и Linux и "Meta" в macOS.
-
noWaitAfterлогическое (необязательно)УстарелоЭтот параметр не оказывает никакого влияния.
Этот параметр не оказывает никакого влияния.
-
positionОбъект (необязательно)Точка, используемая относительно верхнего левого угла области отступа элемента. Если не указано, используется какая-либо видимая точка элемента.
-
strictлогическое (необязательно)При значении true вызов требует, чтобы селектор разрешился в единственный элемент. Если селектор разрешается на большее количество элементов, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию может быть изменено через параметрactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialлогическое (необязательно)При установке этот метод выполняет только проверки действительности и пропускает действие. По умолчанию
false. Полезно для ожидания готовности элемента к действию без его выполнения. Обратите внимание, что нажатие клавиатурныхmodifiersбудет происходить независимо отtrial, чтобы позволить тестирование элементов, видимых только при нажатии этих клавиш.
-
Возвращает
innerHTML
Добавлен до версии 1.9Не рекомендуетсяИспользуйте основанный на локаторах метод locator.innerHTML() вместо этого. Узнайте больше о локаторах.
Возвращает element.innerHTML.
Использование
await page.innerHTML(selector); await page.innerHTML(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsОбъект (необязательно)-
strictлогическое (необязательно)При значении true вызов требует, чтобы селектор разрешился в единственный элемент. Если селектор разрешается на большее количество элементов, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию может быть изменено через параметрactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
innerText
Добавлен до версии 1.9Не рекомендуетсяИспользуйте основанный на локаторах метод locator.innerText() вместо этого. Узнайте больше о локаторах.
Возвращает element.innerText.
Использование
await page.innerText(selector); await page.innerText(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsОбъект (необязательно)-
strictлогическое (необязательно)При значении true вызов требует, чтобы селектор разрешился в единственный элемент. Если селектор разрешается на большее количество элементов, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию может быть изменено через параметрactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
inputValue
Не рекомендуетсяИспользуйте основанный на локаторах метод locator.inputValue() вместо этого. Узнайте больше о локаторах.
Возвращает значение input.value для выбранного элемента <input> или <textarea> или <select>.
Возвращает ошибку для элементов, не являющихся полями ввода. Однако, если элемент находится внутри элемента <label>, у которого есть связанная метка control, возвращает значение control.
Использование
await page.inputValue(selector); await page.inputValue(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектор соответствует нескольким элементам, будет использован первый.
-
optionsОбъект (необязательно)-
strictбулево (необязательно)Если true, вызов требует, чтобы селектор соответствовал только одному элементу. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— таймаут отсутствует. Значение по умолчанию можно изменить через параметрactionTimeoutв конфигурации или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isChecked
Добавлена до версии v1.9Не рекомендуетсяИспользуйте основанный на локаторе locator.isChecked() вместо этого. Подробнее о локаторах.
Возвращает, отмечен ли элемент. Генерирует исключение, если элемент не является чекбоксом или радиокнопкой.
Использование
await page.isChecked(selector); await page.isChecked(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектор соответствует нескольким элементам, будет использован первый.
-
optionsОбъект (необязательно)-
strictбулево (необязательно)Если true, вызов требует, чтобы селектор соответствовал только одному элементу. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— таймаут отсутствует. Значение по умолчанию можно изменить через параметрactionTimeoutв конфигурации или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isDisabled
Добавлена до версии v1.9Не рекомендуетсяИспользуйте основанный на локаторе locator.isDisabled() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент отключенным, что противоположно enabled.
Использование
await page.isDisabled(selector); await page.isDisabled(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектор соответствует нескольким элементам, будет использован первый.
-
optionsОбъект (необязательно)-
strictбулево (необязательно)Если true, вызов требует, чтобы селектор соответствовал только одному элементу. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— таймаут отсутствует. Значение по умолчанию можно изменить через параметрactionTimeoutв конфигурации или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isEditable
Добавлена до версии v1.9Не рекомендуетсяИспользуйте основанный на локаторе locator.isEditable() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент редактируемым.
Использование
await page.isEditable(selector); await page.isEditable(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектор соответствует нескольким элементам, будет использован первый.
-
optionsОбъект (необязательно)-
strictбулево (необязательно)Если true, вызов требует, чтобы селектор соответствовал только одному элементу. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— таймаут отсутствует. Значение по умолчанию можно изменить через параметрactionTimeoutв конфигурации или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isEnabled
Добавлена до версии v1.9Не рекомендуетсяИспользуйте основанный на локаторе locator.isEnabled() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент активным.
Использование
await page.isEnabled(selector); await page.isEnabled(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектор соответствует нескольким элементам, будет использован первый.
-
optionsОбъект (необязательно)-
strictбулево (необязательно)Если true, вызов требует, чтобы селектор соответствовал только одному элементу. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— таймаут отсутствует. Значение по умолчанию можно изменить через параметрactionTimeoutв конфигурации или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isHidden
Добавлено до версии v1.9Не рекомендуетсяИспользуйте основанный на локаторах locator.isHidden() вместо этого. Подробнее о локаторох.
Возвращает, скрыт ли элемент, противоположно видимости. Селектор, который не соответствует ни одному элементу, считается скрытым.
Использование
await page.isHidden(selector); await page.isHidden(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если существует несколько элементов, удовлетворяющих селектору, будет использован первый.
-
optionsОбъект (необязательно)-
strictboolean (необязательно)Если true, вызов требует, чтобы селектор разрешился в один элемент. Если селектор разрешается более чем в один элемент, вызов генерирует исключение.
-
timeoutчисло (необязательно)УстарелоЭтот параметр игнорируется. page.isHidden() не ожидает, пока элемент станет скрытым, и возвращает результат немедленно.
-
Возвращает
isVisible
Добавлено до версии v1.9Не рекомендуетсяИспользуйте основанный на локаторах locator.isVisible() вместо этого. Подробнее о локаторох.
Возвращает, является ли элемент видимым. Селектор, который не соответствует ни одному элементу, считается невидимым.
Использование
await page.isVisible(selector); await page.isVisible(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если существует несколько элементов, удовлетворяющих селектору, будет использован первый.
-
optionsОбъект (необязательно)-
strictboolean (необязательно)Если true, вызов требует, чтобы селектор разрешился в один элемент. Если селектор разрешается более чем в один элемент, вызов генерирует исключение.
-
timeoutчисло (необязательно)УстарелоЭтот параметр игнорируется. page.isVisible() не ожидает, пока элемент станет видимым, и возвращает результат немедленно.
-
Возвращает
press
Добавлено до версии v1.9Не рекомендуетсяИспользуйте основанный на локаторах locator.press() вместо этого. Подробнее о локаторох.
Фокусирует элемент, а затем использует keyboard.down() и keyboard.up().
Ключ может указать предполагаемое значение keyboardEvent.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 приведет к вводу текста, соответствующего ключа, в верхнем регистре.
Если ключ представляет собой одиночный символ, он регистрозависим, поэтому значения 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(); Аргументы
-
selectorстрокаСелектор для поиска элемента. Если существует несколько элементов, удовлетворяющих селектору, будет использован первый.
-
keyстрокаИмя нажимаемого ключа или символа для генерации, например
ArrowLeftилиa. -
optionsОбъект (необязательно)-
delayчисло (необязательно)Время ожидания между
keydownиkeyupв миллисекундах. По умолчанию 0. -
noWaitAfterboolean (необязательно)УстарелоВ будущем этот параметр будет иметь значение
trueпо умолчанию.Действия, которые вызывают навигации, ожидают завершения этих навигаций и начала загрузки страниц. Вы можете отказаться от ожидания, установив этот флаг. Вам потребуется только этот параметр в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false. -
strictboolean (необязательно)Если true, вызов требует, чтобы селектор разрешился в один элемент. Если селектор разрешается более чем в один элемент, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию можно изменить параметромactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
selectOption
Добавлено до версии v1.9Не рекомендуетсяИспользуйте основанный на локаторе locator.selectOption() вместо этого. Подробнее о локаторе.
Этот метод ожидает элемента, соответствующего селектору, ожидает проверок действительности, ожидает, пока все указанные параметры будут присутствовать в элементе <select> и выбирает эти параметры.
Если целевой элемент не является элементом <select>, этот метод генерирует ошибку. Однако, если элемент находится внутри элемента <label>, у которого есть связанный control, вместо него будет использован control.
Возвращает массив значений параметров, которые были успешно выбраны.
Срабатывает событие 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']);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если существует несколько элементов, удовлетворяющих селектору, будет использован первый.
-
valuesnull | строка | ElementHandle | Массив<строка> | Объект | Массив<ElementHandle> | Массив<Объект>-
valueстрока (необязательно)Соответствие по
option.value. Необязательно. -
labelстрока (необязательно)Соответствие по
option.label. Необязательно. -
indexчисло (необязательно)Соответствие по индексу. Необязательно.
Параметры для выбора. Если у
<select>есть атрибутmultiple, выбираются все соответствующие параметры, в противном случае выбирается только первый параметр, соответствующий одному из переданных параметров. Строковые значения соответствуют как значениям, так и меткам. Параметр считается соответствующим, если все указанные свойства совпадают. -
-
optionsОбъект (необязательно)-
forceбулево (необязательно)Определяет, следует ли пропускать проверки действительности. По умолчанию
false. -
noWaitAfterбулево (необязательно)УстарелоЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
strictбулево (необязательно)Если значение true, вызов требует, чтобы селектор разрешился в один элемент. Если селектор разрешается на более чем один элемент, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
setChecked
Не рекомендуетсяИспользуйте основанный на локаторе locator.setChecked() вместо этого. Подробнее о локаторе.
Этот метод устанавливает или сбрасывает флажок элемента, соответствующего селектору, выполняя следующие шаги:
- Найти элемент, соответствующий селектору. Если его нет, подождать, пока соответствующий элемент не будет добавлен в DOM.
- Убедиться, что сопоставленный элемент является элементом типа checkbox или radio input. В противном случае метод генерирует ошибку.
- Если элемент уже имеет правильное состояние checked, метод возвращается немедленно.
- Подождать проверок действительности на сопоставленном элементе, если параметр force не задан. Если элемент откреплен во время проверок, все действие повторяется.
- Прокрутить элемент в видимую область, если это необходимо.
- Использовать page.mouse для клика в центре элемента.
- Убедиться, что элемент теперь установлен или сброшен. В противном случае метод генерирует ошибку.
Если все шаги вместе не завершаются в течение указанного таймаута, этот метод генерирует исключение TimeoutError. Передача нулевого таймаута отключает его.
Использование
await page.setChecked(selector, checked); await page.setChecked(selector, checked, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору удовлетворяют несколько элементов, используется первый.
-
checkedлогическоеВыбрать или сбросить флажок.
-
optionsобъект (необязательно)-
forceлогическое (необязательно)Пропустить проверки действительности. По умолчанию
false. -
noWaitAfterлогическое (необязательно)УстарелоЭтот параметр не оказывает влияния.
Этот параметр не оказывает влияния.
-
positionобъект (необязательно)Точка, используемая относительно верхнего левого угла области отступа элемента. Если не указано, используется какая-либо видимая точка элемента.
-
strictлогическое (необязательно)Если истинно, вызов требует, чтобы селектор разрешался в один элемент. Если селектор разрешается более чем в один элемент, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию может быть изменено с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialлогическое (необязательно)При установке этот метод выполняет только проверки действительности и пропускает действие. По умолчанию
false. Полезно для ожидания готовности элемента к действию без его выполнения.
-
Возвращает
setInputFiles
Добавлен до v1.9Не рекомендуетсяИспользуйте основанный на локаторах locator.setInputFiles() вместо этого. Узнайте больше о локаторах.
Устанавливает значение поля ввода файла в эти пути к файлам или файлы. Если некоторые из filePaths являются относительными путями, они разрешаются относительно текущей рабочей директории. Для пустого массива очищаются выбранные файлы. Для полей ввода с атрибутом [webkitdirectory] поддерживается только один путь к директории.
Этот метод ожидает, что селектор указывает на элемент ввода. Однако, если элемент находится внутри элемента <label>, у которого есть связанный control, то целевым элементом является control.
Использование
await page.setInputFiles(selector, files); await page.setInputFiles(selector, files, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору удовлетворяют несколько элементов, используется первый.
-
optionsобъект (необязательно)-
noWaitAfterлогическое (необязательно)УстарелоЭтот параметр не оказывает влияния.
Этот параметр не оказывает влияния.
-
strictлогическое (необязательно)Если истинно, вызов требует, чтобы селектор разрешался в один элемент. Если селектор разрешается более чем в один элемент, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию может быть изменено с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
tap
Добавлен до v1.9Не рекомендуетсяИспользуйте основанный на локаторах locator.tap() вместо этого. Узнайте больше о локаторах.
Этот метод нажимает элемент, соответствующий селектору, выполняя следующие шаги:
- Находит элемент, соответствующий селектору. Если его нет, ждёт, пока соответствующий элемент будет добавлен в DOM.
- Ждёт проверки действительности на сопоставленном элементе, если параметр force не установлен. Если элемент откреплён во время проверок, всё действие повторяется.
- Прокручивает элемент в область видимости при необходимости.
- Использует page.touchscreen, чтобы нажать центр элемента или указанную позицию.
Если все шаги не завершаются в течение заданного таймаута, этот метод генерирует исключение TimeoutError. Передача нулевого таймаута отключает его.
примечаниеМетод page.tap() сгенерирует исключение, если параметр hasTouch контекста браузера имеет значение false.
Использование
await page.tap(selector); await page.tap(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.
-
optionsОбъект (необязательно)-
forceбулево значение (необязательно)Пропустить проверки действительности. По умолчанию
false. -
modifiersМассив<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Модификаторы клавиш для нажатия. Гарантирует, что во время операции будут нажаты только эти модификаторы, а затем восстанавливаются текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" преобразуется в "Control" в Windows и Linux и в "Meta" в macOS.
-
noWaitAfterбулево значение (необязательно)УстаревшийЭтот параметр не оказывает никакого эффекта.
Этот параметр не оказывает никакого эффекта.
-
positionОбъект (необязательно)Точка, используемая относительно левого верхнего угла области отступа элемента. Если не указано, используется какая-либо видимая точка элемента.
-
strictбулево значение (необязательно)При значении true вызов требует, чтобы селектор соответствовал одному элементу. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию может быть изменено с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialбулево значение (необязательно)При установке этот метод выполняет только проверки действительности и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию, не выполняя его. Обратите внимание, что клавишиmodifiersбудут нажаты независимо отtrial, чтобы разрешить тестирование элементов, которые отображаются только при нажатии этих клавиш.
-
Возвращаемое значение
textContent
Добавлено до версии 1.9Не рекомендуетсяИспользуйте селектор-базированный locator.textContent() вместо этого. Подробнее о локаторах.
Возвращает element.textContent.
Использование
await page.textContent(selector); await page.textContent(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.
-
optionsОбъект (необязательно)-
strictбулево значение (необязательно)При значении true вызов требует, чтобы селектор соответствовал одному элементу. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию может быть изменено с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращаемое значение
type
Добавлено до версии 1.9УстаревшийВ большинстве случаев следует использовать locator.fill() вместо этого. Вам нужно нажимать клавиши по одной только если на странице есть специальная обработка клавиатуры — в этом случае используйте locator.pressSequentially().
Отправляет keydown, keypress/input, и keyup событие для каждого символа в тексте. page.type можно использовать для отправки событий клавиатуры с высокой точностью. Для заполнения значений в полях формы используйте page.fill().
Для нажатия специальной клавиши, такой как Control или ArrowDown, используйте keyboard.press().
Использование
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.
-
textстрокаТекст для ввода в фокусированный элемент.
-
optionsОбъект (необязательно)-
delayчисло (необязательно)Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию 0.
-
noWaitAfterбулево значение (необязательно)УстаревшийЭтот параметр не оказывает никакого эффекта.
Этот параметр не оказывает никакого эффекта.
-
strictбулево значение (необязательно)При значении true вызов требует, чтобы селектор соответствовал одному элементу. Если селектор соответствует более чем одному элементу, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию может быть изменено с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращаемое значение
uncheck
Добавлено до версии 1.9Не рекомендуетсяИспользуйте селектор-базированный locator.uncheck() вместо этого. Подробнее о локаторах.
Этот метод снимает отметку с элемента, соответствующего селектору, выполняя следующие действия:
- Найдите элемент, соответствующий селектору. Если такого нет, подождите, пока соответствующий элемент будет добавлен в DOM.
- Убедитесь, что совпавший элемент — это флажок или радиокнопка. Если нет, метод выбросит исключение. Если элемент уже снят с отметки, метод вернётся сразу.
- Подождите проверки активности на совпавшем элементе, если опция force не установлена. Если элемент откреплён во время проверок, всё действие повторяется.
- Прокрутите элемент в область видимости, если нужно.
- Используйте page.mouse, чтобы щелкнуть в центре элемента.
- Убедитесь, что элемент теперь снят с отметки. Если нет, метод выбросит исключение.
Если все шаги вместе не завершены в течение указанного времени ожидания, метод выбросит исключение TimeoutError. Передача нулевого времени ожидания отключает это.
Использование
await page.uncheck(selector); await page.uncheck(selector, options);
Аргументы
-
selectorстрокаСелектор для поиска элемента. Если существует несколько элементов, удовлетворяющих селектору, будет использован первый.
-
optionsОбъект (необязательно)-
forceлогическое значение (необязательно)Необходимость пропустить проверки активности. По умолчанию
false. -
noWaitAfterлогическое значение (необязательно)УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
positionОбъект (необязательно)Точка, используемая относительно верхнего левого угла области заполнения элемента. Если не указана, используется какая-либо видимая точка элемента.
-
strictлогическое значение (необязательно)При значении true вызов требует, чтобы селектор разрешался в один элемент. Если селектор разрешается в более чем один элемент, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию может быть изменено через опциюactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialлогическое значение (необязательно)При установке этот метод выполняет только проверки активности и пропускает действие. По умолчанию
false. Полезно дождаться, пока элемент готов к действию, не выполняя его.
-
Возвращает
waitForNavigation
Добавлена до версии 1.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; примечаниеИспользование History API для изменения URL считается навигацией.
Аргументы
-
optionsОбъект (необязательно)-
timeoutчисло (необязательно)Максимальное время выполнения в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию может быть изменено через опциюnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
urlстрока | RegExp | функция(URL):логическое значение (необязательно)Шаблон glob, шаблон regex или предикат, принимающий URL для сопоставления во время ожидания навигации. Обратите внимание, что если параметр — строка без символов подстановок, метод будет ждать навигации к URL, который точно равен строке.
-
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)Когда считать операцию успешной, по умолчанию
load. События могут быть:-
'domcontentloaded'— считать операцию завершенной, когда срабатывает событиеDOMContentLoaded. -
'load'— считать операцию завершенной, когда срабатывает событиеload. -
'networkidle'— НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых подключений в течение как минимум500мс. Не используйте этот метод для тестирования, вместо этого полагайтесь на веб-утверждения для оценки готовности. -
'commit'— считать операцию завершенной, когда получен сетевой ответ и началась загрузка документа.
-
-
Возвращает
waitForSelector
Добавлена до версии 1.9Не рекомендуетсяИспользуйте веб-утверждения, которые проверяют видимость, или locator.waitFor() на основе локеров. Подробнее о локерах.
Возвращает, когда элемент, указанный селектором, удовлетворяет опции состояния. Возвращает null при ожидании hidden или detached.
примечаниеPlaywright автоматически ожидает, пока элемент будет готов перед выполнением действия. Использование объектов Locator и веб-первичных утверждений делает код свободным от waitForSelector.
Ожидает, пока селектор будет удовлетворять опции состояния (либо появится/исчезнет из 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();
})(); Аргументы
-
selectorстрокаСелектор для поиска.
-
optionsОбъект (необязательно)-
state"прикреплённый" | "откреплённый" | "видимый" | "скрытый" (необязательно)По умолчанию
'visible'. Может принимать следующие значения:-
'attached'- ожидать, пока элемент будет присутствовать в DOM. -
'detached'- ожидать, пока элемент не будет присутствовать в DOM. -
'visible'- ожидать, пока элемент будет иметь ненулевую область видимости и не будет иметьvisibility:hidden. Обратите внимание, что элемент без содержимого или сdisplay:noneимеет пустую область видимости и не считается видимым. -
'hidden'- ожидать, пока элемент будет либо откреплен от DOM, либо иметь пустую область видимости илиvisibility:hidden. Это противоположно варианту'visible'.
-
-
strictлогическое значение (необязательно)Если true, вызов требует, чтобы селектор возвращал один элемент. Если селектор возвращает более одного элемента, вызов генерирует исключение.
-
timeoutчисло (необязательно)Максимальное время ожидания в миллисекундах. По умолчанию
0— без таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв настройках или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForTimeout
Добавлен до версии 1.9Не рекомендуетсяНикогда не используйте ожидание по таймауту в продакшене. Тесты, которые ожидают по таймауту, ненадёжны. Используйте действия Locator и веб-утверждения, которые автоматически ожидают.
Ожидает заданный таймаут в миллисекундах.
Обратите внимание, что page.waitForTimeout() следует использовать только для отладки. Тесты, использующие таймер в продакшене, будут ненадёжными. Вместо этого используйте сигналы, такие как события сети, селекторы, которые становятся видимыми, и другие.
Применение
// wait for 1 second await page.waitForTimeout(1000);
Аргументы
-
timeoutчислоТаймаут ожидания
Возвращает
© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-page