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

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.

Возвращает


consoleMessages

Добавлено в: v1.56 page.consoleMessages

Возвращает до (на данный момент) 200 последних сообщений консоли на этой странице. Подробнее см. Page.onConsoleMessage(handler).

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

Page.consoleMessages();

Возвращает


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#

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

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

      Значение по умолчанию — 1. Отправляет n интерполированных событий mousemove, чтобы представить перемещение между mousedown и mouseup при перетаскивании. При значении 1 испускает одно событие mousemove в конечной точке.

    • 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

Добавлено до 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 (опционально)

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

      Устарело

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

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

Возвращает


exposeFunction

Добавлено до 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

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

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

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

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

Аргументы

  • name String Добавлено в: v1.9#

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

Возвращает


frameByUrl

Добавлено в: v1.9 page.frameByUrl

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

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

Page.frameByUrl(url);

Аргументы

  • url String | Pattern | Predicate<String>#

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

Возвращает


frameLocator

Добавлено в: 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

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

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

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

Page.frames();

Возвращает


getByAltText

Добавлено в: v1.27 page.getByAltText

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

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

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

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

Аргументы

  • text String | Pattern#

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

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

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

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

Возвращает


getByLabel

Добавлено в: 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 (опционально)

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

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

Возвращает


getByPlaceholder

Добавлено в: 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 (опционально)

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

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

Возвращает


getByRole

Добавлено в: 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 (опционально)

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

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

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

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

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

      примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Возвращает

Детали

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

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


getByTestId

Добавлено в: v1.27 page.getByTestId

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

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

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

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

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

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

Аргументы

  • testId String | Pattern#

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

Возвращает

Детали

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


getByText

Добавлено в: 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 (опционально)

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

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

Возвращает

Детали

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

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


getByTitle

Добавлено в: 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 (опционально)

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

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

Возвращает


goBack

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

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

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

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

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

Аргументы

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

Возвращает


goForward

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

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

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

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

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

Аргументы

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

Возвращает


isClosed

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

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

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

Page.isClosed();

Возвращает


locator

Добавлено в: v1.14 page.locator

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

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

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

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

Аргументы

  • selector String#

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

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

    • setHas Locator (опционально)#

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

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

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

    • setHasNot Locator (опционально) Добавлено в: v1.33#

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

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

    • setHasNotText String | Pattern (опционально) Добавлено в: v1.33#

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

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

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

Возвращает


mainFrame

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

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

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

Page.mainFrame();

Возвращает


navigate

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

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

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

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

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

примечание

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

примечание

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

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

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

Аргументы

  • url String#

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

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

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

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

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

Возвращает


onceDialog

Добавлено в: 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:')"));

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

Page.onceDialog(handler);

Аргументы


opener

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

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

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

Page.opener();

Возвращает


pageErrors

Добавлено в: v1.56 page.pageErrors

Возвращает до (на данный момент) 200 последних ошибок страницы на этой странице. Подробнее см. Page.onPageError(handler).

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

Page.pageErrors();

Возвращает


pause

Добавлено в: v1.9 page.pause

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

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

примечание

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

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

Page.pause();

Возвращает


pdf

Добавлено до 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, чтобы принудительно отобразить точные цвета.

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

// Генерирует 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. Стили страницы не видны внутри шаблонов.

Аргументы

  • options Page.PdfOptions (опционально)
    • setDisplayHeaderFooter boolean (опционально)#

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

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

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

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

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

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

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

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

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

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

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

    • setMargin Margin (опционально)#

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Возвращает


reload

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

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

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

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

Аргументы

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

Возвращает


removeLocatorHandler

Добавлено в: v1.44 page.removeLocatorHandler

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

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

Page.removeLocatorHandler(locator);

Аргументы

Возвращает


requestGC

Добавлено в: 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()"));

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

Page.requestGC();

Возвращает


requests

Добавлено в: v1.56 page.requests

Возвращает до (на данный момент) 100 последних сетевых запросов со страницы. Подробнее см. Page.onRequest(handler).

К возвращённым запросам следует обращаться сразу, иначе они могут быть собраны (garbage-collected), чтобы предотвратить неограниченный рост памяти по мере поступления новых запросов. После сборки получить большую часть информации о запросе невозможно.

