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Добавляет скрипт, который будет выполнен в одном из следующих случаев:
- Каждый раз, когда страница переходит на новый 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(), не определен.
Аргументы
Возвращает
addLocatorHandler
Добавлено в: v1.42При тестировании веб-страницы иногда появляются неожиданные наложения, такие как диалог "Зарегистрироваться", которые блокируют действия, которые вы хотите автоматизировать, например, нажатие кнопки. Эти наложения не всегда появляются одинаково или в одно и то же время, что делает их сложными для обработки в автоматизированных тестах.
Этот метод позволяет вам настроить специальную функцию, называемую обработчиком, которая активируется, когда обнаруживает, что наложение видно. Задача обработчика - удалить наложение, позволяя вашему тесту продолжаться так, как будто наложения не было.
Вещи, которые нужно учитывать:
- Когда наложение показывается предсказуемо, мы рекомендуем явно ожидать его в вашем тесте и закрывать его как часть вашего обычного тестового потока, вместо использования Page.addLocatorHandler().
- Playwright проверяет наличие наложения каждый раз перед выполнением или повторной попыткой действия, требующего проверки возможности действия, или перед выполнением проверки утверждения с автоматическим ожиданием. Когда наложение видно, Playwright сначала вызывает обработчик, а затем продолжает с действием/утверждением. Обратите внимание, что обработчик вызывается только тогда, когда вы выполняете действие/утверждение - если наложение становится видимым, но вы не выполняете никаких действий, обработчик не будет вызван.
- После выполнения обработчика Playwright убедится, что наложение, вызвавшее обработчик, больше не видно. Вы можете отказаться от этого поведения с помощью setNoWaitAfter.
- Время выполнения обработчика учитывается в тайм-ауте действия/утверждения, которое вызвало обработчик. Если ваш обработчик занимает слишком много времени, это может вызвать тайм-ауты.
- Вы можете зарегистрировать несколько обработчиков. Однако в любой момент времени будет выполняться только один обработчик. Убедитесь, что действия внутри обработчика не зависят от другого обработчика.
Выполнение обработчика изменит состояние вашей страницы в середине теста. Например, это изменит текущий фокусированный элемент и переместит мышь. Убедитесь, что действия, выполняемые после обработчика, являются автономными и не зависят от того, что фокус и состояние мыши не изменились.
Например, рассмотрим тест, который вызывает 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));
Аргументы
-
Локатор, который вызывает обработчик.
-
Функция, которая должна быть выполнена, как только локатор появится. Эта функция должна избавиться от элемента, который блокирует действия, такие как клик.
-
options
Page.AddLocatorHandlerOptions
(опционально)-
setNoWaitAfter
boolean (опционально) Добавлено в: v1.44#По умолчанию, после вызова обработчика Playwright будет ждать, пока наложение не станет скрытым, и только затем продолжит с действием/утверждением, которое вызвало обработчик. Эта опция позволяет отказаться от этого поведения, так что наложение может оставаться видимым после выполнения обработчика.
-
setTimes
int (опционально) Добавлено в: v1.44#Указывает максимальное количество раз, которое этот обработчик должен быть вызван. По умолчанию неограниченно.
-
Возвращает
addScriptTag
Добавлено до v1.9Добавляет тег <script>
на страницу с желаемым URL или содержимым. Возвращает добавленный тег, когда срабатывает событие onload скрипта или когда содержимое скрипта было внедрено в фрейм.
Использование
Page.addScriptTag();
Page.addScriptTag(options);
Аргументы
options
Page.AddScriptTagOptions
(опционально)-
setContent
String (опционально)#Сырой JavaScript-контент, который будет внедрен в фрейм.
-
Путь к JavaScript-файлу, который будет внедрен в фрейм. Если
path
является относительным путем, то он разрешается относительно текущей рабочей директории. -
Тип скрипта. Используйте 'module', чтобы загрузить JavaScript ES6 модуль. Подробнее см. script.
-
URL скрипта, который будет добавлен.
-
Возвращает
addStyleTag
Добавлено до v1.9Добавляет тег <link rel="stylesheet">
на страницу с желаемым URL или тег <style type="text/css">
с содержимым. Возвращает добавленный тег, когда срабатывает событие onload стиля или когда CSS-контент был внедрен в фрейм.
Использование
Page.addStyleTag();
Page.addStyleTag(options);
Аргументы
options
Page.AddStyleTagOptions
(опционально)
Возвращает
bringToFront
Добавлено до v1.9Выводит страницу на передний план (активирует вкладку).
Использование
Page.bringToFront();
Возвращает
close
Добавлено до v1.9Если setRunBeforeUnload равен false
, не выполняет обработчики выгрузки и ждет, пока страница не будет закрыта. Если setRunBeforeUnload равен true
, метод выполнит обработчики выгрузки, но не будет ждать закрытия страницы.
По умолчанию, page.close()
не выполняет обработчики beforeunload
.
если setRunBeforeUnload передан как true, может быть вызван диалог beforeunload
, который должен быть обработан вручную через событие Page.onDialog(handler).
Использование
Page.close();
Page.close(options);
Аргументы
options
Page.CloseOptions
(опционально)-
setReason
String (опционально) Добавлено в: v1.40#Причина, которая будет сообщена операциям, прерванным закрытием страницы.
-
setRunBeforeUnload
boolean (опционально)#По умолчанию
false
. Выполнять ли обработчики страницы before unload.
-
Возвращает
content
Добавлено до v1.9Получает полное содержимое HTML страницы, включая doctype.
Использование
Page.content();
Возвращает
context
Добавлено до v1.9Получает контекст браузера, к которому принадлежит страница.
Использование
Page.context();
Возвращает
dragAndDrop
Добавлено в: v1.13Этот метод перетаскивает исходный элемент на целевой элемент. Сначала он перемещается к исходному элементу, выполняет mousedown
, затем перемещается к целевому элементу и выполняет mouseup
.
Использование
page.dragAndDrop("#source", "#target");
// или укажите точные позиции относительно верхнего левого угла элементов:
page.dragAndDrop("#source", "#target", new Page.DragAndDropOptions()
.setSourcePosition(34, 7).setTargetPosition(10, 20));
Аргументы
-
Селектор для поиска элемента, который нужно перетащить. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
Селектор для поиска элемента, на который нужно сбросить. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
options
Page.DragAndDropOptions
(опционально)-
setForce
boolean (опционально)#Нужно ли обходить проверки возможности действия. По умолчанию
false
. -
setNoWaitAfter
boolean (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
setSourcePosition
SourcePosition (опционально) Добавлено в: v1.14#Кликает на исходный элемент в этой точке относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTargetPosition
TargetPosition (опционально) Добавлено в: v1.14#Сбрасывает на целевой элемент в этой точке относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout(). -
setTrial
boolean (опционально)#Если установлено, этот метод выполняет только проверки возможности действия и пропускает действие. По умолчанию
false
. Полезно, чтобы дождаться, пока элемент будет готов к действию, не выполняя его.
-
Возвращает
emulateMedia
Добавлено до v1.9Этот метод изменяет 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Возвращает значение вызова 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();
Аргументы
-
JavaScript-выражение, которое будет выполнено в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (опционально)#Необязательный аргумент для передачи в expression.
Возвращает
evaluateHandle
Добавлено до v1.9Возвращает значение вызова 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();
Аргументы
-
JavaScript-выражение, которое будет выполнено в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (опционально)#Необязательный аргумент для передачи в expression.
Возвращает
exposeBinding
Added before v1.9Метод добавляет функцию с именем 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");
}
}
}
Аргументы
-
Имя функции в объекте window.
-
callback
BindingCallback
#Функция обратного вызова, которая будет вызвана в контексте Playwright.
-
options
Page.ExposeBindingOptions
(optional)
Возвращает
exposeFunction
Added before v1.9Метод добавляет функцию с именем 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");
}
}
}
Аргументы
-
Имя функции в объекте window.
-
callback
FunctionCallback
#Функция обратного вызова, которая будет вызвана в контексте Playwright.
Возвращает
frame
Added before v1.9Возвращает фрейм, соответствующий указанным критериям. Должно быть указано либо name
, либо url
.
Использование
Frame frame = page.frame("frame-name");
Frame frame = page.frameByUrl(Pattern.compile(".*domain.*"));
Аргументы
Возвращает
frameByUrl
Added in: v1.9Возвращает фрейм с соответствующим URL.
Использование
Page.frameByUrl(url);
Аргументы
-
url
String | Pattern | Predicate<String>#Глобальный шаблон, регулярное выражение или предикат, получающий
url
фрейма как объект [URL].
Возвращает
frameLocator
Added in: v1.17При работе с iframes вы можете создать локатор фрейма, который войдет в iframe и позволит выбирать элементы в этом iframe.
Использование
Следующий фрагмент кода находит элемент с текстом "Submit" в iframe с id my-frame
, например <iframe id="my-frame">
:
Locator locator = page.frameLocator("#my-iframe").getByText("Submit");
locator.click();
Аргументы
Возвращает
frames
Added before v1.9Массив всех фреймов, прикрепленных к странице.
Использование
Page.frames();
Возвращает
getByAltText
Added in: v1.27Позволяет находить элементы по их alt тексту.
Использование
Например, этот метод найдет изображение по alt тексту "Playwright logo":
<img alt='Playwright logo'>
page.getByAltText("Playwright logo").click();
Аргументы
-
Текст для поиска элемента.
-
options
Page.GetByAltTextOptions
(optional)
Возвращает
getByLabel
Added in: v1.27Позволяет находить элементы ввода по тексту связанного элемента <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");
Аргументы
-
Текст для поиска элемента.
-
options
Page.GetByLabelOptions
(optional)
Возвращает
getByPlaceholder
Added in: v1.27Позволяет находить элементы ввода по тексту-заполнителю.
Использование
Например, рассмотрим следующую структуру DOM.
<input type="email" placeholder="name@example.com" />
Вы можете заполнить поле ввода, найдя его по тексту-заполнителю:
page.getByPlaceholder("name@example.com").fill("playwright@microsoft.com");
Аргументы
-
Текст для поиска элемента.
-
options
Page.GetByPlaceholderOptions
(optional)
Возвращает
getByRole
Added in: v1.27Позволяет находить элементы по их ARIA роли, ARIA атрибутам и доступному имени.
Использование
Рассмотрим следующую структуру DOM.
<h3>Sign up</h3>
<label>
<input type="checkbox" /> Subscribe
</label>
<br/>
<button>Submit</button>
Вы можете найти каждый элемент по его неявной роли:
assertThat(page
.getByRole(AriaRole.HEADING,
new Page.GetByRoleOptions().setName("Sign up")))
.isVisible();
page.getByRole(AriaRole.CHECKBOX,
new Page.GetByRoleOptions().setName("Subscribe"))
.check();
page.getByRole(AriaRole.BUTTON,
new Page.GetByRoleOptions().setName(
Pattern.compile("submit", Pattern.CASE_INSENSITIVE)))
.click();
Аргументы
-
role
enum AriaRole { ALERT, ALERTDIALOG, APPLICATION, ARTICLE, BANNER, BLOCKQUOTE, BUTTON, CAPTION, CELL, CHECKBOX, CODE, COLUMNHEADER, COMBOBOX, COMPLEMENTARY, CONTENTINFO, DEFINITION, DELETION, DIALOG, DIRECTORY, DOCUMENT, EMPHASIS, FEED, FIGURE, FORM, GENERIC, GRID, GRIDCELL, GROUP, HEADING, IMG, INSERTION, LINK, LIST, LISTBOX, LISTITEM, LOG, MAIN, MARQUEE, MATH, METER, MENU, MENUBAR, MENUITEM, MENUITEMCHECKBOX, MENUITEMRADIO, NAVIGATION, NONE, NOTE, OPTION, PARAGRAPH, PRESENTATION, PROGRESSBAR, RADIO, RADIOGROUP, REGION, ROW, ROWGROUP, ROWHEADER, SCROLLBAR, SEARCH, SEARCHBOX, SEPARATOR, SLIDER, SPINBUTTON, STATUS, STRONG, SUBSCRIPT, SUPERSCRIPT, SWITCH, TAB, TABLE, TABLIST, TABPANEL, TERM, TEXTBOX, TIME, TIMER, TOOLBAR, TOOLTIP, TREE, TREEGRID, TREEITEM }
#Требуемая ARIA роль.
-
options
Page.GetByRoleOptions
(optional)-
setChecked
boolean (optional)#Атрибут, который обычно устанавливается
aria-checked
или нативными элементами<input type=checkbox>
.Узнайте больше о
aria-checked
. -
setDisabled
boolean (optional)#Атрибут, который обычно устанавливается
aria-disabled
илиdisabled
.примечаниеВ отличие от большинства других атрибутов,
disabled
наследуется через иерархию DOM. Узнайте больше оaria-disabled
. -
setExact
boolean (optional) Added in: v1.28#Совпадает ли setName точно: с учетом регистра и всей строки. По умолчанию false. Игнорируется, когда setName является регулярным выражением. Обратите внимание, что точное совпадение все равно обрезает пробелы.
-
setExpanded
boolean (optional)#Атрибут, который обычно устанавливается
aria-expanded
.Узнайте больше о
aria-expanded
. -
setIncludeHidden
boolean (optional)#Опция, которая контролирует, соответствуют ли скрытые элементы. По умолчанию, только не скрытые элементы, как определено ARIA, соответствуют селектору роли.
Узнайте больше о
aria-hidden
. -
Числовой атрибут, который обычно присутствует для ролей
heading
,listitem
,row
,treeitem
, с значениями по умолчанию для элементов<h1>-<h6>
.Узнайте больше о
aria-level
. -
setName
String | Pattern (optional)#Опция для соответствия доступному имени. По умолчанию, соответствие не учитывает регистр и ищет подстроку, используйте setExact для управления этим поведением.
Узнайте больше о доступном имени.
-
setPressed
boolean (optional)#Атрибут, который обычно устанавливается
aria-pressed
.Узнайте больше о
aria-pressed
. -
setSelected
boolean (optional)#Атрибут, который обычно устанавливается
aria-selected
.Узнайте больше о
aria-selected
.
-
Возвращает
Детали
Селектор роли не заменяет аудиты доступности и тесты на соответствие, но дает раннюю обратную связь о рекомендациях ARIA.
Многие HTML элементы имеют неявно определенную роль, которая распознается селектором роли. Вы можете найти все поддерживаемые роли здесь. Рекомендации ARIA не рекомендуют дублировать неявные роли и атрибуты, устанавливая role
и/или aria-*
атрибуты на значения по умолчанию.
getByTestId
Added in: v1.27Находит элемент по тестовому идентификатору.
Использование
Рассмотрим следующую структуру DOM.
<button data-testid="directions">Itinéraire</button>
Вы можете найти элемент по его тестовому идентификатору:
page.getByTestId("directions").click();
Аргументы
Возвращает
Детали
По умолчанию используется атрибут data-testid
в качестве тестового идентификатора. Используйте Selectors.setTestIdAttribute() для настройки другого атрибута тестового идентификатора, если это необходимо.
getByText
Added in: v1.27Позволяет находить элементы, содержащие заданный текст.
Смотрите также 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));
Аргументы
-
Текст для поиска элемента.
-
options
Page.GetByTextOptions
(optional)
Возвращает
Детали
Сопоставление по тексту всегда нормализует пробелы, даже при точном совпадении. Например, оно превращает несколько пробелов в один, превращает разрывы строк в пробелы и игнорирует начальные и конечные пробелы.
Элементы ввода типа button
и submit
сопоставляются по их value
, а не по текстовому содержимому. Например, поиск по тексту "Log in"
соответствует <input type=button value="Log in">
.
getByTitle
Added in: v1.27Позволяет находить элементы по их атрибуту title.
Использование
Рассмотрим следующую структуру DOM.
<span title='Issues count'>25 issues</span>
Вы можете проверить количество проблем, найдя его по тексту заголовка:
assertThat(page.getByTitle("Issues count")).hasText("25 issues");
Аргументы
-
Текст для поиска элемента.
-
options
Page.GetByTitleOptions
(optional)
Возвращает
goBack
Added before v1.9Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления. Если невозможно вернуться назад, возвращает null
.
Переход на предыдущую страницу в истории.
Usage
Page.goBack();
Page.goBack(options);
Arguments
options
Page.GoBackOptions
(optional)-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout(). -
setWaitUntil
enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT }
(optional)#Когда считать операцию успешной, по умолчанию
load
. События могут быть:'domcontentloaded'
- считать операцию завершенной, когда событиеDOMContentLoaded
будет вызвано.'load'
- считать операцию завершенной, когда событиеload
будет вызвано.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'
- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
-
Returns
goForward
Added before v1.9Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления. Если невозможно перейти вперед, возвращает null
.
Переход на следующую страницу в истории.
Usage
Page.goForward();
Page.goForward(options);
Arguments
options
Page.GoForwardOptions
(optional)-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout(). -
setWaitUntil
enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT }
(optional)#Когда считать операцию успешной, по умолчанию
load
. События могут быть:'domcontentloaded'
- считать операцию завершенной, когда событиеDOMContentLoaded
будет вызвано.'load'
- считать операцию завершенной, когда событиеload
будет вызвано.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'
- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
-
Returns
isClosed
Added before v1.9Указывает, что страница была закрыта.
Usage
Page.isClosed();
Returns
locator
Added in: v1.14Метод возвращает локатор элемента, который можно использовать для выполнения действий на этой странице/фрейме. Локатор разрешается в элемент непосредственно перед выполнением действия, поэтому серия действий на одном и том же локаторе может фактически выполняться на разных элементах DOM. Это произойдет, если структура DOM между этими действиями изменилась.
Usage
Page.locator(selector);
Page.locator(selector, options);
Arguments
-
Селектор для использования при разрешении элемента DOM.
-
options
Page.LocatorOptions
(optional)-
Сужает результаты метода до тех, которые содержат элементы, соответствующие этому относительному локатору. Например,
article
, который имеетtext=Playwright
, соответствует<article><div>Playwright</div></article>
.Внутренний локатор должен быть относительным к внешнему локатору и запрашивается, начиная с совпадения внешнего локатора, а не с корня документа. Например, вы можете найти
content
, который имеетdiv
в<article><content><div>Playwright</div></content></article>
. Однако поискcontent
, который имеетarticle div
, не удастся, потому что внутренний локатор должен быть относительным и не должен использовать элементы за пределамиcontent
.Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.
-
setHasNot
Locator (optional) Added in: v1.33#Соответствует элементам, которые не содержат элемент, соответствующий внутреннему локатору. Внутренний локатор запрашивается относительно внешнего. Например,
article
, который не имеетdiv
, соответствует<article><span>Playwright</span></article>
.Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.
-
setHasNotText
String | Pattern (optional) Added in: v1.33#Соответствует элементам, которые не содержат указанный текст где-либо внутри, возможно, в дочернем или потомке элемента. При передаче [строки] сопоставление нечувствительно к регистру и ищет подстроку.
-
setHasText
String | Pattern (optional)#Соответствует элементам, содержащим указанный текст где-либо внутри, возможно, в дочернем или потомке элемента. При передаче [строки] сопоставление нечувствительно к регистру и ищет подстроку. Например,
"Playwright"
соответствует<article><div>Playwright</div></article>
.
-
Returns
mainFrame
Added before v1.9Основной фрейм страницы. Страница гарантированно имеет основной фрейм, который сохраняется во время навигации.
Usage
Page.mainFrame();
Returns
navigate
Added before v1.9Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с первым не перенаправленным ответом.
Метод вызовет ошибку, если:
- произошла ошибка SSL (например, в случае самоподписанных сертификатов).
- целевой URL недействителен.
- setTimeout превышен во время навигации.
- удаленный сервер не отвечает или недоступен.
- основной ресурс не удалось загрузить.
Метод не вызовет ошибку, если удаленный сервер вернет любой допустимый код состояния HTTP, включая 404 "Не найдено" и 500 "Внутренняя ошибка сервера". Код состояния для таких ответов можно получить, вызвав Response.status().
Метод либо вызывает ошибку, либо возвращает ответ основного ресурса. Единственными исключениями являются навигация на about:blank
или навигация на тот же URL с другим хэшем, которые будут успешными и вернут null
.
Режим без головы не поддерживает навигацию к PDF-документу. См. проблему.
Usage
Page.navigate(url);
Page.navigate(url, options);
Arguments
-
URL для перехода на страницу. URL должен включать схему, например,
https://
. Когда setBaseURL был предоставлен через параметры контекста и переданный URL является путем, он объединяется с помощью конструктораnew URL()
. -
options
Page.NavigateOptions
(optional)-
Значение заголовка Referer. Если предоставлено, оно будет иметь приоритет над значением заголовка referer, установленным с помощью Page.setExtraHTTPHeaders().
-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout(). -
setWaitUntil
enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT }
(optional)#Когда считать операцию успешной, по умолчанию
load
. События могут быть:'domcontentloaded'
- считать операцию завершенной, когда событиеDOMContentLoaded
будет вызвано.'load'
- считать операцию завершенной, когда событиеload
будет вызвано.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'
- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
-
Returns
onceDialog
Added in: v1.10Добавляет одноразовый обработчик Dialog. Обработчик будет удален сразу после создания следующего Dialog.
page.onceDialog(dialog -> {
dialog.accept("foo");
});
// выводит 'foo'
System.out.println(page.evaluate("prompt('Enter string:')"));
// выводит 'null', так как диалог будет автоматически отклонен, потому что нет обработчиков.
System.out.println(page.evaluate("prompt('Enter string:')"));
Этот код выше эквивалентен:
Consumer<Dialog> handler = new Consumer<Dialog>() {
@Override
public void accept(Dialog dialog) {
dialog.accept("foo");
page.offDialog(this);
}
};
page.onDialog(handler);
// выводит 'foo'
System.out.println(page.evaluate("prompt('Enter string:')"));
// выводит 'null', так как диалог будет автоматически отклонен, потому что нет обработчиков.
System.out.println(page.evaluate("prompt('Enter string:')"));
Usage
Page.onceDialog(handler);
Arguments
-
Получает объект Dialog, он должен либо Dialog.accept(), либо Dialog.dismiss() диалог - в противном случае страница будет заморожена, ожидая диалога, и такие действия, как клик, никогда не завершатся.
opener
Added before v1.9Возвращает открыватель для всплывающих страниц и null
для других. Если открыватель уже был закрыт, возвращает null
.
Usage
Page.opener();
Returns
pause
Added in: v1.9Приостанавливает выполнение скрипта. Playwright остановит выполнение скрипта и будет ждать, пока пользователь не нажмет кнопку 'Resume' в оверлее страницы или не вызовет playwright.resume()
в консоли DevTools.
Пользователь может исследовать селекторы или выполнять ручные шаги во время паузы. Возобновление продолжит выполнение оригинального скрипта с того места, где он был приостановлен.
Этот метод требует, чтобы Playwright был запущен в режиме с интерфейсом, с ложным параметром setHeadless.
Usage
Page.pause();
Returns
pdf
Added before v1.9Возвращает буфер PDF.
page.pdf()
генерирует pdf страницы с print
css media. Чтобы сгенерировать pdf с screen
media, вызовите Page.emulateMedia() перед вызовом page.pdf()
:
По умолчанию page.pdf()
генерирует pdf с измененными цветами для печати. Используйте свойство -webkit-print-color-adjust
, чтобы принудительно отобразить точные цвета.
Usage
// Генерирует PDF с типом медиа "screen".
page.emulateMedia(new Page.EmulateMediaOptions().setMedia(Media.SCREEN));
page.pdf(new Page.PdfOptions().setPath(Paths.get("page.pdf")));
Параметры setWidth, setHeight и setMargin принимают значения с указанием единиц измерения. Значения без указания единиц измерения считаются пикселями.
Несколько примеров:
page.pdf({width: 100})
- печатает с шириной, установленной в 100 пикселейpage.pdf({width: '100px'})
- печатает с шириной, установленной в 100 пикселейpage.pdf({width: '10cm'})
- печатает с шириной, установленной в 10 сантиметров.
Все возможные единицы измерения:
px
- пиксельin
- дюймcm
- сантиметрmm
- миллиметр
Параметры setFormat:
Letter
: 8.5in x 11inLegal
: 8.5in x 14inTabloid
: 11in x 17inLedger
: 17in x 11inA0
: 33.1in x 46.8inA1
: 23.4in x 33.1inA2
: 16.54in x 23.4inA3
: 11.7in x 16.54inA4
: 8.27in x 11.7inA5
: 5.83in x 8.27inA6
: 4.13in x 5.83in
Разметка setHeaderTemplate и setFooterTemplate имеет следующие ограничения: > 1. Теги скриптов внутри шаблонов не оцениваются. > 2. Стили страницы не видны внутри шаблонов.
Arguments
options
Page.PdfOptions
(optional)-
setDisplayHeaderFooter
boolean (optional)#Отображать заголовок и нижний колонтитул. По умолчанию
false
. -
setFooterTemplate
String (optional)#HTML-шаблон для нижнего колонтитула печати. Должен использовать тот же формат, что и setHeaderTemplate.
-
Формат бумаги. Если установлен, имеет приоритет над параметрами setWidth или setHeight. По умолчанию 'Letter'.
-
setHeaderTemplate
String (optional)#HTML-шаблон для заголовка печати. Должен быть допустимой HTML-разметкой с использованием следующих классов для вставки значений печати в них:
'date'
отформатированная дата печати'title'
заголовок документа'url'
местоположение документа'pageNumber'
номер текущей страницы'totalPages'
общее количество страниц в документе
-
Высота бумаги, принимает значения с указанием единиц измерения.
-
setLandscape
boolean (optional)#Ориентация бумаги. По умолчанию
false
. -
setMargin
Margin (optional)#-
setTop
String (optional)Верхнее поле, принимает значения с указанием единиц измерения. По умолчанию
0
. -
setRight
String (optional)Правое поле, принимает значения с указанием единиц измерения. По умолчанию
0
. -
setBottom
String (optional)Нижнее поле, принимает значения с указанием единиц измерения. По умолчанию
0
. -
setLeft
String (optional)Левое поле, принимает значения с указанием единиц измерения. По умолчанию
0
.
Поля бумаги, по умолчанию отсутствуют.
-
-
setOutline
boolean (optional) Added in: v1.42#Включать ли контур документа в PDF. По умолчанию
false
. -
setPageRanges
String (optional)#Диапазоны страниц для печати, например, '1-5, 8, 11-13'. По умолчанию пустая строка, что означает печать всех страниц.
-
Путь к файлу для сохранения PDF. Если setPath является относительным путем, то он разрешается относительно текущей рабочей директории. Если путь не указан, PDF не будет сохранен на диск.
-
setPreferCSSPageSize
boolean (optional)#Предпочитать любой размер страницы CSS
@page
, объявленный на странице, над тем, что объявлено в параметрах setWidth и setHeight или setFormat. По умолчаниюfalse
, что будет масштабировать содержимое, чтобы оно соответствовало размеру бумаги. -
setPrintBackground
boolean (optional)#Печать фоновой графики. По умолчанию
false
. -
Масштаб рендеринга веб-страницы. По умолчанию
1
. Масштаб должен быть между 0.1 и 2. -
setTagged
boolean (optional) Added in: v1.42#Генерировать ли тегированный (доступный) PDF. По умолчанию
false
. -
Ширина бумаги, принимает значения с указанием единиц измерения.
-
Returns
reload
Added before v1.9Этот метод перезагружает текущую страницу так же, как если бы пользователь инициировал обновление браузера. Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления.
Usage
Page.reload();
Page.reload(options);
Arguments
options
Page.ReloadOptions
(optional)-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout(). -
setWaitUntil
enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT }
(optional)#Когда считать операцию успешной, по умолчанию
load
. События могут быть:'domcontentloaded'
- считать операцию завершенной, когда событиеDOMContentLoaded
будет вызвано.'load'
- считать операцию завершенной, когда событиеload
будет вызвано.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'
- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
-
Returns
removeLocatorHandler
Added in: v1.44Удаляет все обработчики локаторов, добавленные с помощью Page.addLocatorHandler() для конкретного локатора.
Usage
Page.removeLocatorHandler(locator);
Arguments
-
Локатор, переданный в Page.addLocatorHandler().
Returns
requestGC
Added in: v1.48Запросить у страницы выполнение сборки мусора. Обратите внимание, что нет гарантии, что все недоступные объекты будут собраны.
Это полезно для обнаружения утечек памяти. Например, если на вашей странице есть большой объект 'suspect'
, который может утекать, вы можете проверить, что он не утек, используя WeakRef
.
// 1. На вашей странице сохраните WeakRef для "suspect".
page.evaluate("globalThis.suspectWeakRef = new WeakRef(suspect)");
// 2. Запросите сборку мусора.
page.requestGC();
// 3. Убедитесь, что weak ref не ссылается на оригинальный объект.
assertTrue(page.evaluate("!globalThis.suspectWeakRef.deref()"));
Usage
Page.requestGC();
Returns
route
Added before v1.9Маршрутизация предоставляет возможность изменять сетевые запросы, которые выполняются страницей.
После включения маршрутизации каждый запрос, соответствующий шаблону URL, будет приостановлен, если он не будет продолжен, выполнен или прерван.
Обработчик будет вызван только для первого URL, если ответ является перенаправлением.
Page.route() не будет перехватывать запросы, перехваченные Service Worker. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив setServiceWorkers в 'block'
.
Page.route() не будет перехватывать первый запрос всплывающей страницы. Используйте BrowserContext.route() вместо этого.
Usage
Пример наивного обработчика, который прерывает все запросы изображений:
Page page = browser.newPage();
page.route("**/*.{png,jpg,jpeg}", route -> route.abort());
page.navigate("https://example.com");
browser.close();
или тот же фрагмент, используя вместо этого шаблон регулярного выражения:
Page page = browser.newPage();
page.route(Pattern.compile("(\\.png$)|(\\.jpg$)"),route -> route.abort());
page.navigate("https://example.com");
browser.close();
Возможно исследовать запрос, чтобы решить, какое действие маршрута выполнить. Например, имитируя все запросы, содержащие некоторые данные POST, и оставляя все остальные запросы как есть:
page.route("/api/**", route -> {
if (route.request().postData().contains("my-string"))
route.fulfill(new Route.FulfillOptions().setBody("mocked-data"));
else
route.resume();
});
Маршруты страницы имеют приоритет над маршрутами контекста браузера (настроенными с помощью BrowserContext.route()), когда запрос соответствует обоим обработчикам.
Чтобы удалить маршрут с его обработчиком, вы можете использовать Page.unroute().
Включение маршрутизации отключает http-кэш.
Arguments
-
url
String | Pattern | Predicate<String>#Глобальный шаблон, шаблон регулярного выражения или предикат, получающий [URL] для сопоставления при маршрутизации. Когда setBaseURL был предоставлен через параметры контекста и переданный URL является путем, он объединяется с помощью конструктора
new URL()
. -
функция обработчика для маршрутизации запроса.
-
options
Page.RouteOptions
(optional)
Returns
routeFromHAR
Added in: v1.23Если указано, сетевые запросы, сделанные на странице, будут обслуживаться из HAR-файла. Подробнее читайте в разделе Replaying from HAR.
Playwright не будет обслуживать запросы, перехваченные Service Worker, из HAR-файла. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив setServiceWorkers в 'block'
.
Использование
Page.routeFromHAR(har);
Page.routeFromHAR(har, options);
Аргументы
-
Путь к HAR файлу с предварительно записанными сетевыми данными. Если
path
является относительным путем, то он разрешается относительно текущей рабочей директории. -
options
Page.RouteFromHAROptions
(опционально)-
setNotFound
enum HarNotFound { ABORT, FALLBACK }
(опционально)#- Если установлено в 'abort', любой запрос, не найденный в HAR-файле, будет прерван.
- Если установлено в 'fallback', отсутствующие запросы будут отправлены в сеть.
По умолчанию
abort
. -
setUpdate
boolean (опционально)#Если указано, обновляет данный HAR с фактической сетевой информацией вместо обслуживания из файла. Файл записывается на диск, когда BrowserContext.close() вызывается.
-
setUpdateContent
enum RouteFromHarUpdateContentPolicy { EMBED, ATTACH }
(опционально) Added in: v1.32#Опциональная настройка для управления содержимым ресурсов. Если указано
attach
, ресурсы сохраняются как отдельные файлы или записи в ZIP-архиве. Если указаноembed
, содержимое хранится в HAR-файле. -
setUpdateMode
enum HarMode { FULL, MINIMAL }
(опционально) Added in: v1.32#Когда установлено в
minimal
, записывается только информация, необходимая для маршрутизации из HAR. Это исключает размеры, время, страницу, куки, безопасность и другие типы информации HAR, которые не используются при воспроизведении из HAR. По умолчаниюminimal
. -
setUrl
String | Pattern (опционально)#Глобальный шаблон, регулярное выражение или предикат для сопоставления URL запроса. Только запросы с URL, соответствующим шаблону, будут обслуживаться из HAR-файла. Если не указано, все запросы обслуживаются из HAR-файла.
-
Возвращает
routeWebSocket
Added in: v1.48Этот метод позволяет изменять WebSocket-соединения, которые создаются страницей.
Обратите внимание, что только WebSocket
, созданные после вызова этого метода, будут маршрутизированы. Рекомендуется вызывать этот метод перед навигацией по странице.
Использование
Ниже приведен пример простого мока, который отвечает на одно сообщение. Подробнее и примеры смотрите в WebSocketRoute.
page.routeWebSocket("/ws", ws -> {
ws.onMessage(frame -> {
if ("request".equals(frame.text()))
ws.send("response");
});
});
Аргументы
-
url
String | Pattern | Predicate<String>#Только WebSocket с URL, соответствующим этому шаблону, будут маршрутизированы. Строковый шаблон может быть относительным к setBaseURL контекстной опции.
-
handler
Consumer<WebSocketRoute>#Функция-обработчик для маршрутизации WebSocket.
Возвращает
screenshot
Added before v1.9Возвращает буфер с захваченным скриншотом.
Использование
Page.screenshot();
Page.screenshot(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
doublex-координата верхнего левого угла области обрезки
-
setY
doubley-координата верхнего левого угла области обрезки
-
setWidth
doubleширина области обрезки
-
setHeight
doubleвысота области обрезки
Объект, который указывает обрезку результирующего изображения.
-
-
setFullPage
boolean (опционально)#Если true, делает скриншот всей прокручиваемой страницы, вместо текущего видимого окна. По умолчанию
false
. -
setMask
List<Locator> (опционально)#Укажите локаторы, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут перекрыты розовым прямоугольником
#FF00FF
(настраивается с помощью setMaskColor), который полностью покрывает их ограничивающий прямоугольник. Маска также применяется к невидимым элементам, см. Matching only visible elements для отключения этого. -
setMaskColor
String (опционально) Added in: v1.35#Укажите цвет перекрывающего прямоугольника для замаскированных элементов в CSS color format. Цвет по умолчанию розовый
#FF00FF
. -
setOmitBackground
boolean (опционально)#Скрывает белый фон по умолчанию и позволяет делать скриншоты с прозрачностью. Не применимо к изображениям
jpeg
. По умолчаниюfalse
. -
Путь к файлу для сохранения изображения. Тип скриншота будет определен по расширению файла. Если setPath является относительным путем, то он разрешается относительно текущей рабочей директории. Если путь не указан, изображение не будет сохранено на диск.
-
Качество изображения, от 0 до 100. Не применимо к изображениям
png
. -
setScale
enum ScreenshotScale { CSS, DEVICE }
(опционально)#Когда установлено в
"css"
, скриншот будет иметь один пиксель на каждый css пиксель на странице. Для устройств с высоким разрешением это позволит сохранить скриншоты небольшими. Использование опции"device"
создаст один пиксель на каждый пиксель устройства, так что скриншоты устройств с высоким разрешением будут в два раза больше или даже больше.По умолчанию
"device"
. -
setStyle
String (опционально) Added in: v1.41#Текст стиля, который будет применен при создании скриншота. Здесь вы можете скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы помочь вам создавать повторяемые скриншоты. Этот стиль проникает в Shadow DOM и применяется к внутренним фреймам.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout(). -
setType
enum ScreenshotType { PNG, JPEG }
(опционально)#Укажите тип скриншота, по умолчанию
png
.
-
Возвращает
setContent
Added before v1.9Этот метод внутренне вызывает document.write(), наследуя все его специфические характеристики и поведение.
Использование
Page.setContent(html);
Page.setContent(html, options);
Аргументы
-
HTML-разметка для назначения странице.
-
options
Page.SetContentOptions
(опционально)-
setTimeout
double (опционально)#Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout(). -
setWaitUntil
enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT }
(опционально)#Когда считать операцию успешной, по умолчанию
load
. События могут быть:'domcontentloaded'
- считать операцию завершенной, когда событиеDOMContentLoaded
будет вызвано.'load'
- считать операцию завершенной, когда событиеload
будет вызвано.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'
- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
-
Возвращает
setDefaultNavigationTimeout
Added before v1.9Эта настройка изменит максимальное время навигации по умолчанию для следующих методов и связанных с ними ярлыков:
- Page.goBack()
- Page.goForward()
- Page.navigate()
- Page.reload()
- Page.setContent()
- Page.waitForNavigation()
- Page.waitForURL()
Использование
Page.setDefaultNavigationTimeout(timeout);
Аргументы
setDefaultTimeout
Added before v1.9Эта настройка изменит максимальное время по умолчанию для всех методов, принимающих опцию timeout.
Page.setDefaultNavigationTimeout() имеет приоритет над Page.setDefaultTimeout().
Использование
Page.setDefaultTimeout(timeout);
Аргументы
setExtraHTTPHeaders
Added before v1.9Дополнительные HTTP-заголовки будут отправлены с каждым запросом, инициированным страницей.
Page.setExtraHTTPHeaders() не гарантирует порядок заголовков в исходящих запросах.
Использование
Page.setExtraHTTPHeaders(headers);
Аргументы
-
Объект, содержащий дополнительные HTTP-заголовки, которые будут отправлены с каждым запросом. Все значения заголовков должны быть строками.
Возвращает
setViewportSize
Added before v1.9В случае нескольких страниц в одном браузере каждая страница может иметь свой собственный размер области просмотра. Однако Browser.newContext() позволяет установить размер области просмотра (и многое другое) для всех страниц в контексте сразу.
Page.setViewportSize() изменит размер страницы. Многие веб-сайты не ожидают, что телефоны изменят размер, поэтому вы должны установить размер области просмотра перед навигацией по странице. Page.setViewportSize() также сбросит размер screen
, используйте Browser.newContext() с параметрами screen
и viewport
, если вам нужно лучше контролировать эти свойства.
Использование
Page page = browser.newPage();
page.setViewportSize(640, 480);
page.navigate("https://example.com");
Аргументы
-
Ширина страницы в пикселях.
-
Высота страницы в пикселях.
Возвращает
title
Added before v1.9Возвращает заголовок страницы.
Использование
Page.title();
Возвращает
unroute
Added before v1.9Удаляет маршрут, созданный с помощью Page.route(). Когда handler не указан, удаляет все маршруты для url.
Использование
Page.unroute(url);
Page.unroute(url, handler);
Аргументы
-
url
String | Pattern | Predicate<String>#Глобальный шаблон, регулярное выражение или предикат, получающий [URL] для сопоставления при маршрутизации.
-
handler
Consumer<Route> (опционально)#Опциональная функция-обработчик для маршрутизации запроса.
Возвращает
unrouteAll
Added in: v1.41Удаляет все маршруты, созданные с помощью Page.route() и Page.routeFromHAR().
Использование
Page.unrouteAll();
Возвращает
url
Added before v1.9Использование
Page.url();
Возвращает
video
Added before v1.9Объект видео, связанный с этой страницей.
Использование
Page.video();
Возвращает
viewportSize
Added before v1.9Использование
Page.viewportSize();
Возвращает
waitForClose
Added in: v1.11Выполняет действие и ждет, пока страница не закроется.
Использование
Page.waitForClose(callback);
Page.waitForClose(callback, options);
Аргументы
-
options
Page.WaitForCloseOptions
(опционально)-
setTimeout
double (опционально) Added in: v1.9#Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя BrowserContext.setDefaultTimeout().
-
-
callback
Runnable Added in: v1.9#Обратный вызов, который выполняет действие, вызывающее событие.
Возвращает
waitForCondition
Added in: v1.32Метод будет блокировать выполнение, пока условие не вернет true. Все события Playwright будут отправлены, пока метод ожидает выполнения условия.
Использование
Используйте метод для ожидания условия, зависящего от событий страницы:
List<String> messages = new ArrayList<>();
page.onConsoleMessage(m -> messages.add(m.text()));
page.getByText("Submit button").click();
page.waitForCondition(() -> messages.size() > 3);
Аргументы
-
condition
[BooleanSupplier]#Условие для ожидания.
-
options
Page.WaitForConditionOptions
(опционально)-
setTimeout
double (опционально)#Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
waitForConsoleMessage
Added in: v1.9Выполняет действие и ждет, пока 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().
-
-
Обратный вызов, который выполняет действие, вызывающее событие.
Возвращает
waitForDownload
Added in: v1.9Выполняет действие и ждет, пока не начнется новая 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().
-
-
Обратный вызов, который выполняет действие, вызывающее событие.
Возвращает
waitForFileChooser
Added in: v1.9Выполняет действие и ожидает создания нового FileChooser. Если предоставлен предикат, он передает значение FileChooser в функцию predicate
и ожидает, пока predicate(fileChooser)
не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до открытия выбора файла.
Usage
Page.waitForFileChooser(callback);
Page.waitForFileChooser(callback, options);
Arguments
-
options
Page.WaitForFileChooserOptions
(optional)-
setPredicate
Predicate<FileChooser> (optional)#Получает объект FileChooser и разрешает в истинное значение, когда ожидание должно разрешиться.
-
Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя BrowserContext.setDefaultTimeout().
-
-
Обратный вызов, который выполняет действие, вызывающее событие.
Returns
waitForFunction
Added before v1.9Возвращает, когда expression возвращает истинное значение. Разрешается в JSHandle истинного значения.
Usage
Page.waitForFunction() может быть использован для наблюдения за изменением размера области просмотра:
import com.microsoft.playwright.*;
public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType webkit = playwright.webkit();
Browser browser = webkit.launch();
Page page = browser.newPage();
page.setViewportSize(50, 50);
page.waitForFunction("() => window.innerWidth < 100");
browser.close();
}
}
}
Чтобы передать аргумент в предикат функции Page.waitForFunction():
String selector = ".foo";
page.waitForFunction("selector => !!document.querySelector(selector)", selector);
Arguments
-
JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (optional)#Необязательный аргумент для передачи в expression.
-
options
Page.WaitForFunctionOptions
(optional)-
setPollingInterval
double (optional)#Если указано, то это интервал в миллисекундах, с которым функция будет выполняться. По умолчанию, если опция не указана, expression выполняется в
requestAnimationFrame
обратном вызове. -
Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Returns
waitForLoadState
Added before v1.9Возвращает, когда достигнуто требуемое состояние загрузки.
Это разрешается, когда страница достигает требуемого состояния загрузки, по умолчанию load
. Навигация должна быть завершена, когда вызывается этот метод. Если текущий документ уже достиг требуемого состояния, разрешается немедленно.
Большую часть времени этот метод не нужен, потому что Playwright автоматически ожидает перед каждым действием.
Usage
page.getByRole(AriaRole.BUTTON).click(); // Клик вызывает навигацию.
page.waitForLoadState(); // Обещание разрешается после события "load".
Page popup = page.waitForPopup(() -> {
page.getByRole(AriaRole.BUTTON).click(); // Клик вызывает всплывающее окно.
});
// Ожидание события "DOMContentLoaded"
popup.waitForLoadState(LoadState.DOMCONTENTLOADED);
System.out.println(popup.title()); // Всплывающее окно готово к использованию.
Arguments
-
state
enum LoadState { LOAD, DOMCONTENTLOADED, NETWORKIDLE }
(optional)#Необязательное состояние загрузки для ожидания, по умолчанию
load
. Если состояние уже достигнуто при загрузке текущего документа, метод разрешается немедленно. Может быть одним из:'load'
- ожидание, пока не будет вызвано событиеload
.'domcontentloaded'
- ожидание, пока не будет вызвано событиеDOMContentLoaded
.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ ожидание, пока не будет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
-
options
Page.WaitForLoadStateOptions
(optional)-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout().
-
Returns
waitForPopup
Added in: v1.9Выполняет действие и ожидает всплывающее окно Page. Если предоставлен предикат, он передает значение [Popup] в функцию predicate
и ожидает, пока predicate(page)
не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до вызова события всплывающего окна.
Usage
Page.waitForPopup(callback);
Page.waitForPopup(callback, options);
Arguments
-
options
Page.WaitForPopupOptions
(optional)-
setPredicate
Predicate<Page> (optional)#Получает объект Page и разрешает в истинное значение, когда ожидание должно разрешиться.
-
Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя BrowserContext.setDefaultTimeout().
-
-
Обратный вызов, который выполняет действие, вызывающее событие.
Returns
waitForRequest
Added before v1.9Ожидает совпадения запроса и возвращает его. См. ожидание события для получения более подробной информации о событиях.
Usage
// Ожидает следующего запроса с указанным URL
Request request = page.waitForRequest("https://example.com/resource", () -> {
// Вызывает запрос
page.getByText("trigger request").click();
});
// Ожидает следующего запроса, соответствующего некоторым условиям
Request request = page.waitForRequest(request -> "https://example.com".equals(request.url()) && "GET".equals(request.method()), () -> {
// Вызывает запрос
page.getByText("trigger request").click();
});
Arguments
-
urlOrPredicate
String | Pattern | Predicate<Request>#URL запроса в виде строки, регулярного выражения или предиката, получающего объект Request. Когда setBaseURL был предоставлен через параметры контекста и переданный URL является путем, он объединяется через конструктор
new URL()
. -
options
Page.WaitForRequestOptions
(optional)-
Максимальное время ожидания в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя метод Page.setDefaultTimeout().
-
-
callback
Runnable Added in: v1.9#Обратный вызов, который выполняет действие, вызывающее событие.
Returns
waitForRequestFinished
Added in: v1.12Выполняет действие и ожидает завершения загрузки Request. Если предоставлен предикат, он передает значение Request в функцию predicate
и ожидает, пока predicate(request)
не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до вызова события Page.onRequestFinished(handler).
Usage
Page.waitForRequestFinished(callback);
Page.waitForRequestFinished(callback, options);
Arguments
-
options
Page.WaitForRequestFinishedOptions
(optional)-
setPredicate
Predicate<Request> (optional)#Получает объект Request и разрешает в истинное значение, когда ожидание должно разрешиться.
-
Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя BrowserContext.setDefaultTimeout().
-
-
Обратный вызов, который выполняет действие, вызывающее событие.
Returns
waitForResponse
Added before v1.9Возвращает совпавший ответ. См. ожидание события для получения более подробной информации о событиях.
Usage
// Ожидает следующего ответа с указанным URL
Response response = page.waitForResponse("https://example.com/resource", () -> {
// Вызывает ответ
page.getByText("trigger response").click();
});
// Ожидает следующего ответа, соответствующего некоторым условиям
Response response = page.waitForResponse(response -> "https://example.com".equals(response.url()) && response.status() == 200 && "GET".equals(response.request().method()), () -> {
// Вызывает ответ
page.getByText("trigger response").click();
});
Arguments
-
urlOrPredicate
String | Pattern | Predicate<Response>#URL запроса в виде строки, регулярного выражения или предиката, получающего объект Response. Когда setBaseURL был предоставлен через параметры контекста и переданный URL является путем, он объединяется через конструктор
new URL()
. -
options
Page.WaitForResponseOptions
(optional)-
Максимальное время ожидания в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
-
callback
Runnable Added in: v1.9#Обратный вызов, который выполняет действие, вызывающее событие.
Returns
waitForURL
Added in: v1.11Ожидает, пока основной фрейм перейдет на указанный URL.
Usage
page.click("a.delayed-navigation"); // Клик по ссылке косвенно вызывает навигацию
page.waitForURL("**/target.html");
Arguments
-
url
String | Pattern | Predicate<String>#Глобальный шаблон, регулярное выражение или предикат, получающий [URL] для совпадения при ожидании навигации. Обратите внимание, что если параметр является строкой без символов подстановки, метод будет ожидать навигации к URL, который точно равен строке.
-
options
Page.WaitForURLOptions
(optional)-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout(). -
setWaitUntil
enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT }
(optional)#Когда считать операцию успешной, по умолчанию
load
. События могут быть:'domcontentloaded'
- считать операцию завершенной, когда вызвано событиеDOMContentLoaded
.'load'
- считать операцию завершенной, когда вызвано событиеload
.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'
- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
-
Returns
waitForWebSocket
Added in: v1.9Выполняет действие и ожидает новый WebSocket. Если предоставлен предикат, он передает значение WebSocket в функцию predicate
и ожидает, пока predicate(webSocket)
не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до вызова события WebSocket.
Usage
Page.waitForWebSocket(callback);
Page.waitForWebSocket(callback, options);
Arguments
-
options
Page.WaitForWebSocketOptions
(optional)-
setPredicate
Predicate<WebSocket> (optional)#Получает объект WebSocket и разрешает в истинное значение, когда ожидание должно разрешиться.
-
Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя BrowserContext.setDefaultTimeout().
-
-
Обратный вызов, который выполняет действие, вызывающее событие.
Returns
waitForWorker
Added in: v1.9Выполняет действие и ожидает новый Worker. Если предоставлен предикат, он передает значение Worker в функцию predicate
и ожидает, пока predicate(worker)
не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до вызова события worker.
Usage
Page.waitForWorker(callback);
Page.waitForWorker(callback, options);
Arguments
-
options
Page.WaitForWorkerOptions
(optional)-
setPredicate
Predicate<Worker> (optional)#Получает объект Worker и разрешает в истинное значение, когда ожидание должно разрешиться.
-
Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя BrowserContext.setDefaultTimeout().
-
-
Обратный вызов, который выполняет действие, вызывающее событие.
Returns
workers
Added before v1.9Этот метод возвращает всех выделенных WebWorkers, связанных со страницей.
Это не включает ServiceWorkers
Usage
Page.workers();
Returns
Properties
clock()
Added in: v1.45Playwright имеет возможность имитировать часы и ход времени.
Usage
Page.clock()
Returns
keyboard()
Added before v1.9Usage
Page.keyboard()
Returns
mouse()
Added before v1.9Usage
Page.mouse()
Returns
request()
Added in: v1.16Помощник для тестирования API, связанный с этой страницей. Этот метод возвращает тот же экземпляр, что и BrowserContext.request() в контексте страницы. См. BrowserContext.request() для получения более подробной информации.
Usage
Page.request()
Returns
touchscreen()
Added before v1.9Usage
Page.touchscreen()
Returns
Events
onClose(handler)
Added before v1.9Вызывается, когда страница закрывается.
Usage
Page.onClose(handler)
Event data
onConsoleMessage(handler)
Added before v1.9Вызывается, когда JavaScript на странице вызывает один из методов консольного API, например, console.log
или console.dir
.
Аргументы, переданные в console.log
, доступны в аргументе обработчика события ConsoleMessage.
Usage
page.onConsoleMessage(msg -> {
for (int i = 0; i < msg.args().size(); ++i)
System.out.println(i + ": " + msg.args().get(i).jsonValue());
});
page.evaluate("() => console.log('hello', 5, { foo: 'bar' })");
Event data
onCrash(handler)
Added before v1.9Вызывается, когда страница падает. Страницы браузера могут падать, если они пытаются выделить слишком много памяти. Когда страница падает, текущие и последующие операции будут выдавать ошибку.
Наиболее распространенный способ справиться с падениями - поймать исключение:
try {
// Падение может произойти во время клика.
page.click("button");
// Или во время ожидания события.
page.waitForPopup(() -> {});
} catch (PlaywrightException e) {
// Когда страница падает, сообщение об исключении содержит "crash".
}
Usage
Page.onCrash(handler)
Event data
onDialog(handler)
Added before v1.9Вызывается, когда появляется JavaScript-диалог, такой как alert
, prompt
, confirm
или beforeunload
. Слушатель должен либо Dialog.accept(), либо Dialog.dismiss() диалог - в противном случае страница заморозится, ожидая диалога, и действия, такие как клик, никогда не завершатся.
Использование
page.onDialog(dialog -> {
dialog.accept();
});
Когда нет слушателей Page.onDialog(handler) или BrowserContext.onDialog(handler), все диалоги автоматически отклоняются.
Данные события
onDOMContentLoaded(handler)
Added in: v1.9Вызывается, когда JavaScript-событие DOMContentLoaded
отправляется.
Использование
Page.onDOMContentLoaded(handler)
Данные события
onDownload(handler)
Added before v1.9Вызывается, когда начинается загрузка вложения. Пользователь может получить доступ к основным операциям с файлами на загруженном контенте через переданный экземпляр Download.
Использование
Page.onDownload(handler)
Данные события
onFileChooser(handler)
Added in: v1.9Вызывается, когда предполагается появление выбора файла, например, после нажатия на <input type=file>
. Playwright может ответить на это, установив файлы ввода с помощью FileChooser.setFiles(), которые могут быть загружены после этого.
page.onFileChooser(fileChooser -> {
fileChooser.setFiles(Paths.get("/tmp/myfile.pdf"));
});
Использование
Page.onFileChooser(handler)
Данные события
onFrameAttached(handler)
Added in: v1.9Вызывается, когда фрейм присоединяется.
Использование
Page.onFrameAttached(handler)
Данные события
onFrameDetached(handler)
Added in: v1.9Вызывается, когда фрейм отсоединяется.
Использование
Page.onFrameDetached(handler)
Данные события
onFrameNavigated(handler)
Added in: v1.9Вызывается, когда фрейм переходит на новый URL.
Использование
Page.onFrameNavigated(handler)
Данные события
onLoad(handler)
Added before v1.9Вызывается, когда JavaScript-событие load
отправляется.
Использование
Page.onLoad(handler)
Данные события
onPageError(handler)
Added in: v1.9Вызывается, когда на странице происходит необработанное исключение.
// Логировать все необработанные ошибки в терминал
page.onPageError(exception -> {
System.out.println("Uncaught exception: " + exception);
});
// Перейти на страницу с исключением.
page.navigate("data:text/html,<script>throw new Error('Test')</script>");
Использование
Page.onPageError(handler)
Данные события
onPopup(handler)
Added before v1.9Вызывается, когда страница открывает новую вкладку или окно. Это событие вызывается в дополнение к BrowserContext.onPage(handler), но только для всплывающих окон, относящихся к этой странице.
Самый ранний момент, когда страница доступна, это когда она перешла на начальный URL. Например, при открытии всплывающего окна с window.open('http://example.com')
, это событие сработает, когда сетевой запрос к "http://example.com" будет выполнен и его ответ начнет загружаться во всплывающем окне. Если вы хотите маршрутизировать/слушать этот сетевой запрос, используйте BrowserContext.route() и BrowserContext.onRequest(handler) соответственно вместо аналогичных методов на Page.
Page popup = page.waitForPopup(() -> {
page.getByText("open the popup").click();
});
System.out.println(popup.evaluate("location.href"));
Используйте Page.waitForLoadState(), чтобы дождаться, пока страница достигнет определенного состояния (в большинстве случаев это не потребуется).
Использование
Page.onPopup(handler)
Данные события
onRequest(handler)
Added before v1.9Вызывается, когда страница выполняет запрос. Объект request доступен только для чтения. Чтобы перехватывать и изменять запросы, смотрите Page.route() или BrowserContext.route().
Использование
Page.onRequest(handler)
Данные события
onRequestFailed(handler)
Added in: v1.9Вызывается, когда запрос не удается, например, из-за истечения времени ожидания.
page.onRequestFailed(request -> {
System.out.println(request.url() + " " + request.failure());
});
Ответы с ошибками HTTP, такие как 404 или 503, все еще считаются успешными ответами с точки зрения HTTP, поэтому запрос завершится событием Page.onRequestFinished(handler), а не Page.onRequestFailed(handler). Запрос будет считаться неудачным только в том случае, если клиент не может получить HTTP-ответ от сервера, например, из-за сетевой ошибки net::ERR_FAILED.
Использование
Page.onRequestFailed(handler)
Данные события
onRequestFinished(handler)
Added in: v1.9Вызывается, когда запрос успешно завершается после загрузки тела ответа. Для успешного ответа последовательность событий: request
, response
и requestfinished
.
Использование
Page.onRequestFinished(handler)
Данные события
onResponse(handler)
Added before v1.9Вызывается, когда response статус и заголовки получены для запроса. Для успешного ответа последовательность событий: request
, response
и requestfinished
.
Использование
Page.onResponse(handler)
Данные события
onWebSocket(handler)
Added in: v1.9Вызывается, когда отправляется запрос WebSocket.
Использование
Page.onWebSocket(handler)
Данные события
onWorker(handler)
Added before v1.9Вызывается, когда страница порождает выделенный WebWorker.
Использование
Page.onWorker(handler)
Данные события
Устарело
check
Added before v1.9Используйте основанный на локаторах Locator.check() вместо этого. Подробнее о локаторах.
Этот метод отмечает элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, этот метод возвращается немедленно.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в вид, если это необходимо.
- Используйте Page.mouse(), чтобы кликнуть в центр элемента.
- Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершены в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
Page.check(selector);
Page.check(selector, options);
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
options
Page.CheckOptions
(опционально)-
setForce
boolean (опционально)#Нужно ли обходить проверки actionability. По умолчанию
false
. -
setNoWaitAfter
boolean (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
setPosition
Position (опционально) Added in: v1.11#Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
setStrict
boolean (опционально) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout(). -
setTrial
boolean (опционально) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно, чтобы дождаться, пока элемент будет готов к действию, не выполняя его.
-
Возвращает
click
Added before v1.9Используйте основанный на локаторах Locator.click() вместо этого. Подробнее о локаторах.
Этот метод кликает по элементу, соответствующему selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в вид, если это необходимо.
- Используйте Page.mouse(), чтобы кликнуть в центр элемента или в указанную setPosition.
- Подождите, пока инициированные навигации либо не завершатся успешно, либо не завершатся с ошибкой, если только не установлена опция setNoWaitAfter.
Когда все шаги в совокупности не завершены в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
Page.click(selector);
Page.click(selector, options);
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
options
Page.ClickOptions
(опционально)-
setButton
enum MouseButton { LEFT, RIGHT, MIDDLE }
(опционально)#По умолчанию
left
. -
setClickCount
int (опционально)#по умолчанию 1. См. UIEvent.detail.
-
setDelay
double (опционально)#Время ожидания между
mousedown
иmouseup
в миллисекундах. По умолчанию 0. -
setForce
boolean (опционально)#Нужно ли обходить проверки actionability. По умолчанию
false
. -
setModifiers
List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }
> (опционально)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы обратно. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
setNoWaitAfter
boolean (опционально)#УстарелоЭта опция по умолчанию будет
true
в будущем.Действия, инициирующие навигации, ожидают, пока эти навигации не произойдут и страницы не начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Вам понадобится эта опция только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false
. -
setPosition
Position (опционально)#Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
setStrict
boolean (опционально) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout(). -
setTrial
boolean (опционально) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно, чтобы дождаться, пока элемент будет готов к действию, не выполняя его. Обратите внимание, что клавиатурныеmodifiers
будут нажаты независимо отtrial
, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
-
Возвращает
dblclick
Added before v1.9Используйте основанный на локаторах Locator.dblclick() вместо этого. Подробнее о локаторах.
Этот метод двойного клика по элементу, соответствующему selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в вид, если это необходимо.
- Используйте Page.mouse(), чтобы дважды кликнуть в центр элемента или в указанную setPosition.
Когда все шаги в совокупности не завершены в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
page.dblclick()
отправляет два события click
и одно событие dblclick
.
Использование
Page.dblclick(selector);
Page.dblclick(selector, options);
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
options
Page.DblclickOptions
(опционально)-
setButton
enum MouseButton { LEFT, RIGHT, MIDDLE }
(опционально)#По умолчанию
left
. -
setDelay
double (опционально)#Время ожидания между
mousedown
иmouseup
в миллисекундах. По умолчанию 0. -
setForce
boolean (опционально)#Нужно ли обходить проверки actionability. По умолчанию
false
. -
setModifiers
List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }
> (опционально)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы обратно. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
setNoWaitAfter
boolean (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
setPosition
Position (опционально)#Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
setStrict
boolean (опционально) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout(). -
setTrial
boolean (опционально) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно, чтобы дождаться, пока элемент будет готов к действию, не выполняя его. Обратите внимание, что клавиатурныеmodifiers
будут нажаты независимо отtrial
, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
-
Возвращает
dispatchEvent
Added before v1.9Use locator-based Locator.dispatchEvent() instead. Read more about locators.
Пример ниже отправляет событие click
на элемент. Независимо от состояния видимости элемента, click
отправляется. Это эквивалентно вызову element.click().
Usage
page.dispatchEvent("button#submit", "click");
Внутри создается экземпляр события на основе указанного type, инициализируется с помощью свойств eventInit и отправляется на элемент. События по умолчанию composed
, cancelable
и всплывают.
Поскольку eventInit специфичен для события, пожалуйста, обратитесь к документации по событиям для списков начальных свойств:
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
Вы также можете указать JSHandle
в качестве значения свойства, если хотите, чтобы живые объекты передавались в событие:
// Обратите внимание, что вы можете создать DataTransfer только в Chromium и Firefox
JSHandle dataTransfer = page.evaluateHandle("() => new DataTransfer()");
Map<String, Object> arg = new HashMap<>();
arg.put("dataTransfer", dataTransfer);
page.dispatchEvent("#source", "dragstart", arg);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Тип DOM события:
"click"
,"dragstart"
, и т.д. -
eventInit
EvaluationArgument (optional)#Необязательные свойства инициализации, специфичные для события.
-
options
Page.DispatchEventOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Returns
evalOnSelector
Added in: v1.9This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests. Use Locator.evaluate(), other Locator helper methods or web-first assertions instead.
Метод находит элемент, соответствующий указанному селектору на странице, и передает его в качестве первого аргумента в expression. Если ни один элемент не соответствует селектору, метод выдает ошибку. Возвращает значение expression.
Если expression возвращает Promise, то Page.evalOnSelector() будет ждать разрешения промиса и вернет его значение.
Usage
String searchValue = (String) page.evalOnSelector("#search", "el => el.value");
String preloadHref = (String) page.evalOnSelector("link[rel=preload]", "el => el.href");
String html = (String) page.evalOnSelector(".main-container", "(e, suffix) => e.outerHTML + suffix", "hello");
Arguments
-
Селектор для запроса.
-
JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (optional)#Необязательный аргумент для передачи в expression.
-
options
Page.EvalOnSelectorOptions
(optional)
Returns
evalOnSelectorAll
Added in: v1.9In most cases, Locator.evaluateAll(), other Locator helper methods and web-first assertions do a better job.
Метод находит все элементы, соответствующие указанному селектору на странице, и передает массив найденных элементов в качестве первого аргумента в expression. Возвращает результат вызова expression.
Если expression возвращает Promise, то Page.evalOnSelectorAll() будет ждать разрешения промиса и вернет его значение.
Usage
boolean divCounts = (boolean) page.evalOnSelectorAll("div", "(divs, min) => divs.length >= min", 10);
Arguments
-
Селектор для запроса.
-
JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (optional)#Необязательный аргумент для передачи в expression.
Returns
fill
Added before v1.9Use locator-based Locator.fill() instead. Read more about locators.
Этот метод ждет элемент, соответствующий selector, ждет проверки actionability, фокусируется на элементе, заполняет его и вызывает событие input
после заполнения. Обратите внимание, что вы можете передать пустую строку, чтобы очистить поле ввода.
Если целевой элемент не является <input>
, <textarea>
или [contenteditable]
элементом, этот метод выдает ошибку. Однако, если элемент находится внутри элемента <label>
, который имеет связанный control, будет заполнен именно этот элемент управления.
Для отправки более детализированных событий клавиатуры используйте Locator.pressSequentially().
Usage
Page.fill(selector, value);
Page.fill(selector, value, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Значение для заполнения элемента
<input>
,<textarea>
или[contenteditable]
. -
options
Page.FillOptions
(optional)-
setForce
boolean (optional) Added in: v1.13#Нужно ли обходить проверки actionability. По умолчанию
false
. -
setNoWaitAfter
boolean (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Returns
focus
Added before v1.9Use locator-based Locator.focus() instead. Read more about locators.
Этот метод получает элемент с selector и фокусируется на нем. Если нет элемента, соответствующего selector, метод ждет, пока соответствующий элемент не появится в DOM.
Usage
Page.focus(selector);
Page.focus(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.FocusOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods.
-
Returns
getAttribute
Added before v1.9Use locator-based Locator.getAttribute() instead. Read more about locators.
Возвращает значение атрибута элемента.
Usage
Page.getAttribute(selector, name);
Page.getAttribute(selector, name, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя атрибута, для которого нужно получить значение.
-
options
Page.GetAttributeOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods.
-
Returns
hover
Added before v1.9Use locator-based Locator.hover() instead. Read more about locators.
Этот метод наводит курсор на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите проверки actionability на найденном элементе, если не установлен параметр setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в вид, если это необходимо.
- Используйте Page.mouse(), чтобы навести курсор на центр элемента или указанную позицию setPosition.
Когда все шаги в совокупности не завершены в течение указанного времени setTimeout, этот метод выдает TimeoutError. Передача нулевого тайм-аута отключает это.
Usage
Page.hover(selector);
Page.hover(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.HoverOptions
(optional)-
Нужно ли обходить проверки actionability. По умолчанию
false
. -
setModifiers
List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }
> (optional)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы обратно. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
setNoWaitAfter
boolean (optional) Added in: v1.28#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
setPosition
Position (optional)#Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods. -
setTrial
boolean (optional) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiers
будут нажаты независимо отtrial
, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
-
Returns
innerHTML
Added before v1.9Use locator-based Locator.innerHTML() instead. Read more about locators.
Возвращает element.innerHTML
.
Usage
Page.innerHTML(selector);
Page.innerHTML(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.InnerHTMLOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods.
-
Returns
innerText
Added before v1.9Use locator-based Locator.innerText() instead. Read more about locators.
Возвращает element.innerText
.
Usage
Page.innerText(selector);
Page.innerText(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.InnerTextOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods.
-
Returns
inputValue
Added in: v1.13Use locator-based Locator.inputValue() instead. Read more about locators.
Возвращает input.value
для выбранного элемента <input>
, <textarea>
или <select>
.
Выдает ошибку для не-вводных элементов. Однако, если элемент находится внутри элемента <label>
, который имеет связанный control, возвращает значение этого элемента управления.
Usage
Page.inputValue(selector);
Page.inputValue(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.InputValueOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods.
-
Returns
isChecked
Added before v1.9Use locator-based Locator.isChecked() instead. Read more about locators.
Возвращает, отмечен ли элемент. Выдает ошибку, если элемент не является флажком или радиокнопкой.
Usage
Page.isChecked(selector);
Page.isChecked(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.IsCheckedOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods.
-
Returns
isDisabled
Added before v1.9Use locator-based Locator.isDisabled() instead. Read more about locators.
Возвращает, отключен ли элемент, противоположность enabled.
Usage
Page.isDisabled(selector);
Page.isDisabled(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.IsDisabledOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods.
-
Returns
isEditable
Added before v1.9Use locator-based Locator.isEditable() instead. Read more about locators.
Возвращает, является ли элемент редактируемым.
Usage
Page.isEditable(selector);
Page.isEditable(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.IsEditableOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Returns
isEnabled
Added before v1.9Use locator-based Locator.isEnabled() instead. Read more about locators.
Возвращает, является ли элемент включенным.
Usage
Page.isEnabled(selector);
Page.isEnabled(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.IsEnabledOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Returns
isHidden
Added before v1.9Use locator-based Locator.isHidden() instead. Read more about locators.
Возвращает, является ли элемент скрытым, противоположность видимости. selector, который не соответствует ни одному элементу, считается скрытым.
Usage
Page.isHidden(selector);
Page.isHidden(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.IsHiddenOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Deprecated
Этот параметр игнорируется. Page.isHidden() не ждет, пока элемент станет скрытым, и возвращается немедленно.
-
Returns
isVisible
Added before v1.9Use locator-based Locator.isVisible() instead. Read more about locators.
Возвращает, является ли элемент видимым. selector, который не соответствует ни одному элементу, считается невидимым.
Usage
Page.isVisible(selector);
Page.isVisible(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.IsVisibleOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Deprecated
Этот параметр игнорируется. Page.isVisible() не ждет, пока элемент станет видимым, и возвращается немедленно.
-
Returns
press
Added before v1.9Use locator-based Locator.press() instead. Read more about locators.
Фокусируется на элементе, а затем использует Keyboard.down() и Keyboard.up().
key может указывать предполагаемое значение keyboardEvent.key или один символ для генерации текста. Надмножество значений key можно найти здесь. Примеры клавиш:
F1
- F12
, Digit0
- Digit9
, KeyA
- KeyZ
, Backquote
, Minus
, Equal
, Backslash
, Backspace
, Tab
, Delete
, Escape
, ArrowDown
, End
, Enter
, Home
, Insert
, PageDown
, PageUp
, ArrowRight
, ArrowUp
и т.д.
Также поддерживаются следующие модификационные сочетания: Shift
, Control
, Alt
, Meta
, ShiftLeft
, ControlOrMeta
. ControlOrMeta
разрешается в Control
на Windows и Linux и в Meta
на macOS.
Удержание Shift
будет вводить текст, соответствующий key в верхнем регистре.
Если key является одним символом, он чувствителен к регистру, поэтому значения a
и A
будут генерировать разные соответствующие тексты.
Также поддерживаются сочетания клавиш, такие как key: "Control+o"
, key: "Control++
или key: "Control+Shift+T"
. При указании с модификатором, модификатор нажимается и удерживается, пока не будет нажата последующая клавиша.
Usage
Page page = browser.newPage();
page.navigate("https://keycode.info");
page.press("body", "A");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("A.png")));
page.press("body", "ArrowLeft");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("ArrowLeft.png" )));
page.press("body", "Shift+O");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("O.png" )));
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя клавиши для нажатия или символ для генерации, например,
ArrowLeft
илиa
. -
options
Page.PressOptions
(optional)-
Время ожидания между
keydown
иkeyup
в миллисекундах. По умолчанию 0. -
setNoWaitAfter
boolean (optional)#DeprecatedЭтот параметр по умолчанию будет
true
в будущем.Действия, инициирующие навигацию, ожидают, пока эти навигации произойдут и страницы начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Вам понадобится этот параметр только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false
. -
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Returns
querySelector
Added in: v1.9Use locator-based Page.locator() instead. Read more about locators.
Метод находит элемент, соответствующий указанному селектору на странице. Если ни один элемент не соответствует селектору, возвращаемое значение разрешается в null
. Чтобы дождаться элемента на странице, используйте Locator.waitFor().
Usage
Page.querySelector(selector);
Page.querySelector(selector, options);
Arguments
-
Селектор для запроса.
-
options
Page.QuerySelectorOptions
(optional)
Returns
querySelectorAll
Added in: v1.9Use locator-based Page.locator() instead. Read more about locators.
Метод находит все элементы, соответствующие указанному селектору на странице. Если ни один элемент не соответствует селектору, возвращаемое значение разрешается в []
.
Usage
Page.querySelectorAll(selector);
Arguments
Returns
selectOption
Added before v1.9Use locator-based Locator.selectOption() instead. Read more about locators.
Этот метод ожидает элемент, соответствующий selector, ожидает проверки actionability, ждет, пока все указанные опции не будут присутствовать в элементе <select>
, и выбирает эти опции.
Если целевой элемент не является элементом <select>
, этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>
, который имеет ассоциированный control, будет использован контроль.
Возвращает массив значений опций, которые были успешно выбраны.
Вызывает событие change
и input
, как только все предоставленные опции были выбраны.
Usage
// Single selection matching the value or label
page.selectOption("select#colors", "blue");
// single selection matching both the value and the label
page.selectOption("select#colors", new SelectOption().setLabel("Blue"));
// multiple selection
page.selectOption("select#colors", new String[] {"red", "green", "blue"});
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
values
null | String | ElementHandle | String[] |SelectOption
| ElementHandle[] |SelectOption
[]#-
setValue
String (optional)Соответствует
option.value
. Необязательно. -
setLabel
String (optional)Соответствует
option.label
. Необязательно. -
setIndex
int (optional)Соответствует индексу. Необязательно.
Опции для выбора. Если
<select>
имеет атрибутmultiple
, все соответствующие опции выбираются, в противном случае выбирается только первая опция, соответствующая одной из переданных опций. Строковые значения соответствуют как значениям, так и меткам. Опция считается соответствующей, если все указанные свойства совпадают. -
-
options
Page.SelectOptionOptions
(optional)-
setForce
boolean (optional) Added in: v1.13#Обойти проверки actionability. По умолчанию
false
. -
setNoWaitAfter
boolean (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Returns
setChecked
Added in: v1.15Use locator-based Locator.setChecked() instead. Read more about locators.
Этот метод отмечает или снимает отметку с элемента, соответствующего selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение.
- Если элемент уже имеет правильное состояние, этот метод возвращается немедленно.
- Подождите проверки actionability на найденном элементе, если не установлен параметр setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в вид, если это необходимо.
- Используйте Page.mouse(), чтобы щелкнуть в центре элемента.
- Убедитесь, что элемент теперь отмечен или снят. Если нет, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершены в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
Usage
Page.setChecked(selector, checked);
Page.setChecked(selector, checked, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Отметить или снять отметку с флажка.
-
options
Page.SetCheckedOptions
(optional)-
Обойти проверки actionability. По умолчанию
false
. -
setNoWaitAfter
boolean (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
setPosition
Position (optional)#Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods. -
Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно, чтобы дождаться, пока элемент будет готов к действию, не выполняя его.
-
Returns
setInputFiles
Added before v1.9Use locator-based Locator.setInputFiles() instead. Read more about locators.
Устанавливает значение входного файла на эти пути файлов или файлы. Если некоторые из filePaths
являются относительными путями, они разрешаются относительно текущего рабочего каталога. Для пустого массива очищает выбранные файлы. Для входов с атрибутом [webkitdirectory]
поддерживается только один путь к каталогу.
Этот метод ожидает, что selector указывает на input element. Однако, если элемент находится внутри элемента <label>
, который имеет ассоциированный control, будет использован контроль.
Usage
Page.setInputFiles(selector, files);
Page.setInputFiles(selector, files, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.SetInputFilesOptions
(optional)-
setNoWaitAfter
boolean (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods.
-
Returns
tap
Added before v1.9Use locator-based Locator.tap() instead. Read more about locators.
Этот метод нажимает на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите проверки actionability на найденном элементе, если не установлен параметр setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в вид, если это необходимо.
- Используйте Page.touchscreen(), чтобы нажать в центре элемента или в указанной setPosition.
Когда все шаги в совокупности не завершены в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
Метод Page.tap() выбросит исключение, если параметр setHasTouch контекста браузера равен false.
Usage
Page.tap(selector);
Page.tap(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.TapOptions
(optional)-
Обойти проверки actionability. По умолчанию
false
. -
setModifiers
List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }
> (optional)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы обратно. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
setNoWaitAfter
boolean (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
setPosition
Position (optional)#Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods. -
setTrial
boolean (optional) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно, чтобы дождаться, пока элемент будет готов к действию, не выполняя его. Обратите внимание, что клавиатурныеmodifiers
будут нажаты независимо отtrial
, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
-
Returns
textContent
Added before v1.9Use locator-based Locator.textContent() instead. Read more about locators.
Возвращает element.textContent
.
Usage
Page.textContent(selector);
Page.textContent(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.TextContentOptions
(optional)-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Returns
type
Added before v1.9In most cases, you should use Locator.fill() instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use Locator.pressSequentially().
Отправляет событие keydown
, keypress
/input
и keyup
для каждого символа в тексте. page.type
может использоваться для отправки детализированных событий клавиатуры. Для заполнения значений в полях формы используйте Page.fill().
Чтобы нажать специальную клавишу, такую как Control
или ArrowDown
, используйте Keyboard.press().
Usage
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Текст для ввода в фокусированный элемент.
-
options
Page.TypeOptions
(optional)-
Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию 0.
-
setNoWaitAfter
boolean (optional)#DeprecatedThis option has no effect.
This option has no effect.
-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Returns
uncheck
Added before v1.9Use locator-based Locator.uncheck() instead. Read more about locators.
Этот метод снимает отметку с элемента, соответствующего selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже снят с отметки, этот метод возвращается немедленно.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если не установлена опция setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.mouse(), чтобы щелкнуть в центре элемента.
- Убедитесь, что элемент теперь снят с отметки. Если нет, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершены в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
Usage
Page.uncheck(selector);
Page.uncheck(selector, options);
Arguments
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Page.UncheckOptions
(optional)-
Нужно ли обходить проверки actionability. По умолчанию
false
. -
setNoWaitAfter
boolean (optional)#DeprecatedThis option has no effect.
This option has no effect.
-
setPosition
Position (optional) Added in: v1.11#Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout(). -
setTrial
boolean (optional) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Returns
waitForNavigation
Added before v1.9This method is inherently racy, please use Page.waitForURL() instead.
Ожидает навигации основного фрейма и возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления. В случае навигации к другому якорю или навигации из-за использования History API, навигация будет разрешена с null
.
Usage
Это разрешается, когда страница переходит на новый URL или перезагружается. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию страницы. Например, цель клика имеет обработчик onclick
, который вызывает навигацию из setTimeout
. Рассмотрим этот пример:
// Метод возвращается после завершения навигации
Response response = page.waitForNavigation(() -> {
// Это действие вызывает навигацию после тайм-аута.
page.getByText("Navigate after timeout").click();
});
Использование History API для изменения URL считается навигацией.
Arguments
-
options
Page.WaitForNavigationOptions
(optional)-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout(). -
setUrl
String | Pattern | Predicate<String> (optional)#Глобальный шаблон, регулярное выражение или предикат, получающий [URL] для соответствия при ожидании навигации. Обратите внимание, что если параметр является строкой без символов подстановки, метод будет ожидать навигации к URL, который точно равен строке.
-
setWaitUntil
enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT }
(optional)#Когда считать операцию успешной, по умолчанию
load
. События могут быть:'domcontentloaded'
- считать операцию завершенной, когда событиеDOMContentLoaded
будет вызвано.'load'
- считать операцию завершенной, когда событиеload
будет вызвано.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'
- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
-
-
callback
Runnable Added in: v1.9#Обратный вызов, выполняющий действие, вызывающее событие.
Returns
waitForSelector
Added before v1.9Use web assertions that assert visibility or a locator-based Locator.waitFor() instead. Read more about locators.
Возвращает, когда элемент, указанный селектором, удовлетворяет опции setState. Возвращает null
, если ожидание для hidden
или detached
.
Playwright автоматически ожидает, пока элемент будет готов перед выполнением действия. Использование объектов Locator и веб-первых утверждений делает код свободным от ожидания селектора.
Ожидайте, пока selector не удовлетворит опцию setState (либо появится/исчезнет из DOM, либо станет видимым/скрытым). Если на момент вызова метода selector уже удовлетворяет условию, метод вернется немедленно. Если селектор не удовлетворяет условию в течение setTimeout миллисекунд, функция выбросит исключение.
Usage
Этот метод работает через навигации:
import com.microsoft.playwright.*;
public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType chromium = playwright.chromium();
Browser browser = chromium.launch();
Page page = browser.newPage();
for (String currentURL : Arrays.asList("https://google.com", "https://bbc.com")) {
page.navigate(currentURL);
ElementHandle element = page.waitForSelector("img");
System.out.println("Loaded image: " + element.getAttribute("src"));
}
browser.close();
}
}
}
Arguments
-
Селектор для запроса.
-
options
Page.WaitForSelectorOptions
(optional)-
setState
enum WaitForSelectorState { ATTACHED, DETACHED, VISIBLE, HIDDEN }
(optional)#По умолчанию
'visible'
. Может быть:'attached'
- ожидание, пока элемент будет присутствовать в DOM.'detached'
- ожидание, пока элемент не будет присутствовать в DOM.'visible'
- ожидание, пока элемент не будет иметь пустую рамку и не будетvisibility:hidden
. Обратите внимание, что элемент без содержимого или сdisplay:none
имеет пустую рамку и не считается видимым.'hidden'
- ожидание, пока элемент не будет отсоединен от DOM, или не будет иметь пустую рамку илиvisibility:hidden
. Это противоположно опции'visible'
.
-
setStrict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Returns
waitForTimeout
Added before v1.9Never wait for timeout in production. Tests that wait for time are inherently flaky. Use Locator actions and web assertions that wait automatically.
Ожидает заданный timeout в миллисекундах.
Обратите внимание, что page.waitForTimeout()
следует использовать только для отладки. Тесты, использующие таймер в производстве, будут ненадежными. Используйте сигналы, такие как сетевые события, селекторы, становящиеся видимыми, и другие.
Usage
// ожидание 1 секунду
page.waitForTimeout(1000);
Arguments
Returns