Spec-Zone.ru › Playwright

Страница

Страница предоставляет методы для взаимодействия с одной вкладкой в браузере или с фоновой страницей расширения в 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 (поддерживается только при передаче функции).

Возвращает

  • Promise<void>

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 объект (необязательно)

    • noWaitAfter boolean (необязательно)

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

    • times число (необязательно)

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

Возвращает

  • Promise<void>

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

Возвращает

  • Promise<ElementHandle>

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

Возвращает

  • Promise<ElementHandle>

bringToFront​

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

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

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

await page.bringToFront();

Возвращает

  • Promise<пустое значение>

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. Выполнять ли обработчики загрузки страницы перед закрытием.

Возвращает

  • Promise<пустое значение>

content​

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

Получает полное HTML-содержимое страницы, включая doctype.

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

await page.content();

Возвращает

  • Promise<строка>

context​

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

Получить контекст браузера, к которому принадлежит страница.

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

page.context();

Возвращает

  • BrowserContext

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 },
});

Аргументы

  • source string

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

  • target string

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

  • options Объект (необязательно)

    • force boolean (необязательно)

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

    • noWaitAfter boolean (необязательно)

      Устаревшее

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

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

    • sourcePosition Объект (необязательно)

      • x число

      • y число

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

    • strict boolean (необязательно)

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

    • targetPosition Объект (необязательно)

      • x число

      • y число

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

    • timeout число (необязательно)

      Максимальное время в миллисекундах. По умолчанию 0 — без таймаута. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

    • trial boolean (необязательно)

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

Возвращает

  • Promise<пустое значение>

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 Объект (необязательно)
    • colorScheme null | "светлый" | "тёмный" | "без предпочтений" (необязательно)

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

    • forcedColors null | "активный" | "нет" (необязательно)

      Эмулирует среду 'forced-colors', поддерживаемые значения — 'active' и 'none'. Передача null отключает эмуляцию принудительных цветов.

    • media null | "экран" | "печать" (необязательно)

      Изменяет тип CSS среды страницы. Разрешены только значения 'screen', 'print' и null. Передача null отключает эмуляцию CSS среды.

    • reducedMotion null | "снизить" | "без предпочтений" (необязательно)

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

Возвращает

  • Promise<пустое значение>

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();

Аргументы

  • pageFunction функция | строка

    Функция, которая будет выполняться в контексте страницы.

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

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

Возвращает

  • Promise<сериализуемое значение>

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();

Аргументы

  • pageFunction функция | строка

    Функция, которая должна быть выполнена в контексте страницы.

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

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

Возвращаемое значение

  • Promise<JSHandle>

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 поддерживается только один аргумент. При передаче по значению поддерживается несколько аргументов.

Возвращаемое значение

  • Promise<void>

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.

Возвращаемое значение

  • Promise<void>

frame​

Добавлен до версии 1.9

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

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

const frame = page.frame('frame-name');
const frame = page.frame({ url: /.*domain.*/ });

Аргументы

  • frameSelector строка | объект
    • name строка (необязательно)

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

    • url строка | RegExp | функция(URL):логическое значение (необязательно)

      Шаблон glob, шаблон regex или предикат, принимающий URL-адрес фрейма в качестве объекта URL. Необязательно.

    Опции поиска фрейма.

Возвращаемое значение

  • null | Frame

frameLocator​

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

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

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

const locator = page.frameLocator('#my-iframe').getByText('Submit');
await locator.click();

Аргументы

  • selector строка

    Селектор для разрешения DOM-элемента.

Возвращаемое значение

  • FrameLocator

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 Объект (необязательно)

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

      Атрибут, обычно устанавливаемый aria-checked или нативными <input type=checkbox> элементами управления.

      Узнайте больше о aria-checked.

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

      Атрибут, обычно устанавливаемый aria-disabled или disabled.

      примечание

      В отличие от большинства других атрибутов, disabled наследуется через иерархию DOM. Узнайте больше о aria-disabled.

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

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

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

      Атрибут, обычно устанавливаемый aria-expanded.

      Узнайте больше о aria-expanded.

    • includeHidden boolean (необязательно)

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

      Узнайте больше о aria-hidden.

    • level число (необязательно)

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

      Узнайте больше о aria-level.

    • name строка | RegExp (необязательно)

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

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

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

      Атрибут, обычно устанавливаемый aria-pressed.

      Узнайте больше о aria-pressed.

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

      Атрибут, обычно устанавливаемый aria-selected.

      Узнайте больше о aria-selected.

