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

Page

Page предоставляет методы для взаимодействия с одной вкладкой в Browser или background page расширения в Chromium. Один экземпляр Browser может иметь несколько экземпляров Page.

Этот пример создает страницу, переходит на URL и затем сохраняет скриншот:

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType webkit = playwright.webkit();
Browser browser = webkit.launch();
BrowserContext context = browser.newContext();
Page page = context.newPage();
page.navigate("https://example.com");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("screenshot.png")));
browser.close();
}
}
}

Класс Page генерирует различные события (описанные ниже), которые могут быть обработаны с использованием любых методов нативного EventEmitter в Node, таких как on, once или removeListener.

Этот пример выводит сообщение для одного события загрузки страницы load:

page.onLoad(p -> System.out.println("Page loaded!"));

Чтобы отписаться от событий, используйте метод removeListener:

Consumer<Request> logRequest = interceptedRequest -> {
System.out.println("A request was made: " + interceptedRequest.url());
};
page.onRequest(logRequest);
// Позже...
page.offRequest(logRequest);

Методы

addInitScript

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

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

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

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

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

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

// preload.js
Math.random = () => 42;
// В вашем скрипте playwright, предполагая, что файл preload.js находится в той же директории
page.addInitScript(Paths.get("./preload.js"));
примечание

Порядок выполнения нескольких скриптов, установленных через BrowserContext.addInitScript() и Page.addInitScript(), не определен.

Аргументы

  • script String | Path#

    Скрипт, который будет выполнен на всех страницах в контексте браузера.

Возвращает


addLocatorHandler

Добавлено в: v1.42 page.addLocatorHandler

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

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

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

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

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

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

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

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

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

// Настройте обработчик.
page.addLocatorHandler(page.getByText("Sign up to the newsletter"), () -> {
page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("No thanks")).click();
});

// Пишите тест как обычно.
page.navigate("https://example.com");
page.getByRole("button", Page.GetByRoleOptions().setName("Start here")).click();

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

// Настройте обработчик.
page.addLocatorHandler(page.getByText("Confirm your security details"), () -> {
page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Remind me later")).click();
});

// Пишите тест как обычно.
page.navigate("https://example.com");
page.getByRole("button", Page.GetByRoleOptions().setName("Start here")).click();

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

// Настройте обработчик.
page.addLocatorHandler(page.locator("body"), () -> {
page.evaluate("window.removeObstructionsForTestIfNeeded()");
}, new Page.AddLocatorHandlerOptions().setNoWaitAfter(true));

// Пишите тест как обычно.
page.navigate("https://example.com");
page.getByRole("button", Page.GetByRoleOptions().setName("Start here")).click();

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

page.addLocatorHandler(page.getByLabel("Close"), locator -> {
locator.click();
}, new Page.AddLocatorHandlerOptions().setTimes(1));

Аргументы

  • locator Locator#

    Локатор, который вызывает обработчик.

  • handler Consumer<Locator>#

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

  • options Page.AddLocatorHandlerOptions (опционально)

    • setNoWaitAfter boolean (опционально) Добавлено в: v1.44#

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

    • setTimes int (опционально) Добавлено в: v1.44#

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

Возвращает


addScriptTag

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

Добавляет тег <script> на страницу с желаемым URL или содержимым. Возвращает добавленный тег, когда срабатывает событие onload скрипта или когда содержимое скрипта было внедрено в фрейм.

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

Page.addScriptTag();
Page.addScriptTag(options);

Аргументы

  • options Page.AddScriptTagOptions (опционально)
    • setContent String (опционально)#

      Сырой JavaScript-контент, который будет внедрен в фрейм.

    • setPath Path (опционально)#

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

    • setType String (опционально)#

      Тип скрипта. Используйте 'module', чтобы загрузить JavaScript ES6 модуль. Подробнее см. script.

    • setUrl String (опционально)#

      URL скрипта, который будет добавлен.

Возвращает


addStyleTag

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

Добавляет тег <link rel="stylesheet"> на страницу с желаемым URL или тег <style type="text/css"> с содержимым. Возвращает добавленный тег, когда срабатывает событие onload стиля или когда CSS-контент был внедрен в фрейм.

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

Page.addStyleTag();
Page.addStyleTag(options);

Аргументы

  • options Page.AddStyleTagOptions (опционально)
    • setContent String (опционально)#

      Сырой CSS-контент, который будет внедрен в фрейм.

    • setPath Path (опционально)#

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

    • setUrl String (опционально)#

      URL тега <link>.

Возвращает


bringToFront

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

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

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

Page.bringToFront();

Возвращает


close

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

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

По умолчанию, page.close() не выполняет обработчики beforeunload.

примечание

если setRunBeforeUnload передан как true, может быть вызван диалог beforeunload, который должен быть обработан вручную через событие Page.onDialog(handler).

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

Page.close();
Page.close(options);

Аргументы

  • options Page.CloseOptions (опционально)
    • setReason String (опционально) Добавлено в: v1.40#

      Причина, которая будет сообщена операциям, прерванным закрытием страницы.

    • setRunBeforeUnload boolean (опционально)#

      По умолчанию false. Выполнять ли обработчики страницы before unload.

Возвращает


content

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

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

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

Page.content();

Возвращает


context

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

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

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

Page.context();

Возвращает


dragAndDrop

Добавлено в: v1.13 page.dragAndDrop

Этот метод перетаскивает исходный элемент на целевой элемент. Сначала он перемещается к исходному элементу, выполняет mousedown, затем перемещается к целевому элементу и выполняет mouseup.

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

page.dragAndDrop("#source", "#target");
// или укажите точные позиции относительно верхнего левого угла элементов:
page.dragAndDrop("#source", "#target", new Page.DragAndDropOptions()
.setSourcePosition(34, 7).setTargetPosition(10, 20));

Аргументы

  • source String#

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

  • target String#

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

  • options Page.DragAndDropOptions (опционально)

    • setForce boolean (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Устарело

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

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

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

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

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

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

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

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

    • setTimeout double (опционально)#

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

    • setTrial boolean (опционально)#

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

Возвращает


emulateMedia

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

Этот метод изменяет CSS media type через аргумент media, и/или медиа-функцию 'prefers-colors-scheme', используя аргумент colorScheme.

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

page.evaluate("() => matchMedia('screen').matches");
// → true
page.evaluate("() => matchMedia('print').matches");
// → false

page.emulateMedia(new Page.EmulateMediaOptions().setMedia(Media.PRINT));
page.evaluate("() => matchMedia('screen').matches");
// → false
page.evaluate("() => matchMedia('print').matches");
// → true

page.emulateMedia(new Page.EmulateMediaOptions());
page.evaluate("() => matchMedia('screen').matches");
// → true
page.evaluate("() => matchMedia('print').matches");
// → false
page.emulateMedia(new Page.EmulateMediaOptions().setColorScheme(ColorScheme.DARK));
page.evaluate("() => matchMedia('(prefers-color-scheme: dark)').matches");
// → true
page.evaluate("() => matchMedia('(prefers-color-scheme: light)').matches");
// → false

Аргументы

  • options Page.EmulateMediaOptions (опционально)
    • setColorScheme null | enum ColorScheme { LIGHT, DARK, NO_PREFERENCE } (опционально) Добавлено в: v1.9#

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

    • setContrast null | enum Contrast { NO_PREFERENCE, MORE } (опционально) Добавлено в: v1.51#

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

    • setForcedColors null | enum ForcedColors { ACTIVE, NONE } (опционально) Добавлено в: v1.15#

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

    • setMedia null | enum Media { SCREEN, PRINT } (опционально) Добавлено в: v1.9#

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

    • setReducedMotion null | enum ReducedMotion { REDUCE, NO_PREFERENCE } (опционально) Добавлено в: v1.12#

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

Возвращает


evaluate

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

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

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

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

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

Передача аргумента в expression:

Object result = page.evaluate("([x, y]) => {\n" +
" return Promise.resolve(x * y);\n" +
"}", Arrays.asList(7, 8));
System.out.println(result); // выводит "56"

Также можно передать строку вместо функции:

System.out.println(page.evaluate("1 + 2")); // выводит "3"

Экземпляры ElementHandle могут быть переданы в качестве аргумента в Page.evaluate():

ElementHandle bodyHandle = page.evaluate("document.body");
String html = (String) page.evaluate("([body, suffix]) => body.innerHTML + suffix", Arrays.asList(bodyHandle, "hello"));
bodyHandle.dispose();

Аргументы

  • expression String#

    JavaScript-выражение, которое будет выполнено в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

  • arg EvaluationArgument (опционально)#

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

Возвращает


evaluateHandle

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

Возвращает значение вызова expression в виде JSHandle.

Единственное отличие между Page.evaluate() и Page.evaluateHandle() заключается в том, что Page.evaluateHandle() возвращает JSHandle.

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

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

// Обработчик для объекта window.
JSHandle aWindowHandle = page.evaluateHandle("() => Promise.resolve(window)");

Также можно передать строку вместо функции:

JSHandle aHandle = page.evaluateHandle("document"); // Обработчик для "document".

Экземпляры JSHandle могут быть переданы в качестве аргумента в Page.evaluateHandle():

JSHandle aHandle = page.evaluateHandle("() => document.body");
JSHandle resultHandle = page.evaluateHandle("([body, suffix]) => body.innerHTML + suffix", Arrays.asList(aHandle, "hello"));
System.out.println(resultHandle.jsonValue());
resultHandle.dispose();

Аргументы

  • expression String#

    JavaScript-выражение, которое будет выполнено в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

  • arg EvaluationArgument (опционально)#

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

Возвращает


exposeBinding

Added before v1.9 page.exposeBinding

Метод добавляет функцию с именем name в объект window каждого фрейма на этой странице. При вызове функция выполняет callback и возвращает Promise, который разрешается в возвращаемое значение callback. Если callback возвращает Promise, он будет ожидаться.

Первый аргумент функции callback содержит информацию о вызывающем: { browserContext: BrowserContext, page: Page, frame: Frame }.

Смотрите BrowserContext.exposeBinding() для версии, охватывающей весь контекст.

примечание

Функции, установленные через Page.exposeBinding(), сохраняются при навигации.

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

Пример предоставления URL страницы всем фреймам на странице:

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType webkit = playwright.webkit();
Browser browser = webkit.launch(new BrowserType.LaunchOptions().setHeadless(false));
BrowserContext context = browser.newContext();
Page page = context.newPage();
page.exposeBinding("pageURL", (source, args) -> source.page().url());
page.setContent("<script>\n" +
" async function onClick() {\n" +
" document.querySelector('div').textContent = await window.pageURL();\n" +
" }\n" +
"</script>\n" +
"<button onclick=\"onClick()\">Click me</button>\n" +
"<div></div>");
page.click("button");
}
}
}

