ページ
ページ
各BrowserContextは複数のページを持つことができます。Pageは、ブラウザコンテキスト内の単一のタブまたはポップアップウィンドウを指します。URL に移動し、ページコンテンツを操作するために使用する必要があります。
// Create a page.
Page page = context.newPage();
// Navigate explicitly, similar to entering a URL in the browser.
page.navigate("http://example.com");
// Fill an input.
page.locator("#search").fill("query");
// Navigate implicitly by clicking a link.
page.locator("#submit").click();
// Expect a new url.
System.out.println(page.url());
複数のページ
各ブラウザコンテキストは、複数のページ(タブ)をホストできます。
- 各ページは、フォーカスされたアクティブなページのように動作します。ページを前面に表示する必要はありません。
- コンテキスト内のページは、ビューポートサイズ、カスタムネットワークルート、ブラウザロケールなどのコンテキストレベルのエミュレーションを尊重します。
// Create two pages
Page pageOne = context.newPage();
Page pageTwo = context.newPage();
// Get pages of a browser context
List<Page> allPages = context.pages();
新しいページの処理
ブラウザコンテキストの page
イベントを使用すると、コンテキストで作成された新しいページを取得できます。これは、target="_blank"
リンクによって開かれた新しいページを処理するために使用できます。
// Get page after a specific action (e.g. clicking a link)
Page newPage = context.waitForPage(() -> {
page.getByText("open new tab").click(); // Opens a new tab
});
// Interact with the new page normally
newPage.getByRole(AriaRole.BUTTON).click();
System.out.println(newPage.title());
新しいページをトリガーするアクションが不明な場合は、次のパターンを使用できます。
// Get all new pages (including popups) in the context
context.onPage(page -> {
page.waitForLoadState();
System.out.println(page.title());
});
ポップアップの処理
ページがポップアップを開く場合(例:target="_blank"
リンクによって開かれたページ)、ページの popup
イベントをリッスンすることで、ポップアップへの参照を取得できます。
このイベントは、browserContext.on('page')
イベントに加えて発行されますが、このページに関連するポップアップのみが対象です。
// Get popup after a specific action (e.g., click)
Page popup = page.waitForPopup(() -> {
page.getByText("open the popup").click();
});
// Interact with the popup normally
popup.getByRole(AriaRole.BUTTON).click();
System.out.println(popup.title());
ポップアップをトリガーするアクションが不明な場合は、次のパターンを使用できます。
// Get all popups when they open
page.onPopup(popup -> {
popup.waitForLoadState();
System.out.println(popup.title());
});