Возвращает

  • Локатор

Подробности

Выбор по роли не заменяет проверки на доступность и тесты на соответствие, а скорее даёт предварительные сведения о руководящих принципах ARIA.

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

getByTestId​

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

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

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

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

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

await page.getByTestId('directions').click();

Аргументы

  • testId строка | RegExp

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

Возвращает

  • Локатор

Подробности

По умолчанию атрибут 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);

Аргументы

  • text строка | RegExp

    Текст для поиска элемента.

  • options Объект (необязательно)

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

      Находить точное совпадение: регистрозависимое и по всему строковому значению. По умолчанию 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');

Аргументы

  • text строка | RegExp

    Текст для поиска элемента.

  • 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' — считать операцию завершённой, когда получен сетевой ответ и документ начал загружаться.

Возвращает

  • Обещание<null | Ответ>

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' — считать операцию завершённой, когда получен сетевой ответ и документ начал загружаться.

Возвращает

  • Обещание<null | Ответ>

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' — считать операцию завершённой, когда получен сетевой ответ и документ начал загружаться.

Возвращает

  • Promise<null | Response>

isClosed​

Добавлен до версии 1.9

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

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

page.isClosed();

Возвращает

  • булево значение

locator​

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

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

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

page.locator(selector);
page.locator(selector, options);

Аргументы

  • selector строка

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

  • options объект (необязательно)

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

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

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

    • hasNotText строка | RegExp (необязательно)

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

    • hasText строка | RegExp (необязательно)

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

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

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

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

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

Возвращает

  • Locator

mainFrame​

Добавлен до версии 1.9

Основная рамка страницы. Страница гарантированно имеет основную рамку, которая сохраняется во время навигации.

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

page.mainFrame();

Возвращает

  • Рамка

opener​

Добавлен до версии 1.9

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

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

await page.opener();

Возвращает

  • Promise<null | Страница>

pause​

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

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

примечание

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

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

await page.pause();

Возвращает

  • Promise<void>

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 Объект (необязательно)
    • displayHeaderFooter boolean (необязательно)

      Отобразить заголовок и подвал. По умолчанию false.

    • footerTemplate строка (необязательно)

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

    • format строка (необязательно)

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

    • headerTemplate строка (необязательно)

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

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

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

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

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

    • margin Объект (необязательно)

      • top строка | число (необязательно)

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

      • right строка | число (необязательно)

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

      • bottom строка | число (необязательно)

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

      • left строка | число (необязательно)

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

      Поля бумаги, по умолчанию отсутствуют.

    • outline boolean (необязательно)

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

    • pageRanges строка (необязательно)

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

    • path строка (необязательно)

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

    • preferCSSPageSize boolean (необязательно)

      Приоритетизировать любые объявленные в CSS размеры страницы над значениями, указанными в width, height или format. По умолчанию false, что приведет к масштабированию содержимого для соответствия размеру бумаги.

    • printBackground boolean (необязательно)

      Печать графики фона. По умолчанию false.

    • scale число (необязательно)

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

    • tagged boolean (необязательно)

      Генерировать ли 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' - считать операцию завершённой при получении сетевого ответа и запуске загрузки документа.

Возвращает

  • Обещание<null | Ответ>

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' - не ждать завершения текущих вызовов обработчика (если есть), все ошибки, выброшенные обработчиками после удаления, будут молча перехвачены

Возвращает

  • Promise<void>

removeLocatorHandler​

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

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

await page.removeLocatorHandler(locator);

Аргументы

  • locator Локатор

    Локатор, переданный в page.addLocatorHandler().

Возвращает

  • Promise<void>

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();

Возвращает

  • Promise<void>

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 число (необязательно)

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

Возвращает

  • Promise<void>

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.

Возвращает

  • Promise<void>

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.