Аргументы

  • name String#

    Имя функции в объекте window.

  • callback BindingCallback#

    Функция обратного вызова, которая будет вызвана в контексте Playwright.

  • options Page.ExposeBindingOptions (optional)

    • setHandle boolean (optional)#

      Устарело

      Эта опция будет удалена в будущем.

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

Возвращает


exposeFunction

Added before v1.9 page.exposeFunction

Метод добавляет функцию с именем name в объект window каждого фрейма на странице. При вызове функция выполняет callback и возвращает Promise, который разрешается в возвращаемое значение callback.

Если callback возвращает Promise, он будет ожидаться.

Смотрите BrowserContext.exposeFunction() для версии, охватывающей весь контекст.

примечание

Функции, установленные через Page.exposeFunction(), сохраняются при навигации.

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

Пример добавления функции sha256 на страницу:

import com.microsoft.playwright.*;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType webkit = playwright.webkit();
Browser browser = webkit.launch(new BrowserType.LaunchOptions().setHeadless(false));
Page page = browser.newPage();
page.exposeFunction("sha256", args -> {
try {
String text = (String) args[0];
MessageDigest crypto = MessageDigest.getInstance("SHA-256");
byte[] token = crypto.digest(text.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(token);
} catch (NoSuchAlgorithmException e) {
return null;
}
});
page.setContent(
"<script>\n" +
" async function onClick() {\n" +
" document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');\n" +
" }\n" +
"</script>\n" +
"<button onclick=\"onClick()\">Click me</button>\n" +
"<div></div>"
);
page.click("button");
}
}
}

Аргументы

  • name String#

    Имя функции в объекте window.

  • callback FunctionCallback#

    Функция обратного вызова, которая будет вызвана в контексте Playwright.

Возвращает


frame

Added before v1.9 page.frame

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

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

Frame frame = page.frame("frame-name");
Frame frame = page.frameByUrl(Pattern.compile(".*domain.*"));

Аргументы

  • name String Added in: v1.9#

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

Возвращает


frameByUrl

Added in: v1.9 page.frameByUrl

Возвращает фрейм с соответствующим URL.

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

Page.frameByUrl(url);

Аргументы

  • url String | Pattern | Predicate<String>#

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

Возвращает


frameLocator

Added in: v1.17 page.frameLocator

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

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

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

Locator locator = page.frameLocator("#my-iframe").getByText("Submit");
locator.click();

Аргументы

  • selector String#

    Селектор для использования при разрешении DOM элемента.

Возвращает


frames

Added before v1.9 page.frames

Массив всех фреймов, прикрепленных к странице.

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

Page.frames();

Возвращает


getByAltText

Added in: v1.27 page.getByAltText

Позволяет находить элементы по их alt тексту.

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

Например, этот метод найдет изображение по alt тексту "Playwright logo":

<img alt='Playwright logo'>
page.getByAltText("Playwright logo").click();

Аргументы

  • text String | Pattern#

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

  • options Page.GetByAltTextOptions (optional)

    • setExact boolean (optional)#

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

Возвращает


getByLabel

Added in: v1.27 page.getByLabel

Позволяет находить элементы ввода по тексту связанного элемента <label> или элемента aria-labelledby, или по атрибуту aria-label.

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

Например, этот метод найдет поля ввода по меткам "Username" и "Password" в следующем DOM:

<input aria-label="Username">
<label for="password-input">Password:</label>
<input id="password-input">
page.getByLabel("Username").fill("john");
page.getByLabel("Password").fill("secret");

Аргументы

  • text String | Pattern#

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

  • options Page.GetByLabelOptions (optional)

    • setExact boolean (optional)#

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

Возвращает


getByPlaceholder

Added in: v1.27 page.getByPlaceholder

Позволяет находить элементы ввода по тексту-заполнителю.

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

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

<input type="email" placeholder="name@example.com" />

Вы можете заполнить поле ввода, найдя его по тексту-заполнителю:

page.getByPlaceholder("name@example.com").fill("playwright@microsoft.com");

Аргументы

  • text String | Pattern#

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

  • options Page.GetByPlaceholderOptions (optional)

    • setExact boolean (optional)#

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

Возвращает


getByRole

Added in: v1.27 page.getByRole

Позволяет находить элементы по их ARIA роли, ARIA атрибутам и доступному имени.

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

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

<h3>Sign up</h3>
<label>
<input type="checkbox" /> Subscribe
</label>
<br/>
<button>Submit</button>

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

assertThat(page
.getByRole(AriaRole.HEADING,
new Page.GetByRoleOptions().setName("Sign up")))
.isVisible();

page.getByRole(AriaRole.CHECKBOX,
new Page.GetByRoleOptions().setName("Subscribe"))
.check();

page.getByRole(AriaRole.BUTTON,
new Page.GetByRoleOptions().setName(
Pattern.compile("submit", Pattern.CASE_INSENSITIVE)))
.click();

Аргументы

  • role enum AriaRole { 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 Page.GetByRoleOptions (optional)

    • setChecked boolean (optional)#

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

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

    • setDisabled boolean (optional)#

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

      примечание

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

    • setExact boolean (optional) Added in: v1.28#

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

    • setExpanded boolean (optional)#

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

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

    • setIncludeHidden boolean (optional)#

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

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

    • setLevel int (optional)#

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

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

    • setName String | Pattern (optional)#

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

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

    • setPressed boolean (optional)#

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

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

    • setSelected boolean (optional)#

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

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

Возвращает

Детали

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

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


getByTestId

Added in: v1.27 page.getByTestId

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

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

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

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

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

page.getByTestId("directions").click();

Аргументы

  • testId String | Pattern#

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

Возвращает

Детали

По умолчанию используется атрибут data-testid в качестве тестового идентификатора. Используйте Selectors.setTestIdAttribute() для настройки другого атрибута тестового идентификатора, если это необходимо.


getByText

Added in: v1.27 page.getByText

Позволяет находить элементы, содержащие заданный текст.

Смотрите также Locator.filter(), который позволяет сопоставлять по другим критериям, таким как доступная роль, а затем фильтровать по текстовому содержимому.

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

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

<div>Hello <span>world</span></div>
<div>Hello</div>

Вы можете найти по подстроке текста, точной строке или регулярному выражению:

// Соответствует <span>
page.getByText("world");

// Соответствует первому <div>
page.getByText("Hello world");

// Соответствует второму <div>
page.getByText("Hello", new Page.GetByTextOptions().setExact(true));

// Соответствует обоим <div>
page.getByText(Pattern.compile("Hello"));

// Соответствует второму <div>
page.getByText(Pattern.compile("^hello$", Pattern.CASE_INSENSITIVE));

Аргументы

  • text String | Pattern#

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

  • options Page.GetByTextOptions (optional)

    • setExact boolean (optional)#

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

Возвращает

Детали

Сопоставление по тексту всегда нормализует пробелы, даже при точном совпадении. Например, оно превращает несколько пробелов в один, превращает разрывы строк в пробелы и игнорирует начальные и конечные пробелы.

Элементы ввода типа button и submit сопоставляются по их value, а не по текстовому содержимому. Например, поиск по тексту "Log in" соответствует <input type=button value="Log in">.


getByTitle

Added in: v1.27 page.getByTitle

Позволяет находить элементы по их атрибуту title.

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

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

<span title='Issues count'>25 issues</span>

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

assertThat(page.getByTitle("Issues count")).hasText("25 issues");

Аргументы

  • text String | Pattern#

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

  • options Page.GetByTitleOptions (optional)

    • setExact boolean (optional)#

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

Возвращает


goBack

Added before v1.9 page.goBack

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

Переход на предыдущую страницу в истории.

Usage

Page.goBack();
Page.goBack(options);

Arguments

  • options Page.GoBackOptions (optional)
    • setTimeout double (optional)#

      Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте 0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout().

    • setWaitUntil enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT } (optional)#

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

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

