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

Страницы

Страницы

Каждый BrowserContext может содержать несколько страниц. Page относится к одной вкладке или всплывающему окну в контексте браузера. Он должен использоваться для навигации по URL-адресам и взаимодействия с содержимым страницы.

page = context.new_page()

# Явная навигация, аналогично вводу URL в браузере.
page.goto('http://example.com')
# Заполнение поля ввода.
page.locator('#search').fill('query')

# Неявная навигация путем нажатия на ссылку.
page.locator('#submit').click()
# Ожидание нового URL.
print(page.url)

Несколько страниц

Каждый контекст браузера может содержать несколько страниц (вкладок).

  • Каждая страница ведет себя как активная страница. Перемещение страницы на передний план не требуется.
  • Страницы в контексте учитывают эмуляцию на уровне контекста, такую как размеры окна просмотра, пользовательские сетевые маршруты или локаль браузера.
# создание двух страниц
page_one = context.new_page()
page_two = context.new_page()

# получение страниц контекста браузера
all_pages = context.pages

Обработка новых страниц

Событие page в контексте браузера может использоваться для получения новых страниц, созданных в контексте. Это может быть использовано для обработки новых страниц, открытых ссылками с target="_blank".

# Получение страницы после определенного действия (например, нажатия на ссылку)
with context.expect_page() as new_page_info:
page.get_by_text("open new tab").click() # Открывает новую вкладку
new_page = new_page_info.value

# Обычное взаимодействие с новой страницей
new_page.get_by_role("button").click()
print(new_page.title())

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

# Получение всех новых страниц (включая всплывающие окна) в контексте
def handle_page(page):
page.wait_for_load_state()
print(page.title())

context.on("page", handle_page)

Обработка всплывающих окон

Если страница открывает всплывающее окно (например, страницы, открытые ссылками с target="_blank"), вы можете получить ссылку на него, прослушивая событие popup на странице.

Это событие генерируется в дополнение к событию browserContext.on('page'), но только для всплывающих окон, относящихся к этой странице.

# Получение всплывающего окна после определенного действия (например, нажатия)
with page.expect_popup() as popup_info:
page.get_by_text("open the popup").click()
popup = popup_info.value

# Обычное взаимодействие со всплывающим окном
popup.get_by_role("button").click()
print(popup.title())

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

# Получение всех всплывающих окон при их открытии
def handle_popup(popup):
popup.wait_for_load_state()
print(popup.title())

page.on("popup", handle_popup)