Возвращает

  • Promise<void>

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.

Возвращаемое значение

  • Promise<Буфер>

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' — считать операцию завершенной, когда получен сетевой ответ и началась загрузка документа.

Возвращаемое значение

  • Promise<void>

setDefaultNavigationTimeout​

Добавлен до версии 1.9

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

  • page.goBack()
  • page.goForward()
  • page.goto()
  • page.reload()
  • page.setContent()
  • page.waitForNavigation()
  • page.waitForURL()
примечание

page.setDefaultNavigationTimeout() имеет приоритет над page.setDefaultTimeout(), browserContext.setDefaultTimeout() и browserContext.setDefaultNavigationTimeout().

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

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

Возвращает

  • Promise<ничего>

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 Объект
    • width число

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

    • height число

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

Возвращает

  • Promise<ничего>

title​

Добавлена до версии 1.9

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

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

await page.title();

Возвращает

  • Promise<строка>

unroute​

Добавлена до версии 1.9

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

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

await page.unroute(url);
await page.unroute(url, handler);

Аргументы

  • url строка | RegExp | функция(URL):логическое

    Шаблон glob, шаблон regex или предикат, принимающий URL для сопоставления при маршрутизации.

  • handler функция(Маршрут, Запрос):Promise<объект> | объект (необязательно)

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

Возвращает

  • Promise<ничего>

unrouteAll​

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

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

await page.unrouteAll();
await page.unrouteAll(options);

Аргументы

  • options Объект (необязательно)
    • behavior "wait" | "ignoreErrors" | "default" (необязательно)

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

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

Возвращает

  • Promise<ничего>

url​

Добавлена до версии 1.9

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

page.url();

Возвращает

  • строка

video​

Добавлена до версии 1.9

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

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

page.video();

Возвращает

  • null | Видео

viewportSize​

Добавлена до версии 1.9

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

page.viewportSize();

Возвращает

  • null | Object
    • width number

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

    • height number

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

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 функция (необязательно)

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

Возвращает

  • Promise<Объект>

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);

Аргументы

  • pageFunction функция | строка

    Функция, которая будет вычисляться в контексте страницы.

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

    Необязательный аргумент для передачи функции pageFunction.

  • options Объект (необязательно)

    • polling число | "raf" (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<JSHandle>

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().

Возвращает

  • Promise<void>

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

Тип

  • APIRequestContext

сенсорный экран​

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

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

page.touchscreen

Тип

  • 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 => {});

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

  • WebSocket

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

Возвращает

  • Promise<null | ElementHandle>

$$​

Не рекомендуется

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

Метод находит все элементы, соответствующие указанному селектору на странице. Если селектор не соответствует ни одному элементу, возвращаемое значение разрешается до [].

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

await page.$$(selector);

Аргументы

  • selector строка

    Селектор для поиска.

Возвращает

  • Promise<Массив<ElementHandle>>

$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 Функция(Элемент) | строка

    Функция, которая должна быть выполнена в контексте страницы.

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

    Необязательный аргумент для передачи функции pageFunction.

  • options Объект (необязательно)

    • strict логический (необязательно)

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

Возвращает

  • Promise<Сериализуемый>

$$eval​

Не рекомендуется

В большинстве случаев locator.evaluateAll(), другие вспомогательные методы Locator и веб-ориентированные утверждения работают лучше.

Метод находит все элементы, соответствующие указанному селектору на странице, и передает массив сопоставленных элементов в качестве первого аргумента функции pageFunction. Возвращает результат вызова pageFunction.

Если pageFunction возвращает Promise, тогда page.$$eval() ожидает разрешения обещания и возвращает его значение.

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

const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10);

Аргументы

  • selector строка

    Селектор для поиска.

  • pageFunction Функция(Массив<Элемент>) | строка

    Функция, которая должна быть выполнена в контексте страницы.

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

    Необязательный аргумент для передачи функции pageFunction.

Возвращает

  • Promise<Сериализуемый>

accessibility​

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

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

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

page.accessibility

Тип

  • Доступность

check​

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

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

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

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

Если все шаги не завершаются в течение указанного времени ожидания, метод генерирует исключение TimeoutError. Передача нулевого значения времени ожидания отключает это.

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