Обратите внимание: запросы, сообщаемые через Page.onRequest(handler), не собираются, поэтому здесь есть компромисс между эффективным использованием памяти при Page.requests() и объёмом доступной информации, сообщаемой через Page.onRequest(handler).

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

Page.requests();

Возвращает


route

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

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

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

примечание

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

примечание

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

примечание

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

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

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

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-кэш.

Аргументы

  • url String | Pattern | Predicate<String>#

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

  • handler Consumer<Route>#

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

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

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

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

Возвращает


routeFromHAR

Добавлено в: 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 } (опционально) Добавлено в: v1.32#

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

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

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

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

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

Возвращает


routeWebSocket

Добавлено в: 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

Добавлено до 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 (опционально) Добавлено в: 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 (опционально) Добавлено в: v1.41#

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

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

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

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

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

Возвращает


setContent

Добавлено до 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

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

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

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

Page.setDefaultNavigationTimeout(timeout);

Аргументы

  • timeout double#

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


setDefaultTimeout

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

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

примечание

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

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

Page.setDefaultTimeout(timeout);

Аргументы

  • timeout double#

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


setExtraHTTPHeaders

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

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

примечание

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

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

Page.setExtraHTTPHeaders(headers);

Аргументы

  • headers Map<String, String>#

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

Возвращает


setViewportSize

Добавлено до 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 Добавлено в: v1.10#

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

  • height int Добавлено в: v1.10#

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

Возвращает


title

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

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

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

Page.title();

Возвращает


unroute

Добавлено до 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

Добавлено в: v1.41 page.unrouteAll

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

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

Page.unrouteAll();

Возвращает


url

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

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

Page.url();

Возвращает


video

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

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

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

Page.video();

Возвращает


viewportSize

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

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

Page.viewportSize();

Возвращает

  • null | ViewportSize#
    • width int

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

    • height int

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


waitForClose

Добавлено в: v1.11 page.waitForClose

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

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

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

Аргументы

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

    • setTimeout double (опционально) Добавлено в: v1.9#

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

  • callback Runnable Добавлено в: v1.9#

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

Возвращает


waitForCondition

Добавлено в: 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

Добавлено в: 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

Добавлено в: 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

Добавлено в: v1.9 page.waitForFileChooser

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

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

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

Аргументы

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

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

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

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

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

  • callback Runnable#

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

Возвращает


waitForFunction

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

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

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

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

Аргументы

  • expression String#

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

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

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

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

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

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

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

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

Возвращает


waitForLoadState

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

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

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

примечание

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

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

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()); // Всплывающее окно готово к использованию.

Аргументы

  • state enum LoadState { LOAD, DOMCONTENTLOADED, NETWORKIDLE } (опционально)#

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

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

Возвращает


waitForPopup

Добавлено в: v1.9 page.waitForPopup

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

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

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

Аргументы

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

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

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

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

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

  • callback Runnable#

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

Возвращает


waitForRequest

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

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

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

// Ожидает следующего запроса с указанным 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();
});

Аргументы

  • urlOrPredicate String | Pattern | Predicate<Request>#

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

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

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

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

  • callback Runnable Добавлено в: v1.9#

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

Возвращает


waitForRequestFinished

Добавлено в: v1.12 page.waitForRequestFinished

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

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

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

Аргументы

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

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

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

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

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

  • callback Runnable#

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

Возвращает


waitForResponse

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

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

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

// Ожидает следующего ответа с указанным 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();
});

Аргументы

  • urlOrPredicate String | Pattern | Predicate<Response>#

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

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

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

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

  • callback Runnable Добавлено в: v1.9#

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

Возвращает


waitForURL

Добавлено в: v1.11 page.waitForURL

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

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

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

Аргументы

  • url String | Pattern | Predicate<String>#

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

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

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

Возвращает


waitForWebSocket

Добавлено в: v1.9 page.waitForWebSocket

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

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

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

Аргументы

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

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

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

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

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

  • callback Runnable#

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

Возвращает


waitForWorker

Добавлено в: v1.9 page.waitForWorker

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

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

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

Аргументы

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

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

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

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

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

  • callback Runnable#

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

Возвращает


workers

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

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

примечание

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

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

Page.workers();

Возвращает


Properties

clock()

Добавлено в: v1.45 page.clock()

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

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

Page.clock()

Возвращает


keyboard()

Добавлено до v1.9 page.keyboard()

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

Page.keyboard()

Возвращает


mouse()

