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

Страницы

Страницы

Каждый 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());
});