Returns


goForward

Added before v1.9 page.goForward

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

Переход на следующую страницу в истории.

Usage

Page.goForward();
Page.goForward(options);

Arguments

  • options Page.GoForwardOptions (optional)
    • setTimeout double (optional)#

      Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте 0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout().

    • setWaitUntil enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT } (optional)#

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

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

Returns


isClosed

Added before v1.9 page.isClosed

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

Usage

Page.isClosed();

Returns


locator

Added in: v1.14 page.locator

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

Узнайте больше о локаторах.

Usage

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

Arguments

  • selector String#

    Селектор для использования при разрешении элемента DOM.

  • options Page.LocatorOptions (optional)

    • setHas Locator (optional)#

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

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

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

    • setHasNot Locator (optional) Added in: v1.33#

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

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

    • setHasNotText String | Pattern (optional) Added in: v1.33#

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

    • setHasText String | Pattern (optional)#

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

Returns


mainFrame

Added before v1.9 page.mainFrame

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

Usage

Page.mainFrame();

Returns


navigate

Added before v1.9 page.navigate

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

Метод вызовет ошибку, если:

  • произошла ошибка SSL (например, в случае самоподписанных сертификатов).
  • целевой URL недействителен.
  • setTimeout превышен во время навигации.
  • удаленный сервер не отвечает или недоступен.
  • основной ресурс не удалось загрузить.

Метод не вызовет ошибку, если удаленный сервер вернет любой допустимый код состояния HTTP, включая 404 "Не найдено" и 500 "Внутренняя ошибка сервера". Код состояния для таких ответов можно получить, вызвав Response.status().

примечание

Метод либо вызывает ошибку, либо возвращает ответ основного ресурса. Единственными исключениями являются навигация на about:blank или навигация на тот же URL с другим хэшем, которые будут успешными и вернут null.

примечание

Режим без головы не поддерживает навигацию к PDF-документу. См. проблему.

Usage

Page.navigate(url);
Page.navigate(url, options);

Arguments

  • url String#

    URL для перехода на страницу. URL должен включать схему, например, https://. Когда setBaseURL был предоставлен через параметры контекста и переданный URL является путем, он объединяется с помощью конструктора new URL().

  • options Page.NavigateOptions (optional)

    • setReferer String (optional)#

      Значение заголовка Referer. Если предоставлено, оно будет иметь приоритет над значением заголовка referer, установленным с помощью Page.setExtraHTTPHeaders().

    • setTimeout double (optional)#

      Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте 0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout().

    • setWaitUntil enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT } (optional)#

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

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

Returns


onceDialog

Added in: v1.10 page.onceDialog

Добавляет одноразовый обработчик Dialog. Обработчик будет удален сразу после создания следующего Dialog.

page.onceDialog(dialog -> {
dialog.accept("foo");
});

// выводит 'foo'
System.out.println(page.evaluate("prompt('Enter string:')"));

// выводит 'null', так как диалог будет автоматически отклонен, потому что нет обработчиков.
System.out.println(page.evaluate("prompt('Enter string:')"));

Этот код выше эквивалентен:

Consumer<Dialog> handler = new Consumer<Dialog>() {
@Override
public void accept(Dialog dialog) {
dialog.accept("foo");
page.offDialog(this);
}
};
page.onDialog(handler);

// выводит 'foo'
System.out.println(page.evaluate("prompt('Enter string:')"));

// выводит 'null', так как диалог будет автоматически отклонен, потому что нет обработчиков.
System.out.println(page.evaluate("prompt('Enter string:')"));

Usage

Page.onceDialog(handler);

Arguments


opener

Added before v1.9 page.opener

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

Usage

Page.opener();

Returns


pause

Added in: v1.9 page.pause

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

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

примечание

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

Usage

Page.pause();

Returns


pdf

Added before v1.9 page.pdf

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

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

примечание

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

Usage

// Генерирует PDF с типом медиа "screen".
page.emulateMedia(new Page.EmulateMediaOptions().setMedia(Media.SCREEN));
page.pdf(new Page.PdfOptions().setPath(Paths.get("page.pdf")));

Параметры setWidth, setHeight и setMargin принимают значения с указанием единиц измерения. Значения без указания единиц измерения считаются пикселями.

Несколько примеров:

  • page.pdf({width: 100}) - печатает с шириной, установленной в 100 пикселей
  • page.pdf({width: '100px'}) - печатает с шириной, установленной в 100 пикселей
  • page.pdf({width: '10cm'}) - печатает с шириной, установленной в 10 сантиметров.

Все возможные единицы измерения:

  • px - пиксель
  • in - дюйм
  • cm - сантиметр
  • mm - миллиметр

Параметры setFormat:

  • Letter: 8.5in x 11in
  • Legal: 8.5in x 14in
  • Tabloid: 11in x 17in
  • Ledger: 17in x 11in
  • A0: 33.1in x 46.8in
  • A1: 23.4in x 33.1in
  • A2: 16.54in x 23.4in
  • A3: 11.7in x 16.54in
  • A4: 8.27in x 11.7in
  • A5: 5.83in x 8.27in
  • A6: 4.13in x 5.83in
примечание

Разметка setHeaderTemplate и setFooterTemplate имеет следующие ограничения: > 1. Теги скриптов внутри шаблонов не оцениваются. > 2. Стили страницы не видны внутри шаблонов.

Arguments

  • options Page.PdfOptions (optional)
    • setDisplayHeaderFooter boolean (optional)#

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

    • setFooterTemplate String (optional)#

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

    • setFormat String (optional)#

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

    • setHeaderTemplate String (optional)#

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

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

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

    • setLandscape boolean (optional)#

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

    • setMargin Margin (optional)#

      • setTop String (optional)

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

      • setRight String (optional)

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

      • setBottom String (optional)

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

      • setLeft String (optional)

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

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

    • setOutline boolean (optional) Added in: v1.42#

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

    • setPageRanges String (optional)#

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

    • setPath Path (optional)#

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

    • setPreferCSSPageSize boolean (optional)#

      Предпочитать любой размер страницы CSS @page, объявленный на странице, над тем, что объявлено в параметрах setWidth и setHeight или setFormat. По умолчанию false, что будет масштабировать содержимое, чтобы оно соответствовало размеру бумаги.

    • setPrintBackground boolean (optional)#

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

    • setScale double (optional)#

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

    • setTagged boolean (optional) Added in: v1.42#

      Генерировать ли тегированный (доступный) PDF. По умолчанию false.

    • setWidth String (optional)#

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

Returns


reload

Added before v1.9 page.reload

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

Usage

Page.reload();
Page.reload(options);

Arguments

  • options Page.ReloadOptions (optional)
    • setTimeout double (optional)#

      Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте 0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout().

    • setWaitUntil enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT } (optional)#

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

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

Returns


removeLocatorHandler

Added in: v1.44 page.removeLocatorHandler

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

Usage

Page.removeLocatorHandler(locator);

Arguments

Returns


requestGC

Added in: v1.48 page.requestGC

Запросить у страницы выполнение сборки мусора. Обратите внимание, что нет гарантии, что все недоступные объекты будут собраны.

Это полезно для обнаружения утечек памяти. Например, если на вашей странице есть большой объект 'suspect', который может утекать, вы можете проверить, что он не утек, используя WeakRef.

// 1. На вашей странице сохраните WeakRef для "suspect".
page.evaluate("globalThis.suspectWeakRef = new WeakRef(suspect)");
// 2. Запросите сборку мусора.
page.requestGC();
// 3. Убедитесь, что weak ref не ссылается на оригинальный объект.
assertTrue(page.evaluate("!globalThis.suspectWeakRef.deref()"));

Usage

Page.requestGC();

Returns


route

Added before v1.9 page.route

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

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

примечание

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

примечание

Page.route() не будет перехватывать запросы, перехваченные Service Worker. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив setServiceWorkers в 'block'.

примечание

Page.route() не будет перехватывать первый запрос всплывающей страницы. Используйте BrowserContext.route() вместо этого.

Usage

Пример наивного обработчика, который прерывает все запросы изображений:

Page page = browser.newPage();
page.route("**/*.{png,jpg,jpeg}", route -> route.abort());
page.navigate("https://example.com");
browser.close();

или тот же фрагмент, используя вместо этого шаблон регулярного выражения:

Page page = browser.newPage();
page.route(Pattern.compile("(\\.png$)|(\\.jpg$)"),route -> route.abort());
page.navigate("https://example.com");
browser.close();

Возможно исследовать запрос, чтобы решить, какое действие маршрута выполнить. Например, имитируя все запросы, содержащие некоторые данные POST, и оставляя все остальные запросы как есть:

page.route("/api/**", route -> {
if (route.request().postData().contains("my-string"))
route.fulfill(new Route.FulfillOptions().setBody("mocked-data"));
else
route.resume();
});

Маршруты страницы имеют приоритет над маршрутами контекста браузера (настроенными с помощью BrowserContext.route()), когда запрос соответствует обоим обработчикам.

Чтобы удалить маршрут с его обработчиком, вы можете использовать Page.unroute().