Добавлено до v1.9 page.mouse()

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

Page.mouse()

Возвращает


request()

Добавлено в: v1.16 page.request()

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

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

Page.request()

Возвращает


touchscreen()

Добавлено до v1.9 page.touchscreen()

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

Page.touchscreen()

Возвращает


Events

onClose(handler)

Добавлено до v1.9 page.onClose(handler)

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

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

Page.onClose(handler)

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


onConsoleMessage(handler)

Добавлено до v1.9 page.onConsoleMessage(handler)

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

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

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

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' })");

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


onCrash(handler)

Добавлено до v1.9 page.onCrash(handler)

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

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

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

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

Page.onCrash(handler)

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


onDialog(handler)

Добавлено до 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)

Добавлено в: v1.9 page.onDOMContentLoaded(handler)

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

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

Page.onDOMContentLoaded(handler)

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


onDownload(handler)

Добавлено до v1.9 page.onDownload(handler)

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

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

Page.onDownload(handler)

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


onFileChooser(handler)

Добавлено в: 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)

Добавлено в: v1.9 page.onFrameAttached(handler)

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

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

Page.onFrameAttached(handler)

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


onFrameDetached(handler)

Добавлено в: v1.9 page.onFrameDetached(handler)

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

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

Page.onFrameDetached(handler)

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


onFrameNavigated(handler)

Добавлено в: v1.9 page.onFrameNavigated(handler)

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

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

Page.onFrameNavigated(handler)

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


onLoad(handler)

Добавлено до v1.9 page.onLoad(handler)

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

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

Page.onLoad(handler)

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


onPageError(handler)

Добавлено в: 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)

Добавлено до 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)

Добавлено до v1.9 page.onRequest(handler)

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

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

Page.onRequest(handler)

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


onRequestFailed(handler)

Добавлено в: 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)

Добавлено в: v1.9 page.onRequestFinished(handler)

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

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

Page.onRequestFinished(handler)

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


onResponse(handler)

Добавлено до v1.9 page.onResponse(handler)

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

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

Page.onResponse(handler)

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


onWebSocket(handler)

Добавлено в: v1.9 page.onWebSocket(handler)

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

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

Page.onWebSocket(handler)

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


onWorker(handler)

Добавлено до v1.9 page.onWorker(handler)

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

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

Page.onWorker(handler)

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


Устарело

check

Добавлено до 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 (опционально) Добавлено в: v1.11#

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

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

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

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

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

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

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

Возвращает


click

Добавлено до 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 (опционально) Добавлено в: v1.14#

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

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

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

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

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

Возвращает


dblclick

Добавлено до 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 (опционально) Добавлено в: v1.14#

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

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

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

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

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

Возвращает


dispatchEvent

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

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

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

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

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

Аргументы

  • selector String#

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

  • type String#

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

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

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

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

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

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

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

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

Возвращает


evalOnSelector

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

Этот метод не ждёт, пока элемент пройдёт проверки готовности к действию (actionability checks), поэтому может приводить к нестабильным (flaky) тестам. Вместо этого используйте Locator.evaluate(), другие вспомогательные методы Locator или web-first assertions.

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

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

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

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

Аргументы

  • selector String#

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

  • expression String#

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

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

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

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

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

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

Возвращает


evalOnSelectorAll

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

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

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

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

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

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

Аргументы

  • selector String#

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

  • expression String#

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

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

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

Возвращает


fill

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

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

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

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

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

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

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

Аргументы

  • selector String#

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

  • value String#

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

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

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

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

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

      Устарело

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

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

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

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

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

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

Возвращает


focus

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

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

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

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

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

Аргументы

  • selector String#

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

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

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

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

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

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

Возвращает


getAttribute

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

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

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

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

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

Аргументы

  • selector String#

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

  • name String#

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

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

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

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

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

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

Возвращает


hover

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

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

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

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

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

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

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

Аргументы

  • selector String#

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

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

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

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

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

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

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

      Устарело

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

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

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

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

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

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

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

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

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

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

Возвращает


innerHTML

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

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

Возвращает element.innerHTML.

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

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

Аргументы

  • selector String#

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

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

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

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

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

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

Возвращает


innerText

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

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

Возвращает element.innerText.

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

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

Аргументы

  • selector String#

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

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

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

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

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

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

Возвращает


inputValue

Добавлено в: v1.13 page.inputValue
Не рекомендуется

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