await page.check(selector);
await page.check(selector, options);

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • force логическое значение (необязательно)

      Не учитывать проверки активируемости. По умолчанию false.

    • noWaitAfter логическое значение (необязательно)

      Устаревший

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

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

    • position Объект (необязательно)

      • x число

      • y число

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

      Максимальное время в миллисекундах. По умолчанию 0 — нет времени ожидания. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

    • trial логическое значение (необязательно)

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

Возвращает

  • Promise<void>

click​

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

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

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

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

      • x число

      • y число

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

      Максимальное время в миллисекундах. По умолчанию 0 — без таймаута. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

    • trial логическое значение (необязательно)

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

Возвращает

  • Обещание<пустое значение>

двойной щелчок​

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

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

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

  1. Найти элемент, соответствующий селектору selector. Если его нет, подождать, пока соответствующий элемент не появится в DOM.
  2. Дождаться проверок действительности для соответствующего элемента, если параметр force не установлен. Если элемент откреплён во время проверок, вся операция повторяется.
  3. Прокрутить элемент в видимую область при необходимости.
  4. Использовать 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 Объект (необязательно)

      • x число

      • y число

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

      Максимальное время в миллисекундах. По умолчанию 0 — нет таймаута. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

    • trial логическое значение (необязательно)

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

Возвращает

  • Promise<ничего>

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", и т.д.

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

    Необязательные специфичные для события свойства инициализации.

  • options Объект (необязательно)

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

      Максимальное время в миллисекундах. По умолчанию 0 — нет таймаута. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает

  • Promise<ничего>

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().

Возвращает

  • Promise<пустое значение>

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().

Возвращает

  • Promise<пустое значение>

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().

Возвращает

  • Promise<null | строка>

hover​

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

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

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

  1. Находит элемент, соответствующий селектору. Если такого элемента нет, ожидает его появления в DOM.
  2. Ожидает завершения проверок активности для выбранного элемента, если параметр force не установлен. Если элемент откреплен во время проверок, действие повторяется.
  3. Если нужно, прокручивает элемент в область видимости.
  4. Использует 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 Объект (необязательно)

      • x число

      • y число

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

    • strict логическое (необязательно)

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

    • timeout число (необязательно)

      Максимальное время в миллисекундах. По умолчанию 0 — без таймаута. Значение по умолчанию может быть изменено через параметр actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

    • trial логическое (необязательно)

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

Возвращает

  • Promise<пустое значение>

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().

Возвращает

  • Promise<строка>

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().

Возвращает

  • Promise<строка>

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().

Возвращает

  • Promise<строка>

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().

Возвращает

  • Promise<булево>

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().

Возвращает

  • Promise<булево>

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().

Возвращает

  • Promise<булево>

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().

Возвращает

  • Promise<boolean>

isHidden​

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

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

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

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

await page.isHidden(selector);
await page.isHidden(selector, options);

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict boolean (необязательно)

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

    • timeout число (необязательно)

      Устарело

      Этот параметр игнорируется. page.isHidden() не ожидает, пока элемент станет скрытым, и возвращает результат немедленно.

Возвращает

  • Promise<boolean>

isVisible​

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

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

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

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

await page.isVisible(selector);
await page.isVisible(selector, options);

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict boolean (необязательно)

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

    • timeout число (необязательно)

      Устарело

      Этот параметр игнорируется. page.isVisible() не ожидает, пока элемент станет видимым, и возвращает результат немедленно.