примечание

Включение маршрутизации отключает http-кэш.

Arguments

  • url String | Pattern | Predicate<String>#

    Глобальный шаблон, шаблон регулярного выражения или предикат, получающий [URL] для сопоставления при маршрутизации. Когда setBaseURL был предоставлен через параметры контекста и переданный URL является путем, он объединяется с помощью конструктора new URL().

  • handler Consumer<Route>#

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

  • options Page.RouteOptions (optional)

    • setTimes int (optional) Added in: v1.15#

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

Returns


routeFromHAR

Added in: v1.23 page.routeFromHAR

Если указано, сетевые запросы, сделанные на странице, будут обслуживаться из HAR-файла. Подробнее читайте в разделе Replaying from HAR.

Playwright не будет обслуживать запросы, перехваченные Service Worker, из HAR-файла. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив setServiceWorkers в 'block'.

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

Page.routeFromHAR(har);
Page.routeFromHAR(har, options);

Аргументы

  • har Path#

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

  • options Page.RouteFromHAROptions (опционально)

    • setNotFound enum HarNotFound { ABORT, FALLBACK } (опционально)#

      • Если установлено в 'abort', любой запрос, не найденный в HAR-файле, будет прерван.
      • Если установлено в 'fallback', отсутствующие запросы будут отправлены в сеть.

      По умолчанию abort.

    • setUpdate boolean (опционально)#

      Если указано, обновляет данный HAR с фактической сетевой информацией вместо обслуживания из файла. Файл записывается на диск, когда BrowserContext.close() вызывается.

    • setUpdateContent enum RouteFromHarUpdateContentPolicy { EMBED, ATTACH } (опционально) Added in: v1.32#

      Опциональная настройка для управления содержимым ресурсов. Если указано attach, ресурсы сохраняются как отдельные файлы или записи в ZIP-архиве. Если указано embed, содержимое хранится в HAR-файле.

    • setUpdateMode enum HarMode { FULL, MINIMAL } (опционально) Added in: v1.32#

      Когда установлено в minimal, записывается только информация, необходимая для маршрутизации из HAR. Это исключает размеры, время, страницу, куки, безопасность и другие типы информации HAR, которые не используются при воспроизведении из HAR. По умолчанию minimal.

    • setUrl String | Pattern (опционально)#

      Глобальный шаблон, регулярное выражение или предикат для сопоставления URL запроса. Только запросы с URL, соответствующим шаблону, будут обслуживаться из HAR-файла. Если не указано, все запросы обслуживаются из HAR-файла.

Возвращает


routeWebSocket

Added in: v1.48 page.routeWebSocket

Этот метод позволяет изменять WebSocket-соединения, которые создаются страницей.

Обратите внимание, что только WebSocket, созданные после вызова этого метода, будут маршрутизированы. Рекомендуется вызывать этот метод перед навигацией по странице.

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

Ниже приведен пример простого мока, который отвечает на одно сообщение. Подробнее и примеры смотрите в WebSocketRoute.

page.routeWebSocket("/ws", ws -> {
ws.onMessage(frame -> {
if ("request".equals(frame.text()))
ws.send("response");
});
});

Аргументы

  • url String | Pattern | Predicate<String>#

    Только WebSocket с URL, соответствующим этому шаблону, будут маршрутизированы. Строковый шаблон может быть относительным к setBaseURL контекстной опции.

  • handler Consumer<WebSocketRoute>#

    Функция-обработчик для маршрутизации WebSocket.

Возвращает


screenshot

Added before v1.9 page.screenshot

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

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

Page.screenshot();
Page.screenshot(options);

Аргументы

  • options Page.ScreenshotOptions (опционально)
    • setAnimations enum ScreenshotAnimations { DISABLED, ALLOW } (опционально)#

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

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

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

    • setCaret enum ScreenshotCaret { HIDE, INITIAL } (опционально)#

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

    • setClip Clip (опционально)#

      • setX double

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

      • setY double

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

      • setWidth double

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

      • setHeight double

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

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

    • setFullPage boolean (опционально)#

      Если true, делает скриншот всей прокручиваемой страницы, вместо текущего видимого окна. По умолчанию false.

    • setMask List<Locator> (опционально)#

      Укажите локаторы, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут перекрыты розовым прямоугольником #FF00FF (настраивается с помощью setMaskColor), который полностью покрывает их ограничивающий прямоугольник. Маска также применяется к невидимым элементам, см. Matching only visible elements для отключения этого.

    • setMaskColor String (опционально) Added in: v1.35#

      Укажите цвет перекрывающего прямоугольника для замаскированных элементов в CSS color format. Цвет по умолчанию розовый #FF00FF.

    • setOmitBackground boolean (опционально)#

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

    • setPath Path (опционально)#

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

    • setQuality int (опционально)#

      Качество изображения, от 0 до 100. Не применимо к изображениям png.

    • setScale enum ScreenshotScale { CSS, DEVICE } (опционально)#

      Когда установлено в "css", скриншот будет иметь один пиксель на каждый css пиксель на странице. Для устройств с высоким разрешением это позволит сохранить скриншоты небольшими. Использование опции "device" создаст один пиксель на каждый пиксель устройства, так что скриншоты устройств с высоким разрешением будут в два раза больше или даже больше.

      По умолчанию "device".

    • setStyle String (опционально) Added in: v1.41#

      Текст стиля, который будет применен при создании скриншота. Здесь вы можете скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы помочь вам создавать повторяемые скриншоты. Этот стиль проникает в Shadow DOM и применяется к внутренним фреймам.

    • setTimeout double (опционально)#

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

    • setType enum ScreenshotType { PNG, JPEG } (опционально)#

      Укажите тип скриншота, по умолчанию png.

Возвращает


setContent

Added before v1.9 page.setContent

Этот метод внутренне вызывает document.write(), наследуя все его специфические характеристики и поведение.

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

Page.setContent(html);
Page.setContent(html, options);

Аргументы

  • html String#

    HTML-разметка для назначения странице.

  • options Page.SetContentOptions (опционально)

    • setTimeout double (опционально)#

      Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте 0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout().

    • setWaitUntil enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT } (опционально)#

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

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

Возвращает


setDefaultNavigationTimeout

Added before v1.9 page.setDefaultNavigationTimeout

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

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

Page.setDefaultNavigationTimeout(timeout);

Аргументы

  • timeout double#

    Максимальное время навигации в миллисекундах


setDefaultTimeout

Added before v1.9 page.setDefaultTimeout

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

примечание

Page.setDefaultNavigationTimeout() имеет приоритет над Page.setDefaultTimeout().

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

Page.setDefaultTimeout(timeout);

Аргументы

  • timeout double#

    Максимальное время в миллисекундах. Передайте 0, чтобы отключить тайм-аут.


setExtraHTTPHeaders

Added before v1.9 page.setExtraHTTPHeaders

Дополнительные HTTP-заголовки будут отправлены с каждым запросом, инициированным страницей.

примечание

Page.setExtraHTTPHeaders() не гарантирует порядок заголовков в исходящих запросах.

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

Page.setExtraHTTPHeaders(headers);

Аргументы

  • headers Map<String, String>#

    Объект, содержащий дополнительные HTTP-заголовки, которые будут отправлены с каждым запросом. Все значения заголовков должны быть строками.

Возвращает


setViewportSize

Added before v1.9 page.setViewportSize

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

Page.setViewportSize() изменит размер страницы. Многие веб-сайты не ожидают, что телефоны изменят размер, поэтому вы должны установить размер области просмотра перед навигацией по странице. Page.setViewportSize() также сбросит размер screen, используйте Browser.newContext() с параметрами screen и viewport, если вам нужно лучше контролировать эти свойства.

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

Page page = browser.newPage();
page.setViewportSize(640, 480);
page.navigate("https://example.com");

Аргументы

  • width int Added in: v1.10#

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

  • height int Added in: v1.10#

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

Возвращает


title

Added before v1.9 page.title

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

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

Page.title();

Возвращает


unroute

Added before v1.9 page.unroute

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

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

Page.unroute(url);
Page.unroute(url, handler);

Аргументы

  • url String | Pattern | Predicate<String>#

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

  • handler Consumer<Route> (опционально)#

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

Возвращает


unrouteAll

Added in: v1.41 page.unrouteAll

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

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

Page.unrouteAll();

Возвращает


url

Added before v1.9 page.url

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

Page.url();

Возвращает


video

Added before v1.9 page.video

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

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

Page.video();

Возвращает


viewportSize

Added before v1.9 page.viewportSize

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

Page.viewportSize();

Возвращает

  • null | ViewportSize#
    • width int

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

    • height int

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


waitForClose

Added in: v1.11 page.waitForClose

Выполняет действие и ждет, пока страница не закроется.

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

Page.waitForClose(callback);
Page.waitForClose(callback, options);

Аргументы

  • options Page.WaitForCloseOptions (опционально)

    • setTimeout double (опционально) Added in: v1.9#

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

  • callback Runnable Added in: v1.9#

    Обратный вызов, который выполняет действие, вызывающее событие.

Возвращает


waitForCondition

Added in: v1.32 page.waitForCondition

Метод будет блокировать выполнение, пока условие не вернет true. Все события Playwright будут отправлены, пока метод ожидает выполнения условия.

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