Возвращает input.value для выбранного элемента <input>, <textarea> или <select>.

Выдает ошибку для не-вводных элементов. Однако, если элемент находится внутри элемента <label>, который имеет связанный control, возвращает значение этого элемента управления.

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

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

Аргументы

  • selector String#

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

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

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

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

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

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

Возвращает


isChecked

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

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

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

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

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

Аргументы

  • selector String#

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

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

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

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

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

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

Возвращает


isDisabled

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

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

Возвращает, отключен ли элемент, противоположность enabled.

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

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

Аргументы

  • selector String#

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

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

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

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

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

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

Возвращает


isEditable

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

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

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

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

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

Аргументы

  • selector String#

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

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

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

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

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

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

Возвращает


isEnabled

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

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

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

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

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

Аргументы

  • selector String#

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

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

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

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

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

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

Возвращает


isHidden

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

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

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

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

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

Аргументы

  • selector String#

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

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

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

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

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

      Устарело

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

Возвращает


isVisible

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

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

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

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

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

Аргументы

  • selector String#

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

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

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

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

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

      Устарело

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

Возвращает


press

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

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

Фокусируется на элементе, а затем использует Keyboard.down() и Keyboard.up().

key может указывать предполагаемое значение keyboardEvent.key или один символ для генерации текста. Надмножество значений key можно найти здесь. Примеры клавиш:

F1 - F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight, ArrowUp и т.д.

Также поддерживаются следующие модификационные сочетания: Shift, Control, Alt, Meta, ShiftLeft, ControlOrMeta. ControlOrMeta разрешается в Control на Windows и Linux и в Meta на macOS.

Удержание Shift будет вводить текст, соответствующий key в верхнем регистре.

Если key является одним символом, он чувствителен к регистру, поэтому значения a и A будут генерировать разные соответствующие тексты.

Также поддерживаются сочетания клавиш, такие как key: "Control+o", key: "Control++ или key: "Control+Shift+T". При указании с модификатором, модификатор нажимается и удерживается, пока не будет нажата последующая клавиша.

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

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

Аргументы

  • selector String#

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

  • key String#

    Имя клавиши для нажатия или символ для генерации, например, ArrowLeft или a.

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

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

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

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

      Устарело

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

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

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

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

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

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

Возвращает


querySelector

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

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

Метод находит элемент, соответствующий указанному селектору на странице. Если ни один элемент не соответствует селектору, возвращаемое значение разрешается в null. Чтобы дождаться элемента на странице, используйте Locator.waitFor().

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

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

Аргументы

  • selector String#

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

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

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

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

Возвращает


querySelectorAll

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

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

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

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

Page.querySelectorAll(selector);

Аргументы

  • selector String#

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

Возвращает


selectOption

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

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

Этот метод ожидает элемент, соответствующий selector, ожидает проверки actionability, ждет, пока все указанные опции не будут присутствовать в элементе <select>, и выбирает эти опции.

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

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

Вызывает событие change и input, как только все предоставленные опции были выбраны.

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

// 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"});

Аргументы

  • selector String#

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

  • values null | String | ElementHandle | String[] | SelectOption | ElementHandle[] | SelectOption[]#

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

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

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

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

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

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

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

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

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

      Обойти проверки actionability. По умолчанию false.

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

      Устарело

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

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

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

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

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

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

Возвращает


setChecked

Добавлено в: v1.15 page.setChecked
Не рекомендуется

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

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

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

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

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

Page.setChecked(selector, checked);
Page.setChecked(selector, checked, options);

Аргументы

  • selector String#

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

  • checked boolean#

    Отметить или снять отметку с флажка.

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

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

      Обойти проверки actionability. По умолчанию false.

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

      Устарело

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

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

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

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

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

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

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

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

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

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

Возвращает


setInputFiles

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

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

Устанавливает значение входного файла на эти пути файлов или файлы. Если некоторые из filePaths являются относительными путями, они разрешаются относительно текущего рабочего каталога. Для пустого массива очищает выбранные файлы. Для входов с атрибутом [webkitdirectory] поддерживается только один путь к каталогу.

Этот метод ожидает, что selector указывает на input element. Однако, если элемент находится внутри элемента <label>, который имеет ассоциированный control, будет использован контроль.

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

Page.setInputFiles(selector, files);
Page.setInputFiles(selector, files, options);