Возвращает

  • Promise<boolean>

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.

    • noWaitAfter boolean (необязательно)

      Устарело

      В будущем этот параметр будет иметь значение true по умолчанию.

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

    • strict boolean (необязательно)

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

    • timeout число (необязательно)

      Максимальное время в миллисекундах. По умолчанию 0 — без таймаута. Значение по умолчанию можно изменить параметром actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает

  • Promise<void>

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 строка

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

  • values null | строка | ElementHandle | Массив<строка> | Объект | Массив<ElementHandle> | Массив<Объект>

    • value строка (необязательно)

      Соответствие по option.value. Необязательно.

    • label строка (необязательно)

      Соответствие по option.label. Необязательно.

    • index число (необязательно)

      Соответствие по индексу. Необязательно.

    Параметры для выбора. Если у <select> есть атрибут multiple, выбираются все соответствующие параметры, в противном случае выбирается только первый параметр, соответствующий одному из переданных параметров. Строковые значения соответствуют как значениям, так и меткам. Параметр считается соответствующим, если все указанные свойства совпадают.

  • options Объект (необязательно)

    • force булево (необязательно)

      Определяет, следует ли пропускать проверки действительности. По умолчанию false.

    • noWaitAfter булево (необязательно)

      Устарело

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

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

    • strict булево (необязательно)

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

    • timeout число (необязательно)

      Максимальное время в миллисекундах. По умолчанию 0 — без таймаута. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает

  • Promise<Массив<строка>>

setChecked​

Не рекомендуется

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

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

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

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

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

await page.setChecked(selector, checked);
await page.setChecked(selector, checked, options);

Аргументы

  • selector строка

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

  • checked логическое

    Выбрать или сбросить флажок.

  • options объект (необязательно)

    • force логическое (необязательно)

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

    • noWaitAfter логическое (необязательно)

      Устарело

      Этот параметр не оказывает влияния.

      Этот параметр не оказывает влияния.

    • position объект (необязательно)

      • x число

      • y число

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

    • 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 строка

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

  • files строка | массив<строка> | объект | массив<объект>

    • name строка

      Имя файла

    • mimeType строка

      Тип файла

    • buffer Буфер

      Содержимое файла

  • options объект (необязательно)

    • noWaitAfter логическое (необязательно)

      Устарело

      Этот параметр не оказывает влияния.

      Этот параметр не оказывает влияния.

    • strict логическое (необязательно)

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

    • timeout число (необязательно)

      Максимальное время в миллисекундах. По умолчанию 0 — без таймаута. Значение по умолчанию может быть изменено с помощью параметра actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает

  • Обещание<пустое значение>

tap​

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

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

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

  1. Находит элемент, соответствующий селектору. Если его нет, ждёт, пока соответствующий элемент будет добавлен в DOM.
  2. Ждёт проверки действительности на сопоставленном элементе, если параметр force не установлен. Если элемент откреплён во время проверок, всё действие повторяется.
  3. Прокручивает элемент в область видимости при необходимости.
  4. Использует 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 Объект (необязательно)

      • x число

      • y число

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

    • strict булево значение (необязательно)

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

    • timeout число (необязательно)

      Максимальное время в миллисекундах. По умолчанию 0 — без таймаута. Значение по умолчанию может быть изменено с помощью параметра actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

    • trial булево значение (необязательно)

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

Возвращаемое значение

  • Promise<void>

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().

Возвращаемое значение

  • Promise<null | строка>

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().

Возвращаемое значение

  • Promise<void>

uncheck​

Добавлено до версии 1.9
Не рекомендуется

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

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

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

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

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

await page.uncheck(selector);
await page.uncheck(selector, options);

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • force логическое значение (необязательно)

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

    • noWaitAfter логическое значение (необязательно)

      Устарело

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

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

    • position Объект (необязательно)

      • x число

      • y число

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

      Максимальное время в миллисекундах. По умолчанию 0 — без таймаута. Значение по умолчанию может быть изменено через опцию actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

    • trial логическое значение (необязательно)

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

Возвращает

  • Promise<void>

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' — считать операцию завершенной, когда получен сетевой ответ и началась загрузка документа.

Возвращает

  • Promise<null | Response>

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().

Возвращает

  • Promise<null | ElementHandle>

waitForTimeout​

Добавлен до версии 1.9
Не рекомендуется

Никогда не используйте ожидание по таймауту в продакшене. Тесты, которые ожидают по таймауту, ненадёжны. Используйте действия Locator и веб-утверждения, которые автоматически ожидают.

Ожидает заданный таймаут в миллисекундах.

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

Применение

// wait for 1 second
await page.waitForTimeout(1000);

Аргументы

  • timeout число

    Таймаут ожидания

Возвращает

  • Promise<ничего>

© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-page

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API