Используйте метод для ожидания условия, зависящего от событий страницы:

List<String> messages = new ArrayList<>();
page.onConsoleMessage(m -> messages.add(m.text()));
page.getByText("Submit button").click();
page.waitForCondition(() -> messages.size() > 3);

Аргументы

  • condition [BooleanSupplier]#

    Условие для ожидания.

  • options Page.WaitForConditionOptions (опционально)

    • setTimeout double (опционально)#

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

Возвращает


waitForConsoleMessage

Added in: v1.9 page.waitForConsoleMessage

Выполняет действие и ждет, пока ConsoleMessage не будет зарегистрировано на странице. Если предикат предоставлен, он передает значение ConsoleMessage в функцию predicate и ждет, пока predicate(message) не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до того, как событие Page.onConsoleMessage(handler) будет вызвано.

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

Page.waitForConsoleMessage(callback);
Page.waitForConsoleMessage(callback, options);

Аргументы

  • options Page.WaitForConsoleMessageOptions (опционально)

    • setPredicate Predicate<ConsoleMessage> (опционально)#

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

    • setTimeout double (опционально)#

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

  • callback Runnable#

    Обратный вызов, который выполняет действие, вызывающее событие.

Возвращает


waitForDownload

Added in: v1.9 page.waitForDownload

Выполняет действие и ждет, пока не начнется новая Download. Если предикат предоставлен, он передает значение Download в функцию predicate и ждет, пока predicate(download) не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до того, как событие загрузки будет вызвано.

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

Page.waitForDownload(callback);
Page.waitForDownload(callback, options);

Аргументы

  • options Page.WaitForDownloadOptions (опционально)

    • setPredicate Predicate<Download> (опционально)#

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

    • setTimeout double (опционально)#

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

  • callback Runnable#

    Обратный вызов, который выполняет действие, вызывающее событие.

Возвращает


waitForFileChooser

Added in: v1.9 page.waitForFileChooser

Выполняет действие и ожидает создания нового FileChooser. Если предоставлен предикат, он передает значение FileChooser в функцию predicate и ожидает, пока predicate(fileChooser) не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до открытия выбора файла.

Usage

Page.waitForFileChooser(callback);
Page.waitForFileChooser(callback, options);

Arguments

  • options Page.WaitForFileChooserOptions (optional)

    • setPredicate Predicate<FileChooser> (optional)#

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

    • setTimeout double (optional)#

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

  • callback Runnable#

    Обратный вызов, который выполняет действие, вызывающее событие.

Returns


waitForFunction

Added before v1.9 page.waitForFunction

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

Usage

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

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType webkit = playwright.webkit();
Browser browser = webkit.launch();
Page page = browser.newPage();
page.setViewportSize(50, 50);
page.waitForFunction("() => window.innerWidth < 100");
browser.close();
}
}
}

Чтобы передать аргумент в предикат функции Page.waitForFunction():

String selector = ".foo";
page.waitForFunction("selector => !!document.querySelector(selector)", selector);

Arguments

  • expression String#

    JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

  • arg EvaluationArgument (optional)#

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

  • options Page.WaitForFunctionOptions (optional)

    • setPollingInterval double (optional)#

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

    • setTimeout double (optional)#

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

Returns


waitForLoadState

Added before v1.9 page.waitForLoadState

Возвращает, когда достигнуто требуемое состояние загрузки.

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

примечание

Большую часть времени этот метод не нужен, потому что Playwright автоматически ожидает перед каждым действием.

Usage

page.getByRole(AriaRole.BUTTON).click(); // Клик вызывает навигацию.
page.waitForLoadState(); // Обещание разрешается после события "load".
Page popup = page.waitForPopup(() -> {
page.getByRole(AriaRole.BUTTON).click(); // Клик вызывает всплывающее окно.
});
// Ожидание события "DOMContentLoaded"
popup.waitForLoadState(LoadState.DOMCONTENTLOADED);
System.out.println(popup.title()); // Всплывающее окно готово к использованию.

Arguments

  • state enum LoadState { LOAD, DOMCONTENTLOADED, NETWORKIDLE } (optional)#

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

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

Returns


waitForPopup

Added in: v1.9 page.waitForPopup

Выполняет действие и ожидает всплывающее окно Page. Если предоставлен предикат, он передает значение [Popup] в функцию predicate и ожидает, пока predicate(page) не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до вызова события всплывающего окна.

Usage

Page.waitForPopup(callback);
Page.waitForPopup(callback, options);

Arguments

  • options Page.WaitForPopupOptions (optional)

    • setPredicate Predicate<Page> (optional)#

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

    • setTimeout double (optional)#

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

  • callback Runnable#

    Обратный вызов, который выполняет действие, вызывающее событие.

Returns


waitForRequest

Added before v1.9 page.waitForRequest

Ожидает совпадения запроса и возвращает его. См. ожидание события для получения более подробной информации о событиях.

Usage

// Ожидает следующего запроса с указанным URL
Request request = page.waitForRequest("https://example.com/resource", () -> {
// Вызывает запрос
page.getByText("trigger request").click();
});

// Ожидает следующего запроса, соответствующего некоторым условиям
Request request = page.waitForRequest(request -> "https://example.com".equals(request.url()) && "GET".equals(request.method()), () -> {
// Вызывает запрос
page.getByText("trigger request").click();
});

Arguments

  • urlOrPredicate String | Pattern | Predicate<Request>#

    URL запроса в виде строки, регулярного выражения или предиката, получающего объект Request. Когда setBaseURL был предоставлен через параметры контекста и переданный URL является путем, он объединяется через конструктор new URL().

  • options Page.WaitForRequestOptions (optional)

    • setTimeout double (optional)#

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

  • callback Runnable Added in: v1.9#

    Обратный вызов, который выполняет действие, вызывающее событие.

Returns


waitForRequestFinished

Added in: v1.12 page.waitForRequestFinished

Выполняет действие и ожидает завершения загрузки Request. Если предоставлен предикат, он передает значение Request в функцию predicate и ожидает, пока predicate(request) не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до вызова события Page.onRequestFinished(handler).

Usage

Page.waitForRequestFinished(callback);
Page.waitForRequestFinished(callback, options);

Arguments

  • options Page.WaitForRequestFinishedOptions (optional)

    • setPredicate Predicate<Request> (optional)#

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

    • setTimeout double (optional)#

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

  • callback Runnable#

    Обратный вызов, который выполняет действие, вызывающее событие.

Returns


waitForResponse

Added before v1.9 page.waitForResponse

Возвращает совпавший ответ. См. ожидание события для получения более подробной информации о событиях.

Usage

// Ожидает следующего ответа с указанным URL
Response response = page.waitForResponse("https://example.com/resource", () -> {
// Вызывает ответ
page.getByText("trigger response").click();
});

// Ожидает следующего ответа, соответствующего некоторым условиям
Response response = page.waitForResponse(response -> "https://example.com".equals(response.url()) && response.status() == 200 && "GET".equals(response.request().method()), () -> {
// Вызывает ответ
page.getByText("trigger response").click();
});

Arguments

  • urlOrPredicate String | Pattern | Predicate<Response>#

    URL запроса в виде строки, регулярного выражения или предиката, получающего объект Response. Когда setBaseURL был предоставлен через параметры контекста и переданный URL является путем, он объединяется через конструктор new URL().

  • options Page.WaitForResponseOptions (optional)

    • setTimeout double (optional)#

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

  • callback Runnable Added in: v1.9#

    Обратный вызов, который выполняет действие, вызывающее событие.

Returns


waitForURL

Added in: v1.11 page.waitForURL

Ожидает, пока основной фрейм перейдет на указанный URL.

Usage

page.click("a.delayed-navigation"); // Клик по ссылке косвенно вызывает навигацию
page.waitForURL("**/target.html");

Arguments

  • url String | Pattern | Predicate<String>#

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

  • options Page.WaitForURLOptions (optional)

    • setTimeout double (optional)#

      Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте 0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout().

    • setWaitUntil enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT } (optional)#

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

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

Returns


waitForWebSocket

Added in: v1.9 page.waitForWebSocket

Выполняет действие и ожидает новый WebSocket. Если предоставлен предикат, он передает значение WebSocket в функцию predicate и ожидает, пока predicate(webSocket) не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до вызова события WebSocket.

Usage

Page.waitForWebSocket(callback);
Page.waitForWebSocket(callback, options);

Arguments

  • options Page.WaitForWebSocketOptions (optional)

    • setPredicate Predicate<WebSocket> (optional)#

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

    • setTimeout double (optional)#

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

  • callback Runnable#

    Обратный вызов, который выполняет действие, вызывающее событие.

Returns


waitForWorker

Added in: v1.9 page.waitForWorker

Выполняет действие и ожидает новый Worker. Если предоставлен предикат, он передает значение Worker в функцию predicate и ожидает, пока predicate(worker) не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до вызова события worker.

Usage

Page.waitForWorker(callback);
Page.waitForWorker(callback, options);

Arguments

  • options Page.WaitForWorkerOptions (optional)

    • setPredicate Predicate<Worker> (optional)#

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

    • setTimeout double (optional)#

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

  • callback Runnable#

    Обратный вызов, который выполняет действие, вызывающее событие.

Returns


workers