Аргументы

  • selector String#

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

  • files Path | Path[] | FilePayload | FilePayload[]#

    • setName String

      Имя файла

    • setMimeType String

      Тип файла

    • setBuffer byte[]

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

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

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

      Устарело

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

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

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

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

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

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

Возвращает


tap

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

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

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

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

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

примечание

Метод Page.tap() выбросит исключение, если параметр setHasTouch контекста браузера равен false.

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

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

Аргументы

  • selector String#

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

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

    • 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 (опционально) Добавлено в: v1.14#

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

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

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

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

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

Возвращает


textContent

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

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

Возвращает element.textContent.

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

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

Аргументы

  • selector String#

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

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

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

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

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

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

Возвращает


type

Добавлено до v1.9 page.type
Устарело

В большинстве случаев вместо этого следует использовать Locator.fill(). Нажимать клавиши по одной нужно только если на странице есть особая обработка клавиатурного ввода — в этом случае используйте Locator.pressSequentially().

Отправляет событие keydown, keypress/input и keyup для каждого символа в тексте. page.type может использоваться для отправки детализированных событий клавиатуры. Для заполнения значений в полях формы используйте Page.fill().

Чтобы нажать специальную клавишу, такую как Control или ArrowDown, используйте Keyboard.press().

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

Аргументы

  • selector String#

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

  • text String#

    Текст для ввода в фокусированный элемент.

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

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

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

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

      Устарело

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

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

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

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

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

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

Возвращает


uncheck

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

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

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

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

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

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

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

Аргументы

  • selector String#

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

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

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

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

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

      Устарело

      Этот параметр ни на что не влияет.

      Этот параметр ни на что не влияет.

    • setPosition Position (опционально) Добавлено в: v1.11#

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

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

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

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

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

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

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

Возвращает


waitForNavigation

Добавлено до v1.9 page.waitForNavigation
Устарело

Этот метод по своей природе подвержен гонкам (race condition), поэтому используйте вместо него Page.waitForURL().

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

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

Это разрешается, когда страница переходит на новый URL или перезагружается. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию страницы. Например, цель клика имеет обработчик onclick, который вызывает навигацию из setTimeout. Рассмотрим этот пример:

// Метод возвращается после завершения навигации
Response response = page.waitForNavigation(() -> {
// Это действие вызывает навигацию после тайм-аута.
page.getByText("Navigate after timeout").click();
});
примечание

Использование History API для изменения URL считается навигацией.

Аргументы

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

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

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

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

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

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

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

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

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

Возвращает


waitForSelector

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

Вместо этого используйте web-assertions, которые проверяют видимость, или вариант на основе локатора — Locator.waitFor(). Подробнее о локаторах.

Возвращает, когда элемент, указанный селектором, удовлетворяет опции setState. Возвращает null, если ожидание для hidden или detached.

примечание

Playwright автоматически ожидает, пока элемент будет готов перед выполнением действия. Использование объектов Locator и веб-первых утверждений делает код свободным от ожидания селектора.

Ожидайте, пока selector не удовлетворит опцию setState (либо появится/исчезнет из DOM, либо станет видимым/скрытым). Если на момент вызова метода selector уже удовлетворяет условию, метод вернется немедленно. Если селектор не удовлетворяет условию в течение setTimeout миллисекунд, функция выбросит исключение.

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

Этот метод работает через навигации:

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

Аргументы

  • selector String#

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

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

    • setState enum WaitForSelectorState { ATTACHED, DETACHED, VISIBLE, HIDDEN } (опционально)#

      По умолчанию 'visible'. Может быть:

      • 'attached' - ожидание, пока элемент будет присутствовать в DOM.
      • 'detached' - ожидание, пока элемент не будет присутствовать в DOM.
      • 'visible' - ожидание, пока элемент не будет иметь пустую рамку и не будет visibility:hidden. Обратите внимание, что элемент без содержимого или с display:none имеет пустую рамку и не считается видимым.
      • 'hidden' - ожидание, пока элемент не будет отсоединен от DOM, или не будет иметь пустую рамку или visibility:hidden. Это противоположно опции 'visible'.
    • setStrict boolean (опционально) Добавлено в: v1.14#

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

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

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

Возвращает


waitForTimeout

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

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

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

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

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

// ожидание 1 секунду
page.waitForTimeout(1000);

Аргументы

  • timeout double#

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

Возвращает