Страницы
Страницы
Каждый BrowserContext может содержать несколько страниц. Page относится к одной вкладке или всплывающему окну в контексте браузера. Он должен использоваться для навигации по URL-адресам и взаимодействия с содержимым страницы.
// Создать страницу.
Page page = context.newPage();
// Явная навигация, аналогичная вводу URL в браузере.
page.navigate("http://example.com");
// Заполнить поле ввода.
page.locator("#search").fill("query");
// Неявная навигация путем нажатия на ссылку.
page.locator("#submit").click();
// Ожидание нового URL.
System.out.println(page.url());
Несколько страниц
Каждый контекст браузера может содержать несколько страниц (вкладок).
- Каждая страница ведет себя как сфокусированная, активная страница. Выводить страницу на передний план не требуется.
- Страницы в контексте учитывают эмуляцию на уровне контекста, такую как размеры окна просмотра, пользовательские сетевые маршруты или локаль браузера.
// Создать две страницы
Page pageOne = context.newPage();
Page pageTwo = context.newPage();
// Получить страницы контекста браузера
List<Page> allPages = context.pages();
Обработка новых страниц
Событие page
в контекстах браузера может использоваться для получения новых страниц, созданных в контексте. Это может быть использовано для обработки новых страниц, открытых ссылками с target="_blank"
.
// Получить страницу после определенного действия (например, нажатия на ссылку)
Page newPage = context.waitForPage(() -> {
page.getByText("open new tab").click(); // Открывает новую вкладку
});
// Взаимодействовать с новой страницей как обычно
newPage.getByRole(AriaRole.BUTTON).click();
System.out.println(newPage.title());
Если действие, которое вызывает новую страницу, неизвестно, можно использовать следующий шаблон.
// Получить все новые страницы (включая всплывающие окна) в контексте
context.onPage(page -> {
page.waitForLoadState();
System.out.println(page.title());
});
Обработка всплывающих окон
Если страница открывает всплывающее окно (например, страницы, открытые ссылками с target="_blank"
), вы можете получить ссылку на него, прослушивая событие popup
на странице.
Это событие генерируется в дополнение к событию browserContext.on('page')
, но только для всплывающих окон, относящихся к этой странице.
// Получить всплывающее окно после определенного действия (например, нажатия)
Page popup = page.waitForPopup(() -> {
page.getByText("open the popup").click();
});
// Взаимодействовать с всплывающим окном как обычно
popup.getByRole(AriaRole.BUTTON).click();
System.out.println(popup.title());
Если действие, которое вызывает всплывающее окно, неизвестно, можно использовать следующий шаблон.
// Получить все всплывающие окна при их открытии
page.onPopup(popup -> {
popup.waitForLoadState();
System.out.println(popup.title());
});