Added before v1.9 page.workers

Этот метод возвращает всех выделенных WebWorkers, связанных со страницей.

примечание

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

Usage

Page.workers();

Returns


Properties

clock()

Added in: v1.45 page.clock()

Playwright имеет возможность имитировать часы и ход времени.

Usage

Page.clock()

Returns


keyboard()

Added before v1.9 page.keyboard()

Usage

Page.keyboard()

Returns


mouse()

Added before v1.9 page.mouse()

Usage

Page.mouse()

Returns


request()

Added in: v1.16 page.request()

Помощник для тестирования API, связанный с этой страницей. Этот метод возвращает тот же экземпляр, что и BrowserContext.request() в контексте страницы. См. BrowserContext.request() для получения более подробной информации.

Usage

Page.request()

Returns


touchscreen()

Added before v1.9 page.touchscreen()

Usage

Page.touchscreen()

Returns


Events

onClose(handler)

Added before v1.9 page.onClose(handler)

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

Usage

Page.onClose(handler)

Event data


onConsoleMessage(handler)

Added before v1.9 page.onConsoleMessage(handler)

Вызывается, когда JavaScript на странице вызывает один из методов консольного API, например, console.log или console.dir.

Аргументы, переданные в console.log, доступны в аргументе обработчика события ConsoleMessage.

Usage

page.onConsoleMessage(msg -> {
for (int i = 0; i < msg.args().size(); ++i)
System.out.println(i + ": " + msg.args().get(i).jsonValue());
});
page.evaluate("() => console.log('hello', 5, { foo: 'bar' })");

Event data


onCrash(handler)

Added before v1.9 page.onCrash(handler)

Вызывается, когда страница падает. Страницы браузера могут падать, если они пытаются выделить слишком много памяти. Когда страница падает, текущие и последующие операции будут выдавать ошибку.

Наиболее распространенный способ справиться с падениями - поймать исключение:

try {
// Падение может произойти во время клика.
page.click("button");
// Или во время ожидания события.
page.waitForPopup(() -> {});
} catch (PlaywrightException e) {
// Когда страница падает, сообщение об исключении содержит "crash".
}

Usage

Page.onCrash(handler)

Event data


onDialog(handler)

Added before v1.9 page.onDialog(handler)

Вызывается, когда появляется JavaScript-диалог, такой как alert, prompt, confirm или beforeunload. Слушатель должен либо Dialog.accept(), либо Dialog.dismiss() диалог - в противном случае страница заморозится, ожидая диалога, и действия, такие как клик, никогда не завершатся.

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

page.onDialog(dialog -> {
dialog.accept();
});
примечание

Когда нет слушателей Page.onDialog(handler) или BrowserContext.onDialog(handler), все диалоги автоматически отклоняются.

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


onDOMContentLoaded(handler)

Added in: v1.9 page.onDOMContentLoaded(handler)

Вызывается, когда JavaScript-событие DOMContentLoaded отправляется.

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

Page.onDOMContentLoaded(handler)

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


onDownload(handler)

Added before v1.9 page.onDownload(handler)

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

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

Page.onDownload(handler)

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


onFileChooser(handler)

Added in: v1.9 page.onFileChooser(handler)

Вызывается, когда предполагается появление выбора файла, например, после нажатия на <input type=file>. Playwright может ответить на это, установив файлы ввода с помощью FileChooser.setFiles(), которые могут быть загружены после этого.

page.onFileChooser(fileChooser -> {
fileChooser.setFiles(Paths.get("/tmp/myfile.pdf"));
});

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

Page.onFileChooser(handler)

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


onFrameAttached(handler)

Added in: v1.9 page.onFrameAttached(handler)

Вызывается, когда фрейм присоединяется.

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

Page.onFrameAttached(handler)

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


onFrameDetached(handler)

Added in: v1.9 page.onFrameDetached(handler)

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

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

Page.onFrameDetached(handler)

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


onFrameNavigated(handler)

Added in: v1.9 page.onFrameNavigated(handler)

Вызывается, когда фрейм переходит на новый URL.

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

Page.onFrameNavigated(handler)

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


onLoad(handler)

Added before v1.9 page.onLoad(handler)

Вызывается, когда JavaScript-событие load отправляется.

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

Page.onLoad(handler)

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


onPageError(handler)

Added in: v1.9 page.onPageError(handler)

Вызывается, когда на странице происходит необработанное исключение.

// Логировать все необработанные ошибки в терминал
page.onPageError(exception -> {
System.out.println("Uncaught exception: " + exception);
});

// Перейти на страницу с исключением.
page.navigate("data:text/html,<script>throw new Error('Test')</script>");

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

Page.onPageError(handler)

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


onPopup(handler)

Added before v1.9 page.onPopup(handler)

Вызывается, когда страница открывает новую вкладку или окно. Это событие вызывается в дополнение к BrowserContext.onPage(handler), но только для всплывающих окон, относящихся к этой странице.

Самый ранний момент, когда страница доступна, это когда она перешла на начальный URL. Например, при открытии всплывающего окна с window.open('http://example.com'), это событие сработает, когда сетевой запрос к "http://example.com" будет выполнен и его ответ начнет загружаться во всплывающем окне. Если вы хотите маршрутизировать/слушать этот сетевой запрос, используйте BrowserContext.route() и BrowserContext.onRequest(handler) соответственно вместо аналогичных методов на Page.

Page popup = page.waitForPopup(() -> {
page.getByText("open the popup").click();
});
System.out.println(popup.evaluate("location.href"));
примечание

Используйте Page.waitForLoadState(), чтобы дождаться, пока страница достигнет определенного состояния (в большинстве случаев это не потребуется).

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

Page.onPopup(handler)

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


onRequest(handler)

Added before v1.9 page.onRequest(handler)

Вызывается, когда страница выполняет запрос. Объект request доступен только для чтения. Чтобы перехватывать и изменять запросы, смотрите Page.route() или BrowserContext.route().

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

Page.onRequest(handler)

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


onRequestFailed(handler)

Added in: v1.9 page.onRequestFailed(handler)

Вызывается, когда запрос не удается, например, из-за истечения времени ожидания.

page.onRequestFailed(request -> {
System.out.println(request.url() + " " + request.failure());
});
примечание

Ответы с ошибками HTTP, такие как 404 или 503, все еще считаются успешными ответами с точки зрения HTTP, поэтому запрос завершится событием Page.onRequestFinished(handler), а не Page.onRequestFailed(handler). Запрос будет считаться неудачным только в том случае, если клиент не может получить HTTP-ответ от сервера, например, из-за сетевой ошибки net::ERR_FAILED.

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

Page.onRequestFailed(handler)

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


onRequestFinished(handler)

Added in: v1.9 page.onRequestFinished(handler)

Вызывается, когда запрос успешно завершается после загрузки тела ответа. Для успешного ответа последовательность событий: request, response и requestfinished.

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

Page.onRequestFinished(handler)

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


onResponse(handler)

Added before v1.9 page.onResponse(handler)

Вызывается, когда response статус и заголовки получены для запроса. Для успешного ответа последовательность событий: request, response и requestfinished.

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

Page.onResponse(handler)

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


onWebSocket(handler)

Added in: v1.9 page.onWebSocket(handler)

Вызывается, когда отправляется запрос WebSocket.

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

Page.onWebSocket(handler)

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


onWorker(handler)

Added before v1.9 page.onWorker(handler)

Вызывается, когда страница порождает выделенный WebWorker.

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

Page.onWorker(handler)

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


Устарело

check

Added before v1.9 page.check
Не рекомендуется

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

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

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

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

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

Page.check(selector);
Page.check(selector, options);

Аргументы

  • selector String#

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

  • options Page.CheckOptions (опционально)

    • setForce boolean (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Устарело

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

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

    • setPosition Position (опционально) Added in: v1.11#

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

    • setStrict boolean (опционально) Added in: v1.14#

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

    • setTimeout double (опционально)#

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

    • setTrial boolean (опционально) Added in: v1.11#

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

Возвращает


click

Added before v1.9 page.click
Не рекомендуется

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

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

  1. Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в вид, если это необходимо.
  4. Используйте Page.mouse(), чтобы кликнуть в центр элемента или в указанную setPosition.
  5. Подождите, пока инициированные навигации либо не завершатся успешно, либо не завершатся с ошибкой, если только не установлена опция setNoWaitAfter.

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

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

Page.click(selector);
Page.click(selector, options);

Аргументы

  • selector String#

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

  • options Page.ClickOptions (опционально)

    • setButton enum MouseButton { LEFT, RIGHT, MIDDLE } (опционально)#

      По умолчанию left.

    • setClickCount int (опционально)#

      по умолчанию 1. См. UIEvent.detail.

    • setDelay double (опционально)#

      Время ожидания между mousedown и mouseup в миллисекундах. По умолчанию 0.

    • setForce boolean (опционально)#

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

    • setModifiers List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }> (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Устарело

      Эта опция по умолчанию будет true в будущем.

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

    • setPosition Position (опционально)#

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

    • setStrict boolean (опционально) Added in: v1.14#

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

    • setTimeout double (опционально)#

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

    • setTrial boolean (опционально) Added in: v1.11#

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

Возвращает


dblclick

Added before v1.9 page.dblclick
Не рекомендуется

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

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

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

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

примечание

page.dblclick() отправляет два события click и одно событие dblclick.

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

Page.dblclick(selector);
Page.dblclick(selector, options);

Аргументы

  • selector String#

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

  • options Page.DblclickOptions (опционально)

    • setButton enum MouseButton { LEFT, RIGHT, MIDDLE } (опционально)#

      По умолчанию left.

    • setDelay double (опционально)#

      Время ожидания между mousedown и mouseup в миллисекундах. По умолчанию 0.

    • setForce boolean (опционально)#

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

    • setModifiers List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }> (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Устарело

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

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

    • setPosition Position (опционально)#

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

    • setStrict boolean (опционально) Added in: v1.14#

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

    • setTimeout double (опционально)#

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

    • setTrial boolean (опционально) Added in: v1.11#

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

Возвращает


dispatchEvent

Added before v1.9 page.dispatchEvent
Discouraged

Use locator-based Locator.dispatchEvent() instead. Read more about locators.

Пример ниже отправляет событие click на элемент. Независимо от состояния видимости элемента, click отправляется. Это эквивалентно вызову element.click().

Usage

page.dispatchEvent("button#submit", "click");

Внутри создается экземпляр события на основе указанного type, инициализируется с помощью свойств eventInit и отправляется на элемент. События по умолчанию composed, cancelable и всплывают.

Поскольку eventInit специфичен для события, пожалуйста, обратитесь к документации по событиям для списков начальных свойств:

Вы также можете указать JSHandle в качестве значения свойства, если хотите, чтобы живые объекты передавались в событие:

// Обратите внимание, что вы можете создать DataTransfer только в Chromium и Firefox
JSHandle dataTransfer = page.evaluateHandle("() => new DataTransfer()");
Map<String, Object> arg = new HashMap<>();
arg.put("dataTransfer", dataTransfer);
page.dispatchEvent("#source", "dragstart", arg);

Arguments

  • selector String#

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

  • type String#

    Тип DOM события: "click", "dragstart", и т.д.

  • eventInit EvaluationArgument (optional)#

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

  • options Page.DispatchEventOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


evalOnSelector

Added in: v1.9 page.evalOnSelector
Discouraged

This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests. Use Locator.evaluate(), other Locator helper methods or web-first assertions instead.

Метод находит элемент, соответствующий указанному селектору на странице, и передает его в качестве первого аргумента в expression. Если ни один элемент не соответствует селектору, метод выдает ошибку. Возвращает значение expression.

Если expression возвращает Promise, то Page.evalOnSelector() будет ждать разрешения промиса и вернет его значение.

Usage

String searchValue = (String) page.evalOnSelector("#search", "el => el.value");
String preloadHref = (String) page.evalOnSelector("link[rel=preload]", "el => el.href");
String html = (String) page.evalOnSelector(".main-container", "(e, suffix) => e.outerHTML + suffix", "hello");

Arguments

  • selector String#

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

  • expression String#

    JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

  • arg EvaluationArgument (optional)#

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

  • options Page.EvalOnSelectorOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

Returns


evalOnSelectorAll

Added in: v1.9 page.evalOnSelectorAll
Discouraged

In most cases, Locator.evaluateAll(), other Locator helper methods and web-first assertions do a better job.

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

Если expression возвращает Promise, то Page.evalOnSelectorAll() будет ждать разрешения промиса и вернет его значение.

Usage

boolean divCounts = (boolean) page.evalOnSelectorAll("div", "(divs, min) => divs.length >= min", 10);

Arguments

  • selector String#

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

  • expression String#

    JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

  • arg EvaluationArgument (optional)#

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

Returns


fill

Added before v1.9 page.fill
Discouraged

Use locator-based Locator.fill() instead. Read more about locators.

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

Если целевой элемент не является <input>, <textarea> или [contenteditable] элементом, этот метод выдает ошибку. Однако, если элемент находится внутри элемента <label>, который имеет связанный control, будет заполнен именно этот элемент управления.

Для отправки более детализированных событий клавиатуры используйте Locator.pressSequentially().

Usage

Page.fill(selector, value);
Page.fill(selector, value, options);

Arguments

  • selector String#

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

  • value String#

    Значение для заполнения элемента <input>, <textarea> или [contenteditable].

  • options Page.FillOptions (optional)

    • setForce boolean (optional) Added in: v1.13#

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

    • setNoWaitAfter boolean (optional)#

      Deprecated

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

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

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


focus

Added before v1.9 page.focus
Discouraged

Use locator-based Locator.focus() instead. Read more about locators.

Этот метод получает элемент с selector и фокусируется на нем. Если нет элемента, соответствующего selector, метод ждет, пока соответствующий элемент не появится в DOM.

Usage

Page.focus(selector);
Page.focus(selector, options);

Arguments

  • selector String#

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

  • options Page.FocusOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


getAttribute

Added before v1.9 page.getAttribute
Discouraged

Use locator-based Locator.getAttribute() instead. Read more about locators.

Возвращает значение атрибута элемента.

Usage

Page.getAttribute(selector, name);
Page.getAttribute(selector, name, options);

Arguments

  • selector String#

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

  • name String#

    Имя атрибута, для которого нужно получить значение.

  • options Page.GetAttributeOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


hover

Added before v1.9 page.hover
Discouraged

Use locator-based Locator.hover() instead. Read more about locators.

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

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

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

Usage

Page.hover(selector);
Page.hover(selector, options);

Arguments

  • selector String#

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

  • options Page.HoverOptions (optional)

    • setForce boolean (optional)#

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

    • setModifiers List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }> (optional)#

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

    • setNoWaitAfter boolean (optional) Added in: v1.28#

      Deprecated

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

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

    • setPosition Position (optional)#

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

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

    • setTrial boolean (optional) Added in: v1.11#

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

Returns


innerHTML

Added before v1.9 page.innerHTML
Discouraged

Use locator-based Locator.innerHTML() instead. Read more about locators.

Возвращает element.innerHTML.

Usage

Page.innerHTML(selector);
Page.innerHTML(selector, options);

Arguments

  • selector String#

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

  • options Page.InnerHTMLOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


innerText

Added before v1.9 page.innerText
Discouraged

Use locator-based Locator.innerText() instead. Read more about locators.

Возвращает element.innerText.

Usage

Page.innerText(selector);
Page.innerText(selector, options);

Arguments

  • selector String#

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

  • options Page.InnerTextOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


inputValue

Added in: v1.13 page.inputValue
Discouraged

Use locator-based Locator.inputValue() instead. Read more about locators.

Возвращает input.value для выбранного элемента <input>, <textarea> или <select>.

Выдает ошибку для не-вводных элементов. Однако, если элемент находится внутри элемента <label>, который имеет связанный control, возвращает значение этого элемента управления.

Usage

Page.inputValue(selector);
Page.inputValue(selector, options);

Arguments

  • selector String#

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

  • options Page.InputValueOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


isChecked

Added before v1.9 page.isChecked
Discouraged

Use locator-based Locator.isChecked() instead. Read more about locators.

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

Usage

Page.isChecked(selector);
Page.isChecked(selector, options);

Arguments

  • selector String#

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

  • options Page.IsCheckedOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


isDisabled

Added before v1.9 page.isDisabled
Discouraged

Use locator-based Locator.isDisabled() instead. Read more about locators.

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

Usage

Page.isDisabled(selector);
Page.isDisabled(selector, options);

Arguments

  • selector String#

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

  • options Page.IsDisabledOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


isEditable

Added before v1.9 page.isEditable
Discouraged

Use locator-based Locator.isEditable() instead. Read more about locators.

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

Usage

Page.isEditable(selector);
Page.isEditable(selector, options);

Arguments

  • selector String#

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

  • options Page.IsEditableOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


isEnabled

Added before v1.9 page.isEnabled
Discouraged

Use locator-based Locator.isEnabled() instead. Read more about locators.

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

Usage

Page.isEnabled(selector);
Page.isEnabled(selector, options);

Arguments

  • selector String#

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

  • options Page.IsEnabledOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


isHidden

Added before v1.9 page.isHidden
Discouraged

Use locator-based Locator.isHidden() instead. Read more about locators.

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

Usage

Page.isHidden(selector);
Page.isHidden(selector, options);

Arguments

  • selector String#

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

  • options Page.IsHiddenOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

      Deprecated

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

Returns


isVisible

Added before v1.9 page.isVisible
Discouraged

Use locator-based Locator.isVisible() instead. Read more about locators.

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

Usage

Page.isVisible(selector);
Page.isVisible(selector, options);

Arguments

  • selector String#

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

  • options Page.IsVisibleOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

      Deprecated

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

Returns


press

Added before v1.9 page.press
Discouraged

Use locator-based Locator.press() instead. Read more about locators.

Фокусируется на элементе, а затем использует Keyboard.down() и Keyboard.up().

key может указывать предполагаемое значение keyboardEvent.key или один символ для генерации текста. Надмножество значений key можно найти здесь. Примеры клавиш:

F1 - F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight, ArrowUp и т.д.

Также поддерживаются следующие модификационные сочетания: Shift, Control, Alt, Meta, ShiftLeft, ControlOrMeta. ControlOrMeta разрешается в Control на Windows и Linux и в Meta на macOS.

Удержание Shift будет вводить текст, соответствующий key в верхнем регистре.

Если key является одним символом, он чувствителен к регистру, поэтому значения a и A будут генерировать разные соответствующие тексты.

Также поддерживаются сочетания клавиш, такие как key: "Control+o", key: "Control++ или key: "Control+Shift+T". При указании с модификатором, модификатор нажимается и удерживается, пока не будет нажата последующая клавиша.

Usage

Page page = browser.newPage();
page.navigate("https://keycode.info");
page.press("body", "A");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("A.png")));
page.press("body", "ArrowLeft");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("ArrowLeft.png" )));
page.press("body", "Shift+O");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("O.png" )));

Arguments

  • selector String#

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

  • key String#

    Имя клавиши для нажатия или символ для генерации, например, ArrowLeft или a.

  • options Page.PressOptions (optional)

    • setDelay double (optional)#

      Время ожидания между keydown и keyup в миллисекундах. По умолчанию 0.

    • setNoWaitAfter boolean (optional)#

      Deprecated

      Этот параметр по умолчанию будет true в будущем.

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

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


querySelector

Added in: v1.9 page.querySelector
Discouraged

Use locator-based Page.locator() instead. Read more about locators.

Метод находит элемент, соответствующий указанному селектору на странице. Если ни один элемент не соответствует селектору, возвращаемое значение разрешается в null. Чтобы дождаться элемента на странице, используйте Locator.waitFor().

Usage

Page.querySelector(selector);
Page.querySelector(selector, options);

Arguments

  • selector String#

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

  • options Page.QuerySelectorOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

Returns


querySelectorAll

Added in: v1.9 page.querySelectorAll
Discouraged

Use locator-based Page.locator() instead. Read more about locators.

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

Usage

Page.querySelectorAll(selector);

Arguments

  • selector String#

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

Returns


selectOption

Added before v1.9 page.selectOption
Discouraged

Use locator-based Locator.selectOption() instead. Read more about locators.

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

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

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

Вызывает событие change и input, как только все предоставленные опции были выбраны.

Usage

// Single selection matching the value or label
page.selectOption("select#colors", "blue");
// single selection matching both the value and the label
page.selectOption("select#colors", new SelectOption().setLabel("Blue"));
// multiple selection
page.selectOption("select#colors", new String[] {"red", "green", "blue"});

Arguments

  • selector String#

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

  • values null | String | ElementHandle | String[] | SelectOption | ElementHandle[] | SelectOption[]#

    • setValue String (optional)

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

    • setLabel String (optional)

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

    • setIndex int (optional)

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

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

  • options Page.SelectOptionOptions (optional)

    • setForce boolean (optional) Added in: v1.13#

      Обойти проверки actionability. По умолчанию false.

    • setNoWaitAfter boolean (optional)#

      Deprecated

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

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

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


setChecked

Added in: v1.15 page.setChecked
Discouraged

Use locator-based Locator.setChecked() instead. Read more about locators.

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

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

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

Usage

Page.setChecked(selector, checked);
Page.setChecked(selector, checked, options);

Arguments

  • selector String#

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

  • checked boolean#

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

  • options Page.SetCheckedOptions (optional)

    • setForce boolean (optional)#

      Обойти проверки actionability. По умолчанию false.

    • setNoWaitAfter boolean (optional)#

      Deprecated

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

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

    • setPosition Position (optional)#

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

    • setStrict boolean (optional)#

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

    • setTimeout double (optional)#

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

    • setTrial boolean (optional)#

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

Returns


setInputFiles

Added before v1.9 page.setInputFiles
Discouraged

Use locator-based Locator.setInputFiles() instead. Read more about locators.

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

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

Usage

Page.setInputFiles(selector, files);
Page.setInputFiles(selector, files, options);

Arguments

  • selector String#

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

  • files Path | Path[] | FilePayload | FilePayload[]#

    • setName String

      Имя файла

    • setMimeType String

      Тип файла

    • setBuffer byte[]

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

  • options Page.SetInputFilesOptions (optional)

    • setNoWaitAfter boolean (optional)#

      Deprecated

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

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

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


tap

Added before v1.9 page.tap
Discouraged

Use locator-based Locator.tap() instead. Read more about locators.

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

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

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

примечание

Метод Page.tap() выбросит исключение, если параметр setHasTouch контекста браузера равен false.

Usage

Page.tap(selector);
Page.tap(selector, options);

Arguments

  • selector String#

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

  • options Page.TapOptions (optional)

    • setForce boolean (optional)#

      Обойти проверки actionability. По умолчанию false.

    • setModifiers List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }> (optional)#

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

    • setNoWaitAfter boolean (optional)#

      Deprecated

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

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

    • setPosition Position (optional)#

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

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

    • setTrial boolean (optional) Added in: v1.11#

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

Returns


textContent

Added before v1.9 page.textContent
Discouraged

Use locator-based Locator.textContent() instead. Read more about locators.

Возвращает element.textContent.

Usage

Page.textContent(selector);
Page.textContent(selector, options);

Arguments

  • selector String#

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

  • options Page.TextContentOptions (optional)

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


type

Added before v1.9 page.type
Deprecated

In most cases, you should use Locator.fill() instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use Locator.pressSequentially().

Отправляет событие keydown, keypress/input и keyup для каждого символа в тексте. page.type может использоваться для отправки детализированных событий клавиатуры. Для заполнения значений в полях формы используйте Page.fill().

Чтобы нажать специальную клавишу, такую как Control или ArrowDown, используйте Keyboard.press().

Usage

Arguments

  • selector String#

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

  • text String#

    Текст для ввода в фокусированный элемент.

  • options Page.TypeOptions (optional)

    • setDelay double (optional)#

      Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию 0.

    • setNoWaitAfter boolean (optional)#

      Deprecated

      This option has no effect.

      This option has no effect.

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


uncheck

Added before v1.9 page.uncheck
Discouraged

Use locator-based Locator.uncheck() instead. Read more about locators.

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

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

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

Usage

Page.uncheck(selector);
Page.uncheck(selector, options);

Arguments

  • selector String#

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

  • options Page.UncheckOptions (optional)

    • setForce boolean (optional)#

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

    • setNoWaitAfter boolean (optional)#

      Deprecated

      This option has no effect.

      This option has no effect.

    • setPosition Position (optional) Added in: v1.11#

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

    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

    • setTrial boolean (optional) Added in: v1.11#

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

Returns


waitForNavigation

Added before v1.9 page.waitForNavigation
Deprecated

This method is inherently racy, please use Page.waitForURL() instead.

Ожидает навигации основного фрейма и возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления. В случае навигации к другому якорю или навигации из-за использования History API, навигация будет разрешена с null.

Usage

Это разрешается, когда страница переходит на новый URL или перезагружается. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию страницы. Например, цель клика имеет обработчик onclick, который вызывает навигацию из setTimeout. Рассмотрим этот пример:

// Метод возвращается после завершения навигации
Response response = page.waitForNavigation(() -> {
// Это действие вызывает навигацию после тайм-аута.
page.getByText("Navigate after timeout").click();
});
примечание

Использование History API для изменения URL считается навигацией.

Arguments

  • options Page.WaitForNavigationOptions (optional)

    • setTimeout double (optional)#

      Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте 0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout().

    • setUrl String | Pattern | Predicate<String> (optional)#

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

    • setWaitUntil enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT } (optional)#

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

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

    Обратный вызов, выполняющий действие, вызывающее событие.

Returns


waitForSelector

Added before v1.9 page.waitForSelector
Discouraged

Use web assertions that assert visibility or a locator-based Locator.waitFor() instead. Read more about locators.

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

примечание

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

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

Usage

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

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType chromium = playwright.chromium();
Browser browser = chromium.launch();
Page page = browser.newPage();
for (String currentURL : Arrays.asList("https://google.com", "https://bbc.com")) {
page.navigate(currentURL);
ElementHandle element = page.waitForSelector("img");
System.out.println("Loaded image: " + element.getAttribute("src"));
}
browser.close();
}
}
}

Arguments

  • selector String#

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

  • options Page.WaitForSelectorOptions (optional)

    • setState enum WaitForSelectorState { ATTACHED, DETACHED, VISIBLE, HIDDEN } (optional)#

      По умолчанию 'visible'. Может быть:

      • 'attached' - ожидание, пока элемент будет присутствовать в DOM.
      • 'detached' - ожидание, пока элемент не будет присутствовать в DOM.
      • 'visible' - ожидание, пока элемент не будет иметь пустую рамку и не будет visibility:hidden. Обратите внимание, что элемент без содержимого или с display:none имеет пустую рамку и не считается видимым.
      • 'hidden' - ожидание, пока элемент не будет отсоединен от DOM, или не будет иметь пустую рамку или visibility:hidden. Это противоположно опции 'visible'.
    • setStrict boolean (optional) Added in: v1.14#

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

    • setTimeout double (optional)#

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

Returns


waitForTimeout

Added before v1.9 page.waitForTimeout
Discouraged

Never wait for timeout in production. Tests that wait for time are inherently flaky. Use Locator actions and web assertions that wait automatically.

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

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

Usage

// ожидание 1 секунду
page.waitForTimeout(1000);

Arguments

  • timeout double#

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

Returns