Page
Page は、Browser 内の単一のタブ、または Chromium の拡張機能のバックグラウンドページを操作するためのメソッドを提供します。1 つの Browser インスタンスは、複数の Page インスタンスを持つことができます。
この例では、ページを作成し、URL に移動して、スクリーンショットを保存します。
- Sync
- Async
from playwright.sync_api import sync_playwright, Playwright
def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch()
context = browser.new_context()
page = context.new_page()
page.goto("https://example.com")
page.screenshot(path="screenshot.png")
browser.close()
with sync_playwright() as playwright:
run(playwright)
import asyncio
from playwright.async_api import async_playwright, Playwright
async def run(playwright: Playwright):
webkit = playwright.webkit
browser = await webkit.launch()
context = await browser.new_context()
page = await context.new_page()
await page.goto("https://example.com")
await page.screenshot(path="screenshot.png")
await browser.close()
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
Page クラスは、Node.js ネイティブの EventEmitter
メソッド (on
、once
、removeListener
など) を使用して処理できるさまざまなイベント (下記参照) を発行します。
この例では、単一ページの load
イベントのメッセージをログに記録します。
page.once("load", lambda: print("page loaded!"))
イベントの登録を解除するには、removeListener
メソッドを使用します。
def log_request(intercepted_request):
print("a request was made:", intercepted_request.url)
page.on("request", log_request)
# sometime later...
page.remove_listener("request", log_request)
メソッド
add_init_script
v1.9 より前に追加次のいずれかのシナリオで評価されるスクリプトを追加します。
- ページがナビゲートされるたび。
- 子フレームがアタッチまたはナビゲートされるたび。この場合、スクリプトは新しくアタッチされたフレームのコンテキストで評価されます。
スクリプトは、ドキュメントが作成された後、そのスクリプトが実行される前に評価されます。これは、JavaScript 環境を修正する (例: Math.random
をシードする) のに役立ちます。
使用例
ページが読み込まれる前に Math.random
をオーバーライドする例
// preload.js
Math.random = () => 42;
- Sync
- Async
# in your playwright script, assuming the preload.js file is in same directory
page.add_init_script(path="./preload.js")
# in your playwright script, assuming the preload.js file is in same directory
await page.add_init_script(path="./preload.js")
browser_context.add_init_script() および page.add_init_script() を介してインストールされた複数のスクリプトの評価順序は定義されていません。
引数
-
path
Union[str, pathlib.Path] (オプション)#JavaScript ファイルへのパス。
path
が相対パスの場合、現在の作業ディレクトリからの相対パスとして解決されます。オプション。 -
ブラウザコンテキスト内のすべてのページで評価されるスクリプト。オプション。
戻り値
add_locator_handler
追加: v1.42ウェブページをテストしていると、「サインアップ」ダイアログのような予期しないオーバーレイが表示され、ボタンをクリックするなど、自動化したいアクションをブロックすることがあります。これらのオーバーレイは、常に同じように、または同時に表示されるとは限らず、自動テストで処理するのが難しい場合があります。
このメソッドを使用すると、オーバーレイが可視であることを検出したときにアクティブになる特別な関数 (ハンドラーと呼ばれる) を設定できます。ハンドラーの役割は、オーバーレイを削除し、オーバーレイが存在しなかったかのようにテストを続行できるようにすることです。
留意すべき点
- オーバーレイが予測可能に表示される場合は、page.add_locator_handler() を使用する代わりに、テストで明示的にオーバーレイを待機し、通常のテストフローの一部としてそれを閉じることが推奨されます。
- Playwright は、アクション実行可能性チェックが必要なアクションを実行または再試行する前、または自動待機アサーションチェックを実行する前に、毎回オーバーレイをチェックします。オーバーレイが可視の場合、Playwright は最初にハンドラーを呼び出し、その後アクション/アサーションを続行します。ハンドラーは、アクション/アサーションを実行した場合にのみ呼び出されることに注意してください。オーバーレイが可視になっても、アクションを実行しない場合、ハンドラーはトリガーされません。
- ハンドラーの実行後、Playwright は、ハンドラーをトリガーしたオーバーレイがもう可視でないことを確認します。no_wait_after を使用して、この動作をオプトアウトできます。
- ハンドラーの実行時間は、ハンドラーを実行したアクション/アサーションのタイムアウトにカウントされます。ハンドラーに時間がかかりすぎると、タイムアウトが発生する可能性があります。
- 複数のハンドラーを登録できます。ただし、一度に実行されるハンドラーは 1 つだけです。ハンドラー内のアクションが別のハンドラーに依存しないようにしてください。
ハンドラーを実行すると、テスト中にページの状態が変更されます。たとえば、現在フォーカスされている要素が変更され、マウスが移動します。ハンドラーの後に実行されるアクションが自己完結型であり、フォーカスとマウスの状態が変更されないことに依存しないようにしてください。
たとえば、locator.focus() の後に keyboard.press() を呼び出すテストを考えてみましょう。ハンドラーがこれら 2 つのアクションの間にボタンをクリックすると、フォーカスされている要素が間違っている可能性が高く、キープレスが予期しない要素で発生します。この問題を回避するには、代わりに locator.press() を使用してください。
別の例は、一連のマウスアクションで、mouse.move() の後に mouse.down() が続く場合です。ここでも、ハンドラーがこれら 2 つのアクションの間に実行されると、マウスダウン中にマウスの位置が間違っています。ハンドラーによって状態が変更されないことに依存しない locator.click() のような自己完結型のアクションを優先してください。
使用例
表示されたときに「ニュースレターにサインアップ」ダイアログを閉じる例
- Sync
- Async
# Setup the handler.
def handler():
page.get_by_role("button", name="No thanks").click()
page.add_locator_handler(page.get_by_text("Sign up to the newsletter"), handler)
# Write the test as usual.
page.goto("https://example.com")
page.get_by_role("button", name="Start here").click()
# Setup the handler.
def handler():
await page.get_by_role("button", name="No thanks").click()
await page.add_locator_handler(page.get_by_text("Sign up to the newsletter"), handler)
# Write the test as usual.
await page.goto("https://example.com")
await page.get_by_role("button", name="Start here").click()
表示されたときに「セキュリティの詳細を確認してください」ページをスキップする例
- Sync
- Async
# Setup the handler.
def handler():
page.get_by_role("button", name="Remind me later").click()
page.add_locator_handler(page.get_by_text("Confirm your security details"), handler)
# Write the test as usual.
page.goto("https://example.com")
page.get_by_role("button", name="Start here").click()
# Setup the handler.
def handler():
await page.get_by_role("button", name="Remind me later").click()
await page.add_locator_handler(page.get_by_text("Confirm your security details"), handler)
# Write the test as usual.
await page.goto("https://example.com")
await page.get_by_role("button", name="Start here").click()
すべてのアクション実行可能性チェックでカスタムコールバックを使用する例。常に可視である <body>
ロケーターを使用するため、ハンドラーはすべてのアクション実行可能性チェックの前に呼び出されます。no_wait_after を指定することが重要です。これは、ハンドラーが <body>
要素を非表示にしないためです。
- Sync
- Async
# Setup the handler.
def handler():
page.evaluate("window.removeObstructionsForTestIfNeeded()")
page.add_locator_handler(page.locator("body"), handler, no_wait_after=True)
# Write the test as usual.
page.goto("https://example.com")
page.get_by_role("button", name="Start here").click()
# Setup the handler.
def handler():
await page.evaluate("window.removeObstructionsForTestIfNeeded()")
await page.add_locator_handler(page.locator("body"), handler, no_wait_after=True)
# Write the test as usual.
await page.goto("https://example.com")
await page.get_by_role("button", name="Start here").click()
ハンドラーは、元のロケーターを引数として取ります。times を設定することで、呼び出し回数後にハンドラーを自動的に削除することもできます。
- Sync
- Async
def handler(locator):
locator.click()
page.add_locator_handler(page.get_by_label("Close"), handler, times=1)
def handler(locator):
await locator.click()
await page.add_locator_handler(page.get_by_label("Close"), handler, times=1)
引数
-
ハンドラーをトリガーするロケーター。
-
handler
Callable[Locator]:Promise[Any]#locator が表示されたら実行される関数。この関数は、クリックなどのアクションをブロックする要素を取り除く必要があります。
-
no_wait_after
bool (オプション)追加: v1.44#デフォルトでは、ハンドラーを呼び出した後、Playwright はオーバーレイが非表示になるまで待機し、その後でのみ Playwright はハンドラーをトリガーしたアクション/アサーションを続行します。このオプションを使用すると、オーバーレイがハンドラーの実行後も表示されたままになるように、この動作をオプトアウトできます。
-
このハンドラーを呼び出す最大回数を指定します。デフォルトでは無制限です。
戻り値
add_script_tag
v1.9 より前に追加目的の URL またはコンテンツを使用して、<script>
タグをページに追加します。スクリプトの onload が発生したとき、またはスクリプトコンテンツがフレームに挿入されたときに、追加されたタグを返します。
使用例
page.add_script_tag()
page.add_script_tag(**kwargs)
引数
-
フレームに挿入される生の JavaScript コンテンツ。
-
path
Union[str, pathlib.Path] (オプション)#フレームに挿入される JavaScript ファイルへのパス。
path
が相対パスの場合、現在の作業ディレクトリからの相対パスとして解決されます。 -
スクリプトタイプ。JavaScript ES6 モジュールをロードするには、「module」を使用します。詳細については、script を参照してください。
-
追加するスクリプトの URL。
戻り値
add_style_tag
v1.9 より前に追加目的の URL を持つ <link rel="stylesheet">
タグ、またはコンテンツを持つ <style type="text/css">
タグをページに追加します。スタイルシートの onload が発生したとき、または CSS コンテンツがフレームに挿入されたときに、追加されたタグを返します。
使用例
page.add_style_tag()
page.add_style_tag(**kwargs)
引数
-
フレームに挿入される生の CSS コンテンツ。
-
path
Union[str, pathlib.Path] (オプション)#フレームに挿入される CSS ファイルへのパス。
path
が相対パスの場合、現在の作業ディレクトリからの相対パスとして解決されます。 -
<link>
タグの URL。
戻り値
bring_to_front
v1.9 より前に追加ページを前面に表示します (タブをアクティブ化)。
使用例
page.bring_to_front()
戻り値
close
v1.9 より前に追加run_before_unload が false
の場合、unload ハンドラーを実行せずに、ページが閉じられるのを待ちます。run_before_unload が true
の場合、このメソッドは unload ハンドラーを実行しますが、ページが閉じるのを待機しません。
デフォルトでは、page.close()
は beforeunload
ハンドラーを実行しません。
run_before_unload が true として渡された場合、beforeunload
ダイアログが召喚される可能性があり、page.on("dialog") イベントを介して手動で処理する必要があります。
使用例
page.close()
page.close(**kwargs)
引数
-
ページを閉じることによって中断された操作に報告される理由。
-
run_before_unload
bool (オプション)#デフォルトは
false
です。before unload ページハンドラーを実行するかどうか。
戻り値
content
v1.9 より前に追加ドキュメントタイプを含む、ページの完全な HTML コンテンツを取得します。
使用例
page.content()
戻り値
drag_and_drop
追加: v1.13このメソッドは、ソース要素をターゲット要素にドラッグします。最初にソース要素に移動し、mousedown
を実行してから、ターゲット要素に移動して mouseup
を実行します。
使用例
- Sync
- Async
page.drag_and_drop("#source", "#target")
# or specify exact positions relative to the top-left corners of the elements:
page.drag_and_drop(
"#source",
"#target",
source_position={"x": 34, "y": 7},
target_position={"x": 10, "y": 20}
)
await page.drag_and_drop("#source", "#target")
# or specify exact positions relative to the top-left corners of the elements:
await page.drag_and_drop(
"#source",
"#target",
source_position={"x": 34, "y": 7},
target_position={"x": 10, "y": 20}
)
引数
-
ドラッグする要素を検索するセレクター。セレクターを満たす要素が複数ある場合は、最初に使用されるものが使用されます。
-
ドロップ先の要素を検索するセレクター。セレクターを満たす要素が複数ある場合は、最初に使用されるものが使用されます。
-
アクション実行可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
source_position
Dict (オプション)追加: v1.14#要素のパディングボックスの左上隅を基準としたこのポイントでソース要素をクリックします。指定しない場合、要素の可視ポイントが使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
target_position
Dict (オプション)追加: v1.14#要素のパディングボックスの左上隅を基準としたこのポイントでターゲット要素にドロップします。指定しない場合、要素の可視ポイントが使用されます。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
設定すると、このメソッドは アクション実行可能性チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに要素がアクションの準備ができるまで待機する場合に役立ちます。
戻り値
emulate_media
v1.9 より前に追加このメソッドは、media
引数を使用して CSS メディアタイプ
を変更し、colorScheme
引数を使用して 'prefers-colors-scheme'
メディア機能を変更します。
使用例
- Sync
- Async
page.evaluate("matchMedia('screen').matches")
# → True
page.evaluate("matchMedia('print').matches")
# → False
page.emulate_media(media="print")
page.evaluate("matchMedia('screen').matches")
# → False
page.evaluate("matchMedia('print').matches")
# → True
page.emulate_media()
page.evaluate("matchMedia('screen').matches")
# → True
page.evaluate("matchMedia('print').matches")
# → False
await page.evaluate("matchMedia('screen').matches")
# → True
await page.evaluate("matchMedia('print').matches")
# → False
await page.emulate_media(media="print")
await page.evaluate("matchMedia('screen').matches")
# → False
await page.evaluate("matchMedia('print').matches")
# → True
await page.emulate_media()
await page.evaluate("matchMedia('screen').matches")
# → True
await page.evaluate("matchMedia('print').matches")
# → False
- Sync
- Async
page.emulate_media(color_scheme="dark")
page.evaluate("matchMedia('(prefers-color-scheme: dark)').matches")
# → True
page.evaluate("matchMedia('(prefers-color-scheme: light)').matches")
# → False
await page.emulate_media(color_scheme="dark")
await page.evaluate("matchMedia('(prefers-color-scheme: dark)').matches")
# → True
await page.evaluate("matchMedia('(prefers-color-scheme: light)').matches")
# → False
引数
-
color_scheme
"light" | "dark" | "no-preference" | "null" (オプション)追加: v1.9#prefers-colors-scheme メディア機能をエミュレートします。サポートされている値は
'light'
および'dark'
です。'Null'
を渡すと、カラースキームのエミュレーションが無効になります。'no-preference'
は非推奨です。 -
contrast
"no-preference" | "more" | "null" (オプション)追加: v1.51# -
forced_colors
"active" | "none" | "null" (オプション)追加: v1.15# -
media
"screen" | "print" | "null" (オプション)追加: v1.9#ページの CSS メディアタイプを変更します。許可される値は
'Screen'
、'Print'
、'Null'
のみです。'Null'
を渡すと、CSS メディアのエミュレーションが無効になります。 -
reduced_motion
"reduce" | "no-preference" | "null" (オプション)追加: v1.12#'prefers-reduced-motion'
メディア機能をエミュレートします。サポートされている値は'reduce'
、'no-preference'
です。null
を渡すと、モーション削減のエミュレーションが無効になります。
戻り値
evaluate
v1.9 より前に追加expression 呼び出しの値を返します。
page.evaluate() に渡された関数が Promise を返す場合、page.evaluate() は Promise が解決されるのを待って、その値を返します。
page.evaluate() に渡された関数が シリアライズ可能でない値を返す場合、page.evaluate() は undefined
に解決されます。Playwright は、JSON
でシリアライズできない追加の値 (-0
、NaN
、Infinity
、-Infinity
) の転送もサポートしています。
使用例
expression に引数を渡す
- Sync
- Async
result = page.evaluate("([x, y]) => Promise.resolve(x * y)", [7, 8])
print(result) # prints "56"
result = await page.evaluate("([x, y]) => Promise.resolve(x * y)", [7, 8])
print(result) # prints "56"
関数の代わりに文字列を渡すこともできます
- Sync
- Async
print(page.evaluate("1 + 2")) # prints "3"
x = 10
print(page.evaluate(f"1 + {x}")) # prints "11"
print(await page.evaluate("1 + 2")) # prints "3"
x = 10
print(await page.evaluate(f"1 + {x}")) # prints "11"
ElementHandle インスタンスは、page.evaluate() の引数として渡すことができます
- Sync
- Async
body_handle = page.evaluate("document.body")
html = page.evaluate("([body, suffix]) => body.innerHTML + suffix", [body_handle, "hello"])
body_handle.dispose()
body_handle = await page.evaluate("document.body")
html = await page.evaluate("([body, suffix]) => body.innerHTML + suffix", [body_handle, "hello"])
await body_handle.dispose()
引数
-
ブラウザコンテキストで評価される JavaScript 式。式が関数に評価される場合、関数は自動的に呼び出されます。
-
arg
EvaluationArgument (オプション)#expression に渡すオプションの引数。
戻り値
evaluate_handle
v1.9 より前に追加expression 呼び出しの値を JSHandle として返します。
page.evaluate() と page.evaluate_handle() の唯一の違いは、page.evaluate_handle() が JSHandle を返すことです。
page.evaluate_handle() に渡された関数が Promise を返す場合、page.evaluate_handle() は Promise が解決されるのを待って、その値を返します。
使用例
- Sync
- Async
a_window_handle = page.evaluate_handle("Promise.resolve(window)")
a_window_handle # handle for the window object.
a_window_handle = await page.evaluate_handle("Promise.resolve(window)")
a_window_handle # handle for the window object.
関数の代わりに文字列を渡すこともできます
- Sync
- Async
a_handle = page.evaluate_handle("document") # handle for the "document"
a_handle = await page.evaluate_handle("document") # handle for the "document"
JSHandle インスタンスは、page.evaluate_handle() の引数として渡すことができます
- Sync
- Async
a_handle = page.evaluate_handle("document.body")
result_handle = page.evaluate_handle("body => body.innerHTML", a_handle)
print(result_handle.json_value())
result_handle.dispose()
a_handle = await page.evaluate_handle("document.body")
result_handle = await page.evaluate_handle("body => body.innerHTML", a_handle)
print(await result_handle.json_value())
await result_handle.dispose()
引数
-
ブラウザコンテキストで評価される JavaScript 式。式が関数に評価される場合、関数は自動的に呼び出されます。
-
arg
EvaluationArgument (オプション)#expression に渡すオプションの引数。
戻り値
expect_console_message
追加: v1.9アクションを実行し、ConsoleMessage がページに記録されるのを待ちます。predicate が指定されている場合、ConsoleMessage 値を predicate
関数に渡し、predicate(message)
が真の値を返すのを待ちます。page.on("console") イベントが発生する前にページが閉じられた場合、エラーがスローされます。
使用例
page.expect_console_message()
page.expect_console_message(**kwargs)
引数
-
predicate
Callable[ConsoleMessage]:bool (オプション)#ConsoleMessage オブジェクトを受け取り、待機が解決されるべきときに真の値に解決されます。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
expect_download
追加: v1.9アクションを実行し、新しい Download を待ちます。predicate が指定されている場合、Download 値を predicate
関数に渡し、predicate(download)
が真の値を返すのを待ちます。ダウンロードイベントが発生する前にページが閉じられた場合、エラーがスローされます。
使用例
page.expect_download()
page.expect_download(**kwargs)
引数
-
predicate
Callable[Download]:bool (オプション)#指定されたDownloadオブジェクトを受け取り、待機を解決すべき場合に真偽値を返します。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
expect_event
v1.9 より前に追加イベントが発火するのを待ち、その値を述語関数に渡します。述語が真偽値を返すと解決されます。イベントが発火する前にページが閉じられた場合、エラーをスローします。イベントデータ値を返します。
使用例
- Sync
- Async
with page.expect_event("framenavigated") as event_info:
page.get_by_role("button")
frame = event_info.value
async with page.expect_event("framenavigated") as event_info:
await page.get_by_role("button")
frame = await event_info.value
引数
-
イベント名。通常
*.on(event)
に渡されるものと同じです。 -
イベントデータを受け取り、待機を解決すべき場合に真偽値を返します。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
expect_file_chooser
追加: v1.9アクションを実行し、新しいFileChooserが作成されるのを待ちます。述語が提供されている場合、FileChooser値をpredicate
関数に渡し、predicate(fileChooser)
が真偽値を返すのを待ちます。ファイルチューザーが開かれる前にページが閉じられた場合、エラーをスローします。
使用例
page.expect_file_chooser()
page.expect_file_chooser(**kwargs)
引数
-
predicate
Callable[FileChooser]:bool (オプション)#指定されたFileChooserオブジェクトを受け取り、待機を解決すべき場合に真偽値を返します。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
expect_popup
追加: v1.9アクションを実行し、ポップアップPageを待ちます。述語が提供されている場合、[Popup]値をpredicate
関数に渡し、predicate(page)
が真偽値を返すのを待ちます。ポップアップイベントが発火する前にページが閉じられた場合、エラーをスローします。
使用例
page.expect_popup()
page.expect_popup(**kwargs)
引数
-
predicate
Callable[Page]:bool (オプション)#指定されたPageオブジェクトを受け取り、待機を解決すべき場合に真偽値を返します。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
expect_request
v1.9 より前に追加一致するリクエストを待ち、それを返します。イベントの詳細については、イベントの待機を参照してください。
使用例
- Sync
- Async
with page.expect_request("http://example.com/resource") as first:
page.get_by_text("trigger request").click()
first_request = first.value
# or with a lambda
with page.expect_request(lambda request: request.url == "http://example.com" and request.method == "get") as second:
page.get_by_text("trigger request").click()
second_request = second.value
async with page.expect_request("http://example.com/resource") as first:
await page.get_by_text("trigger request").click()
first_request = await first.value
# or with a lambda
async with page.expect_request(lambda request: request.url == "http://example.com" and request.method == "get") as second:
await page.get_by_text("trigger request").click()
second_request = await second.value
引数
-
url_or_predicate
str | Pattern | Callable[Request]:bool#リクエストURL文字列、正規表現、またはRequestオブジェクトを受け取る述語。コンテキストオプション経由でbase_urlが提供され、渡されたURLがパスの場合、
new URL()
コンストラクタを介してマージされます。 -
最大待機時間(ミリ秒)。デフォルトは30秒です。タイムアウトを無効にするには
0
を渡します。デフォルト値は、page.set_default_timeout()メソッドを使用して変更できます。
戻り値
expect_request_finished
追加: v1.12アクションを実行し、Requestのロードが完了するのを待ちます。述語が提供されている場合、Request値をpredicate
関数に渡し、predicate(request)
が真偽値を返すのを待ちます。page.on("requestfinished")イベントが発火する前にページが閉じられた場合、エラーをスローします。
使用例
page.expect_request_finished()
page.expect_request_finished(**kwargs)
引数
-
predicate
Callable[Request]:bool (オプション)#指定されたRequestオブジェクトを受け取り、待機を解決すべき場合に真偽値を返します。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
expect_response
v1.9 より前に追加一致するレスポンスを返します。イベントの詳細については、イベントの待機を参照してください。
使用例
- Sync
- Async
with page.expect_response("https://example.com/resource") as response_info:
page.get_by_text("trigger response").click()
response = response_info.value
return response.ok
# or with a lambda
with page.expect_response(lambda response: response.url == "https://example.com" and response.status == 200 and response.request.method == "get") as response_info:
page.get_by_text("trigger response").click()
response = response_info.value
return response.ok
async with page.expect_response("https://example.com/resource") as response_info:
await page.get_by_text("trigger response").click()
response = await response_info.value
return response.ok
# or with a lambda
async with page.expect_response(lambda response: response.url == "https://example.com" and response.status == 200 and response.request.method == "get") as response_info:
await page.get_by_text("trigger response").click()
response = await response_info.value
return response.ok
引数
-
url_or_predicate
str | Pattern | Callable[Response]:bool#リクエストURL文字列、正規表現、またはResponseオブジェクトを受け取る述語。コンテキストオプション経由でbase_urlが提供され、渡されたURLがパスの場合、
new URL()
コンストラクタを介してマージされます。 -
最大待機時間(ミリ秒)。デフォルトは30秒です。タイムアウトを無効にするには
0
を渡します。デフォルト値は、browser_context.set_default_timeout()またはpage.set_default_timeout()メソッドを使用して変更できます。
戻り値
expect_websocket
追加: v1.9アクションを実行し、新しいWebSocketを待ちます。述語が提供されている場合、WebSocket値をpredicate
関数に渡し、predicate(webSocket)
が真偽値を返すのを待ちます。WebSocketイベントが発火する前にページが閉じられた場合、エラーをスローします。
使用例
page.expect_websocket()
page.expect_websocket(**kwargs)
引数
-
predicate
Callable[WebSocket]:bool (オプション)#指定されたWebSocketオブジェクトを受け取り、待機を解決すべき場合に真偽値を返します。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
expect_worker
追加: v1.9アクションを実行し、新しいWorkerを待ちます。述語が提供されている場合、Worker値をpredicate
関数に渡し、predicate(worker)
が真偽値を返すのを待ちます。Workerイベントが発火する前にページが閉じられた場合、エラーをスローします。
使用例
page.expect_worker()
page.expect_worker(**kwargs)
引数
-
predicate
Callable[Worker]:bool (オプション)#指定されたWorkerオブジェクトを受け取り、待機を解決すべき場合に真偽値を返します。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
expose_binding
v1.9 より前に追加このメソッドは、このページのすべてのフレームのwindow
オブジェクトに、nameという名前の関数を追加します。呼び出されると、この関数はcallbackを実行し、callbackの戻り値に解決されるPromiseを返します。callbackがPromiseを返す場合、それはawaitされます。
callback関数の最初の引数には、呼び出し元に関する情報{ browserContext: BrowserContext, page: Page, frame: Frame }
が含まれています。
コンテキスト全体にわたるバージョンについては、browser_context.expose_binding()を参照してください。
page.expose_binding()を介してインストールされた関数は、ナビゲーション後も存続します。
使用例
ページURLをページ内のすべてのフレームに公開する例
- Sync
- Async
from playwright.sync_api import sync_playwright, Playwright
def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.expose_binding("pageURL", lambda source: source["page"].url)
page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.pageURL();
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
page.click("button")
with sync_playwright() as playwright:
run(playwright)
import asyncio
from playwright.async_api import async_playwright, Playwright
async def run(playwright: Playwright):
webkit = playwright.webkit
browser = await webkit.launch(headless=False)
context = await browser.new_context()
page = await context.new_page()
await page.expose_binding("pageURL", lambda source: source["page"].url)
await page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.pageURL();
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
await page.click("button")
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
引数
-
windowオブジェクト上の関数の名前。
-
Playwrightのコンテキストで呼び出されるコールバック関数。
-
非推奨
このオプションは将来削除される予定です。
引数を値渡しではなくハンドルとして渡すかどうか。ハンドルを渡す場合、1つの引数のみがサポートされます。値渡しの場合、複数の引数がサポートされます。
戻り値
expose_function
v1.9 より前に追加このメソッドは、ページ内のすべてのフレームのwindow
オブジェクトに、nameという名前の関数を追加します。呼び出されると、この関数はcallbackを実行し、callbackの戻り値に解決されるPromiseを返します。
callbackがPromiseを返す場合、それはawaitされます。
コンテキスト全体に公開される関数については、browser_context.expose_function()を参照してください。
page.expose_function()を介してインストールされた関数は、ナビゲーション後も存続します。
使用例
sha256
関数をページに追加する例
- Sync
- Async
import hashlib
from playwright.sync_api import sync_playwright, Playwright
def sha256(text):
m = hashlib.sha256()
m.update(bytes(text, "utf8"))
return m.hexdigest()
def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch(headless=False)
page = browser.new_page()
page.expose_function("sha256", sha256)
page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
page.click("button")
with sync_playwright() as playwright:
run(playwright)
import asyncio
import hashlib
from playwright.async_api import async_playwright, Playwright
def sha256(text):
m = hashlib.sha256()
m.update(bytes(text, "utf8"))
return m.hexdigest()
async def run(playwright: Playwright):
webkit = playwright.webkit
browser = await webkit.launch(headless=False)
page = await browser.new_page()
await page.expose_function("sha256", sha256)
await page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
await page.click("button")
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
引数
戻り値
frame
v1.9 より前に追加指定された条件に一致するフレームを返します。name
またはurl
のいずれかを指定する必要があります。
使用例
frame = page.frame(name="frame-name")
frame = page.frame(url=r".*domain.*")
引数
-
iframe
のname
属性で指定されたフレーム名。オプション。 -
url
str | Pattern | Callable[URL]:bool (オプション)#グロブパターン、正規表現パターン、またはフレームの
url
をURLオブジェクトとして受け取る述語。オプション。
戻り値
frame_locator
追加: v1.17iframeを操作する場合、iframeに入り、そのiframe内の要素を選択できるようにするフレームロケーターを作成できます。
使用例
次のスニペットは、<iframe id="my-frame">
のようなID my-frame
を持つiframe内のテキスト「Submit」を持つ要素を特定します。
- Sync
- Async
locator = page.frame_locator("#my-iframe").get_by_text("Submit")
locator.click()
locator = page.frame_locator("#my-iframe").get_by_text("Submit")
await locator.click()
引数
戻り値
get_by_alt_text
追加: v1.27altテキストで要素を特定できます。
使用例
たとえば、このメソッドはaltテキスト「Playwright logo」で画像を検索します。
<img alt='Playwright logo'>
- Sync
- Async
page.get_by_alt_text("Playwright logo").click()
await page.get_by_alt_text("Playwright logo").click()
引数
-
要素を特定するためのテキスト。
-
完全一致を検索するかどうか:大文字と小文字を区別し、文字列全体を比較します。デフォルトはfalseです。正規表現で検索する場合は無視されます。完全一致でも空白はトリムされることに注意してください。
戻り値
get_by_label
追加: v1.27関連付けられた<label>
またはaria-labelledby
要素のテキスト、またはaria-label
属性によって入力要素を特定できます。
使用例
たとえば、このメソッドは次のDOMでラベル「Username」と「Password」で入力を検索します。
<input aria-label="Username">
<label for="password-input">Password:</label>
<input id="password-input">
- Sync
- Async
page.get_by_label("Username").fill("john")
page.get_by_label("Password").fill("secret")
await page.get_by_label("Username").fill("john")
await page.get_by_label("Password").fill("secret")
引数
-
要素を特定するためのテキスト。
-
完全一致を検索するかどうか:大文字と小文字を区別し、文字列全体を比較します。デフォルトはfalseです。正規表現で検索する場合は無視されます。完全一致でも空白はトリムされることに注意してください。
戻り値
get_by_placeholder
追加: v1.27プレースホルダーテキストで入力要素を特定できます。
使用例
たとえば、次のDOM構造を考えてみましょう。
<input type="email" placeholder="name@example.com" />
プレースホルダーテキストで特定した後、入力を埋めることができます。
- Sync
- Async
page.get_by_placeholder("name@example.com").fill("playwright@microsoft.com")
await page.get_by_placeholder("name@example.com").fill("playwright@microsoft.com")
引数
-
要素を特定するためのテキスト。
-
完全一致を検索するかどうか:大文字と小文字を区別し、文字列全体を比較します。デフォルトはfalseです。正規表現で検索する場合は無視されます。完全一致でも空白はトリムされることに注意してください。
戻り値
get_by_role
追加: v1.27ARIAロール、ARIA属性、およびアクセシブル名によって要素を特定できます。
使用例
次のDOM構造を考えてみましょう。
<h3>Sign up</h3>
<label>
<input type="checkbox" /> Subscribe
</label>
<br/>
<button>Submit</button>
各要素を暗黙的なロールで特定できます。
- Sync
- Async
expect(page.get_by_role("heading", name="Sign up")).to_be_visible()
page.get_by_role("checkbox", name="Subscribe").check()
page.get_by_role("button", name=re.compile("submit", re.IGNORECASE)).click()
await expect(page.get_by_role("heading", name="Sign up")).to_be_visible()
await page.get_by_role("checkbox", name="Subscribe").check()
await page.get_by_role("button", name=re.compile("submit", re.IGNORECASE)).click()
引数
-
role
"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ロール。
-
通常
aria-checked
またはネイティブの<input type=checkbox>
コントロールによって設定される属性。aria-checked
の詳細をご覧ください。 -
通常
aria-disabled
またはdisabled
によって設定される属性。注記他のほとんどの属性とは異なり、
disabled
はDOM階層を通じて継承されます。aria-disabled
の詳細をご覧ください。 -
nameが完全に一致するかどうか:大文字と小文字を区別し、文字列全体を比較します。デフォルトはfalseです。nameが正規表現の場合は無視されます。完全一致でも空白はトリムされることに注意してください。
-
通常
aria-expanded
によって設定される属性。aria-expanded
の詳細をご覧ください。 -
非表示要素を一致させるかどうかを制御するオプション。デフォルトでは、ARIAで定義されている非表示でない要素のみがロールセレクターによって一致されます。
aria-hidden
の詳細をご覧ください。 -
通常、
heading
、listitem
、row
、treeitem
ロールに存在する数値属性。<h1>-<h6>
要素のデフォルト値。aria-level
の詳細をご覧ください。 -
アクセシブル名を一致させるためのオプション。デフォルトでは、一致は大文字と小文字を区別せず、部分文字列を検索します。exactを使用してこの動作を制御します。
アクセシブル名の詳細をご覧ください。
-
通常
aria-pressed
によって設定される属性。aria-pressed
の詳細をご覧ください。 -
通常
aria-selected
によって設定される属性。aria-selected
の詳細をご覧ください。
戻り値
詳細
ロールセレクターは、アクセシビリティ監査および適合性テストを置き換えるものではありませんが、ARIAガイドラインに関する早期のフィードバックを提供します。
多くのhtml要素には、ロールセレクターによって認識される暗黙的に定義されたロールがあります。サポートされているすべてのロールはこちらで確認できます。ARIAガイドラインは、デフォルト値にrole
やaria-*
属性を設定して、暗黙的なロールと属性を複製することを推奨していません。
get_by_test_id
追加: v1.27テストIDで要素を特定します。
使用例
次のDOM構造を考えてみましょう。
<button data-testid="directions">Itinéraire</button>
要素をテストIDで特定できます。
- Sync
- Async
page.get_by_test_id("directions").click()
await page.get_by_test_id("directions").click()
引数
戻り値
詳細
デフォルトでは、data-testid
属性がテストIDとして使用されます。必要に応じて別のテストID属性を設定するには、selectors.set_test_id_attribute()を使用してください。
get_by_text
追加: v1.27指定されたテキストを含む要素を特定できます。
アクセシブルロールなどの別の条件で一致させ、テキストコンテンツでフィルタリングできるlocator.filter()も参照してください。
使用例
次のDOM構造を考えてみましょう。
<div>Hello <span>world</span></div>
<div>Hello</div>
テキストの部分文字列、完全な文字列、または正規表現で特定できます。
- Sync
- Async
# Matches <span>
page.get_by_text("world")
# Matches first <div>
page.get_by_text("Hello world")
# Matches second <div>
page.get_by_text("Hello", exact=True)
# Matches both <div>s
page.get_by_text(re.compile("Hello"))
# Matches second <div>
page.get_by_text(re.compile("^hello$", re.IGNORECASE))
# Matches <span>
page.get_by_text("world")
# Matches first <div>
page.get_by_text("Hello world")
# Matches second <div>
page.get_by_text("Hello", exact=True)
# Matches both <div>s
page.get_by_text(re.compile("Hello"))
# Matches second <div>
page.get_by_text(re.compile("^hello$", re.IGNORECASE))
引数
-
要素を特定するためのテキスト。
-
完全一致を検索するかどうか:大文字と小文字を区別し、文字列全体を比較します。デフォルトはfalseです。正規表現で検索する場合は無視されます。完全一致でも空白はトリムされることに注意してください。
戻り値
詳細
テキストによるマッチングは、完全一致であっても常に空白を正規化します。例えば、複数のスペースを1つに、改行をスペースに変換し、先頭と末尾の空白を無視します。
button
および submit
タイプの入力要素は、テキストコンテンツではなく、value
属性によってマッチングされます。例えば、テキスト "Log in"
での検索は、<input type=button value="Log in">
にマッチングします。
get_by_title
追加: v1.27title属性によって要素を特定することができます。
使用例
次のDOM構造を考えてみましょう。
<span title='Issues count'>25 issues</span>
titleテキストで特定した後、issueの数をチェックできます。
- Sync
- Async
expect(page.get_by_title("Issues count")).to_have_text("25 issues")
await expect(page.get_by_title("Issues count")).to_have_text("25 issues")
引数
-
要素を特定するためのテキスト。
-
完全一致を検索するかどうか:大文字と小文字を区別し、文字列全体を比較します。デフォルトはfalseです。正規表現で検索する場合は無視されます。完全一致でも空白はトリムされることに注意してください。
戻り値
go_back
v1.9 より前に追加メインリソースのレスポンスを返します。複数のリダイレクトが発生した場合、ナビゲーションは最後のリダイレクトのレスポンスで解決されます。戻ることができない場合は、null
を返します。
履歴内の前のページに移動します。
使用例
page.go_back()
page.go_back(**kwargs)
引数
-
操作の最大時間(ミリ秒単位)。デフォルトは30秒です。タイムアウトを無効にするには
0
を渡します。デフォルト値は、browser_context.set_default_navigation_timeout()、browser_context.set_default_timeout()、page.set_default_navigation_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
wait_until
"load" | "domcontentloaded" | "networkidle" | "commit" (オプション)#操作が成功したとみなすタイミング。デフォルトは
load
です。イベントは以下のいずれかになります。'domcontentloaded'
-DOMContentLoaded
イベントが発火したときに操作が完了したとみなします。'load'
-load
イベントが発火したときに操作が完了したとみなします。'networkidle'
- 非推奨 ネットワーク接続が少なくとも500
ミリ秒間ない場合に操作が完了したとみなします。テストにはこのメソッドを使用せず、代わりにウェブアサーションに依存して準備状態を評価してください。'commit'
- ネットワークレスポンスが受信され、ドキュメントのロードが開始されたときに操作が完了したとみなします。
戻り値
go_forward
v1.9 より前に追加メインリソースのレスポンスを返します。複数のリダイレクトが発生した場合、ナビゲーションは最後のリダイレクトのレスポンスで解決されます。進むことができない場合は、null
を返します。
履歴内の次のページに移動します。
使用例
page.go_forward()
page.go_forward(**kwargs)
引数
-
操作の最大時間(ミリ秒単位)。デフォルトは30秒です。タイムアウトを無効にするには
0
を渡します。デフォルト値は、browser_context.set_default_navigation_timeout()、browser_context.set_default_timeout()、page.set_default_navigation_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
wait_until
"load" | "domcontentloaded" | "networkidle" | "commit" (オプション)#操作が成功したとみなすタイミング。デフォルトは
load
です。イベントは以下のいずれかになります。'domcontentloaded'
-DOMContentLoaded
イベントが発火したときに操作が完了したとみなします。'load'
-load
イベントが発火したときに操作が完了したとみなします。'networkidle'
- 非推奨 ネットワーク接続が少なくとも500
ミリ秒間ない場合に操作が完了したとみなします。テストにはこのメソッドを使用せず、代わりにウェブアサーションに依存して準備状態を評価してください。'commit'
- ネットワークレスポンスが受信され、ドキュメントのロードが開始されたときに操作が完了したとみなします。
戻り値
goto
v1.9 より前に追加メインリソースのレスポンスを返します。複数のリダイレクトが発生した場合、ナビゲーションは最初のリダイレクトではないレスポンスで解決されます。
このメソッドは、以下の場合にエラーをスローします。
- SSLエラーが発生した場合(例:自己署名証明書の場合)。
- ターゲットURLが無効な場合。
- timeout がナビゲーション中に超過した場合。
- リモートサーバーが応答しない場合、または到達不能な場合。
- メインリソースのロードに失敗した場合。
このメソッドは、リモートサーバーから有効なHTTPステータスコード(404 "Not Found" や 500 "Internal Server Error" を含む)が返された場合でもエラーをスローしません。このようなレスポンスのステータスコードは、response.status を呼び出すことで取得できます。
このメソッドは、エラーをスローするか、メインリソースのレスポンスを返します。唯一の例外は、about:blank
へのナビゲーション、または異なるハッシュを持つ同じURLへのナビゲーションで、これらは成功し、null
を返します。
ヘッドレスモードは、PDFドキュメントへのナビゲーションをサポートしていません。upstream issue を参照してください。
使用例
page.goto(url)
page.goto(url, **kwargs)
引数
-
ページをナビゲートするURL。URLにはスキーム(例:
https://
)を含める必要があります。コンテキストオプションで base_url が提供され、渡されたURLがパスの場合、new URL()
コンストラクタを介してマージされます。 -
リファラーヘッダーの値。提供された場合、page.set_extra_http_headers() で設定されたリファラーヘッダーの値よりも優先されます。
-
操作の最大時間(ミリ秒単位)。デフォルトは30秒です。タイムアウトを無効にするには
0
を渡します。デフォルト値は、browser_context.set_default_navigation_timeout()、browser_context.set_default_timeout()、page.set_default_navigation_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
wait_until
"load" | "domcontentloaded" | "networkidle" | "commit" (オプション)#操作が成功したとみなすタイミング。デフォルトは
load
です。イベントは以下のいずれかになります。'domcontentloaded'
-DOMContentLoaded
イベントが発火したときに操作が完了したとみなします。'load'
-load
イベントが発火したときに操作が完了したとみなします。'networkidle'
- 非推奨 ネットワーク接続が少なくとも500
ミリ秒間ない場合に操作が完了したとみなします。テストにはこのメソッドを使用せず、代わりにウェブアサーションに依存して準備状態を評価してください。'commit'
- ネットワークレスポンスが受信され、ドキュメントのロードが開始されたときに操作が完了したとみなします。
戻り値
locator
追加: v1.14このメソッドは、このページ/フレーム上でアクションを実行するために使用できる要素ロケーターを返します。ロケーターはアクションを実行する直前に要素に解決されるため、同じロケーターに対する一連のアクションは、実際には異なるDOM要素に対して実行される可能性があります。これは、これらのアクション間のDOM構造が変更された場合に発生します。
使用例
page.locator(selector)
page.locator(selector, **kwargs)
引数
-
DOM要素を解決するときに使用するセレクター。
-
この相対ロケーターに一致する要素を含む結果に、メソッドの結果を絞り込みます。例えば、
text=Playwright
を持つarticle
は、<article><div>Playwright</div></article>
に一致します。内部ロケーターは、外部ロケーターに対して相対的である必要があり、ドキュメントルートではなく、外部ロケーターの一致からクエリが開始されます。例えば、
<article><content><div>Playwright</div></content></article>
内のdiv
を持つcontent
を見つけることができます。ただし、article div
を持つcontent
を探すことは失敗します。内部ロケーターは相対的である必要があり、content
の外部の要素を使用してはならないためです。外部ロケーターと内部ロケーターは、同じフレームに属している必要があることに注意してください。内部ロケーターに FrameLocator を含めてはなりません。
-
has_not
Locator (オプション)追加: v1.33#内部ロケーターに一致する要素を含まない要素に一致します。内部ロケーターは外部ロケーターに対してクエリされます。例えば、
div
を持たないarticle
は、<article><span>Playwright</span></article>
に一致します。外部ロケーターと内部ロケーターは、同じフレームに属している必要があることに注意してください。内部ロケーターに FrameLocator を含めてはなりません。
-
has_not_text
str | Pattern (オプション)追加: v1.33#子要素または子孫要素を含む、内部のどこかに指定されたテキストを含まない要素に一致します。[string] が渡された場合、マッチングは大文字と小文字を区別せず、部分文字列を検索します。
-
has_text
str | Pattern (オプション)#子要素または子孫要素を含む、内部のどこかに指定されたテキストを含む要素に一致します。[string] が渡された場合、マッチングは大文字と小文字を区別せず、部分文字列を検索します。例えば、
"Playwright"
は<article><div>Playwright</div></article>
に一致します。
戻り値
opener
v1.9 より前に追加ポップアップページのopenerを返し、それ以外の場合は null
を返します。openerが既に閉じられている場合は null
を返します。
使用例
page.opener()
戻り値
pause
追加: v1.9スクリプトの実行を一時停止します。Playwrightはスクリプトの実行を停止し、ユーザーがページオーバーレイの「再開」ボタンを押すか、DevToolsコンソールで playwright.resume()
を呼び出すのを待ちます。
ユーザーは一時停止中にセレクターを検査したり、手動でステップを実行したりできます。再開すると、一時停止された場所から元のスクリプトの実行が継続されます。
このメソッドでは、headless オプションがfalseである、ヘッドレスモードでPlaywrightを起動する必要があります。
使用例
page.pause()
戻り値
pdf
v1.9 より前に追加PDFバッファを返します。
page.pdf()
は、print
CSSメディアでページのPDFを生成します。screen
メディアでPDFを生成するには、page.pdf()
を呼び出す前に page.emulate_media() を呼び出してください。
デフォルトでは、page.pdf()
は印刷用に色が変更されたPDFを生成します。正確な色のレンダリングを強制するには、-webkit-print-color-adjust
プロパティを使用してください。
使用例
- Sync
- Async
# generates a pdf with "screen" media type.
page.emulate_media(media="screen")
page.pdf(path="page.pdf")
# generates a pdf with "screen" media type.
await page.emulate_media(media="screen")
await page.pdf(path="page.pdf")
width, height, および margin オプションは、単位付きの値を受け入れます。単位なしの値はピクセルとして扱われます。
いくつかの例:
page.pdf({width: 100})
- 幅を100ピクセルに設定して印刷しますpage.pdf({width: '100px'})
- 幅を100ピクセルに設定して印刷しますpage.pdf({width: '10cm'})
- 幅を10センチメートルに設定して印刷します
可能なすべての単位は次のとおりです。
px
- ピクセルin
- インチcm
- センチメートルmm
- ミリメートル
format オプションは次のとおりです。
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
header_template および footer_template マークアップには、次の制限があります。 > 1. テンプレート内のスクリプトタグは評価されません。 > 2. ページスタイルはテンプレート内では表示されません。
引数
-
display_header_footer
bool (オプション)#ヘッダーとフッターを表示します。デフォルトは
false
です。 -
印刷フッター用のHTMLテンプレート。header_template と同じ形式を使用する必要があります。
-
用紙フォーマット。設定されている場合、width または height オプションよりも優先されます。デフォルトは 'Letter' です。
-
印刷ヘッダー用のHTMLテンプレート。印刷値を注入するために使用される次のクラスを含む有効なHTMLマークアップである必要があります。
'date'
フォーマットされた印刷日'title'
ドキュメントタイトル'url'
ドキュメントの場所'pageNumber'
現在のページ番号'totalPages'
ドキュメントの総ページ数
-
用紙の高さ。単位付きの値を受け入れます。
-
用紙の向き。デフォルトは
false
です。 -
-
上マージン。単位付きの値を受け入れます。デフォルトは
0
です。 -
右マージン。単位付きの値を受け入れます。デフォルトは
0
です。 -
下マージン。単位付きの値を受け入れます。デフォルトは
0
です。 -
左マージン。単位付きの値を受け入れます。デフォルトは
0
です。
用紙のマージン。デフォルトはなしです。
-
-
outline
bool (オプション)追加: v1.42#ドキュメントのアウトラインをPDFに埋め込むかどうか。デフォルトは
false
です。 -
印刷する用紙範囲(例:'1-5, 8, 11-13')。デフォルトは空の文字列で、すべてのページを印刷することを意味します。
-
path
Union[str, pathlib.Path] (オプション)#PDFを保存するファイルパス。path が相対パスの場合、現在のワーキングディレクトリからの相対パスとして解決されます。パスが指定されていない場合、PDFはディスクに保存されません。
-
prefer_css_page_size
bool (オプション)#ページで宣言されたCSS
@page
サイズを、width および height または format オプションで宣言されたものよりも優先させます。デフォルトはfalse
で、コンテンツを用紙サイズに合わせて拡大縮小します。 -
print_background
bool (オプション)#背景グラフィックを印刷します。デフォルトは
false
です。 -
ウェブページのレンダリングのスケール。デフォルトは
1
です。スケール量は0.1から2の間である必要があります。 -
タグ付き(アクセシブル)PDFを生成するかどうか。デフォルトは
false
です。 -
用紙の幅。単位付きの値を受け入れます。
戻り値
reload
v1.9 より前に追加このメソッドは、ユーザーがブラウザの更新をトリガーした場合と同じように、現在のページをリロードします。メインリソースのレスポンスを返します。複数のリダイレクトが発生した場合、ナビゲーションは最後のリダイレクトのレスポンスで解決されます。
使用例
page.reload()
page.reload(**kwargs)
引数
-
操作の最大時間(ミリ秒単位)。デフォルトは30秒です。タイムアウトを無効にするには
0
を渡します。デフォルト値は、browser_context.set_default_navigation_timeout()、browser_context.set_default_timeout()、page.set_default_navigation_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
wait_until
"load" | "domcontentloaded" | "networkidle" | "commit" (オプション)#操作が成功したとみなすタイミング。デフォルトは
load
です。イベントは以下のいずれかになります。'domcontentloaded'
-DOMContentLoaded
イベントが発火したときに操作が完了したとみなします。'load'
-load
イベントが発火したときに操作が完了したとみなします。'networkidle'
- 非推奨 ネットワーク接続が少なくとも500
ミリ秒間ない場合に操作が完了したとみなします。テストにはこのメソッドを使用せず、代わりにウェブアサーションに依存して準備状態を評価してください。'commit'
- ネットワークレスポンスが受信され、ドキュメントのロードが開始されたときに操作が完了したとみなします。
戻り値
remove_locator_handler
追加: v1.44page.add_locator_handler() によって追加された、特定のロケーターに対するすべてのロケーターハンドラーを削除します。
使用例
page.remove_locator_handler(locator)
引数
-
page.add_locator_handler() に渡されたロケーター。
戻り値
request_gc
追加: v1.48ページにガベージコレクションを実行するように要求します。到達不能なオブジェクトがすべて収集される保証はないことに注意してください。
これは、メモリリークを検出するのに役立ちます。例えば、ページにリークしている可能性のある大きなオブジェクト 'suspect'
がある場合、WeakRef
を使用してリークしていないことを確認できます。
- Sync
- Async
# 1. In your page, save a WeakRef for the "suspect".
page.evaluate("globalThis.suspectWeakRef = new WeakRef(suspect)")
# 2. Request garbage collection.
page.request_gc()
# 3. Check that weak ref does not deref to the original object.
assert page.evaluate("!globalThis.suspectWeakRef.deref()")
# 1. In your page, save a WeakRef for the "suspect".
await page.evaluate("globalThis.suspectWeakRef = new WeakRef(suspect)")
# 2. Request garbage collection.
await page.request_gc()
# 3. Check that weak ref does not deref to the original object.
assert await page.evaluate("!globalThis.suspectWeakRef.deref()")
使用例
page.request_gc()
戻り値
route
v1.9 より前に追加ルーティングは、ページによって行われるネットワークリクエストを変更する機能を提供します。
ルーティングが有効になると、URLパターンに一致するすべてのリクエストは、続行、フルフィルド、または中止されない限り、停止します。
レスポンスがリダイレクトの場合、ハンドラーは最初のURLに対してのみ呼び出されます。
page.route() は、Service Workerによってインターセプトされたリクエストをインターセプトしません。this issueを参照してください。リクエストインターセプトを使用する場合は、service_workers を 'block'
に設定してService Workerを無効にすることをお勧めします。
page.route() は、ポップアップページの最初のリクエストをインターセプトしません。代わりに browser_context.route() を使用してください。
使用例
すべてのイメージリクエストを中止するナイーブなハンドラーの例:
- Sync
- Async
page = browser.new_page()
page.route("**/*.{png,jpg,jpeg}", lambda route: route.abort())
page.goto("https://example.com")
browser.close()
page = await browser.new_page()
await page.route("**/*.{png,jpg,jpeg}", lambda route: route.abort())
await page.goto("https://example.com")
await browser.close()
または、代わりに正規表現パターンを使用した同じスニペット:
- Sync
- Async
page = browser.new_page()
page.route(re.compile(r"(\.png$)|(\.jpg$)"), lambda route: route.abort())
page.goto("https://example.com")
browser.close()
page = await browser.new_page()
await page.route(re.compile(r"(\.png$)|(\.jpg$)"), lambda route: route.abort())
await page.goto("https://example.com")
await browser.close()
リクエストを調べて、ルートアクションを決定することが可能です。例えば、いくつかのポストデータを含むすべてのリクエストをモックし、他のすべてのリクエストをそのままにします。
- Sync
- Async
def handle_route(route: Route):
if ("my-string" in route.request.post_data):
route.fulfill(body="mocked-data")
else:
route.continue_()
page.route("/api/**", handle_route)
async def handle_route(route: Route):
if ("my-string" in route.request.post_data):
await route.fulfill(body="mocked-data")
else:
await route.continue_()
await page.route("/api/**", handle_route)
ページルートは、リクエストが両方のハンドラーに一致する場合、ブラウザコンテキストルート(browser_context.route() で設定)よりも優先されます。
ハンドラー付きのルートを削除するには、page.unroute() を使用できます。
ルーティングを有効にすると、HTTPキャッシュが無効になります。
引数
-
url
str | Pattern | Callable[URL]:bool#ルーティング中にマッチングするグロブパターン、正規表現パターン、または URL を受信する述語。コンテキストオプションで base_url が提供され、渡されたURLがパスの場合、
new URL()
コンストラクタを介してマージされます。 -
handler
Callable[Route, Request]:Promise[Any] | Any#リクエストをルーティングするハンドラー関数。
-
ルートが使用される頻度。デフォルトでは、毎回使用されます。
戻り値
route_from_har
追加: v1.23指定された場合、ページで行われるネットワークリクエストはHARファイルから提供されます。HARからのリプレイ について詳しくはこちらをご覧ください。
Playwrightは、Service WorkerによってインターセプトされたリクエストをHARファイルから提供しません。this issueを参照してください。リクエストインターセプトを使用する場合は、service_workers を 'block'
に設定してService Workerを無効にすることをお勧めします。
使用例
page.route_from_har(har)
page.route_from_har(har, **kwargs)
引数
-
har
Union[str, pathlib.Path]#HAR ファイルへのパス。事前記録されたネットワークデータが含まれています。path が相対パスの場合、現在のワーキングディレクトリからの相対パスとして解決されます。
-
not_found
"abort" | "fallback" (オプション)#- 'abort' に設定すると、HARファイルに見つからないリクエストはすべて中止されます。
- 'fallback' に設定すると、見つからないリクエストはネットワークに送信されます。
デフォルトは abort です。
-
指定された場合、ファイルから提供する代わりに、実際のネットワーク情報で指定された HAR を更新します。ファイルは、browser_context.close() が呼び出されたときにディスクに書き込まれます。
-
update_content
"embed" | "attach" (任意)バージョン 1.32 で追加#リソースコンテンツ管理を制御するためのオプション設定です。
attach
が指定された場合、リソースは個別のファイルまたは ZIP アーカイブのエントリとして永続化されます。embed
が指定された場合、コンテンツは HAR ファイルにインラインで保存されます。 -
update_mode
"full" | "minimal" (任意)バージョン 1.32 で追加#minimal
に設定すると、HAR からのルーティングに必要な情報のみを記録します。これにより、HAR からの再生時に使用されないサイズ、タイミング、ページ、Cookie、セキュリティ、およびその他のタイプの HAR 情報は省略されます。デフォルトはminimal
です。 -
リクエスト URL に一致する glob パターン、正規表現、または述語。パターンに一致する URL を持つリクエストのみが HAR ファイルから提供されます。指定されていない場合、すべてのリクエストが HAR ファイルから提供されます。
戻り値
route_web_socket
追加: v1.48このメソッドを使用すると、ページによって確立された WebSocket 接続を変更できます。
このメソッドが呼び出された後に作成された WebSocket
のみがルーティングされることに注意してください。ページをナビゲートする前にこのメソッドを呼び出すことをお勧めします。
使用例
以下は、単一のメッセージに応答する簡単なモックの例です。詳細と例については、WebSocketRoute を参照してください。
- Sync
- Async
def message_handler(ws: WebSocketRoute, message: Union[str, bytes]):
if message == "request":
ws.send("response")
def handler(ws: WebSocketRoute):
ws.on_message(lambda message: message_handler(ws, message))
page.route_web_socket("/ws", handler)
def message_handler(ws: WebSocketRoute, message: Union[str, bytes]):
if message == "request":
ws.send("response")
def handler(ws: WebSocketRoute):
ws.on_message(lambda message: message_handler(ws, message))
await page.route_web_socket("/ws", handler)
引数
-
url
str | Pattern | Callable[URL]:bool#このパターンに一致する URL を持つ WebSocket のみがルーティングされます。文字列パターンは、base_url コンテキストオプションに対して相対的にすることができます。
-
handler
Callable[WebSocketRoute]:Promise[Any] | Any#WebSocket をルーティングするためのハンドラー関数。
戻り値
screenshot
v1.9 より前に追加キャプチャされたスクリーンショットを含むバッファを返します。
使用例
page.screenshot()
page.screenshot(**kwargs)
引数
-
animations
"disabled" | "allow" (任意)#"disabled"
に設定すると、CSS アニメーション、CSS トランジション、および Web アニメーションを停止します。アニメーションは、その期間に応じて異なる扱いを受けます。- 有限のアニメーションは完了まで早送りされるため、
transitionend
イベントが発生します。 - 無限のアニメーションは初期状態にキャンセルされ、スクリーンショット後に再度再生されます。
デフォルトは、アニメーションをそのままにする
"allow"
です。 - 有限のアニメーションは完了まで早送りされるため、
-
caret
"hide" | "initial" (任意)#"hide"
に設定すると、スクリーンショットはテキストカーソルを非表示にします。"initial"
に設定すると、テキストカーソルの動作は変更されません。デフォルトは"hide"
です。 -
結果の画像のクリッピングを指定するオブジェクト。
-
true の場合、現在表示されているビューポートの代わりに、スクロール可能なページ全体のスクリーンショットを撮ります。デフォルトは
false
です。 -
スクリーンショットを撮るときにマスクする必要があるロケーターを指定します。マスクされた要素は、そのバウンディングボックスを完全に覆うピンク色のボックス
#FF00FF
(mask_color でカスタマイズ) でオーバーレイされます。マスクは非表示の要素にも適用されます。これを無効にするには、可視要素のみをマッチング を参照してください。 -
mask_color
str (任意)バージョン 1.35 で追加#マスクされた要素のオーバーレイボックスの色を、CSS カラー形式 で指定します。デフォルトの色はピンク
#FF00FF
です。 -
デフォルトの白い背景を非表示にし、透明度のあるスクリーンショットをキャプチャできるようにします。
jpeg
画像には適用されません。デフォルトはfalse
です。 -
path
Union[str, pathlib.Path] (任意)#画像を保存するファイルパス。スクリーンショットのタイプは、ファイル拡張子から推測されます。path が相対パスの場合、現在の作業ディレクトリからの相対パスとして解決されます。パスが指定されていない場合、画像はディスクに保存されません。
-
画像の品質(0〜100)。
png
画像には適用されません。 -
scale
"css" | "device" (任意)#"css"
に設定すると、スクリーンショットはページ上の CSS ピクセルごとに 1 ピクセルになります。高 DPI デバイスの場合、これによりスクリーンショットが小さく保たれます。"device"
オプションを使用すると、デバイスピクセルごとに 1 ピクセルが生成されるため、高 DPI デバイスのスクリーンショットは 2 倍またはそれ以上に大きくなります。デフォルトは
"device"
です。 -
スクリーンショットを作成中に適用するスタイルシートのテキスト。これは、動的な要素を非表示にしたり、要素を非表示にしたり、プロパティを変更したりして、反復可能なスクリーンショットを作成するのに役立ちます。このスタイルシートはシャドウ DOM を貫通し、内部フレームに適用されます。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
type
"png" | "jpeg" (任意)#スクリーンショットのタイプを指定します。デフォルトは
png
です。
戻り値
set_content
v1.9 より前に追加このメソッドは内部的に document.write() を呼び出し、そのすべての特定の特性と動作を継承します。
使用例
page.set_content(html)
page.set_content(html, **kwargs)
引数
-
ページに割り当てる HTML マークアップ。
-
操作の最大時間(ミリ秒単位)。デフォルトは30秒です。タイムアウトを無効にするには
0
を渡します。デフォルト値は、browser_context.set_default_navigation_timeout()、browser_context.set_default_timeout()、page.set_default_navigation_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
wait_until
"load" | "domcontentloaded" | "networkidle" | "commit" (任意)#操作が成功したとみなすタイミング。デフォルトは
load
です。イベントは以下のいずれかになります。'domcontentloaded'
-DOMContentLoaded
イベントが発火したときに操作が完了したとみなします。'load'
-load
イベントが発火したときに操作が完了したとみなします。'networkidle'
- 非推奨 ネットワーク接続が少なくとも500
ミリ秒間ない場合に操作が完了したとみなします。テストにはこのメソッドを使用せず、代わりにウェブアサーションに依存して準備状態を評価してください。'commit'
- ネットワークレスポンスが受信され、ドキュメントのロードが開始されたときに操作が完了したとみなします。
戻り値
set_default_navigation_timeout
v1.9 より前に追加この設定は、次のメソッドと関連するショートカットのデフォルトの最大ナビゲーション時間を変更します。
- page.go_back()
- page.go_forward()
- page.goto()
- page.reload()
- page.set_content()
- page.expect_navigation()
- page.wait_for_url()
使用例
page.set_default_navigation_timeout(timeout)
引数
set_default_timeout
v1.9 より前に追加この設定は、timeout オプションを受け入れるすべてのメソッドのデフォルトの最大時間を変更します。
使用例
page.set_default_timeout(timeout)
引数
set_extra_http_headers
v1.9 より前に追加追加の HTTP ヘッダーは、ページが開始するすべてのリクエストとともに送信されます。
page.set_extra_http_headers() は、送信リクエストのヘッダーの順序を保証しません。
使用例
page.set_extra_http_headers(headers)
引数
戻り値
set_viewport_size
v1.9 より前に追加単一のブラウザに複数のページがある場合、各ページは独自のビューポートサイズを持つことができます。ただし、browser.new_context() を使用すると、コンテキスト内のすべてのページに対してビューポートサイズ (およびその他) を一度に設定できます。
page.set_viewport_size() はページのサイズを変更します。多くの Web サイトは電話のサイズが変更されることを想定していないため、ページに移動する前にビューポートサイズを設定する必要があります。page.set_viewport_size() は screen
サイズもリセットします。これらのプロパティをより細かく制御する必要がある場合は、screen
および viewport
パラメーターを指定して browser.new_context() を使用してください。
使用例
- Sync
- Async
page = browser.new_page()
page.set_viewport_size({"width": 640, "height": 480})
page.goto("https://example.com")
page = await browser.new_page()
await page.set_viewport_size({"width": 640, "height": 480})
await page.goto("https://example.com")
引数
戻り値
title
v1.9 より前に追加ページのタイトルを返します。
使用例
page.title()
戻り値
unroute
v1.9 より前に追加page.route() で作成されたルートを削除します。handler が指定されていない場合、url のすべてのルートを削除します。
使用例
page.unroute(url)
page.unroute(url, **kwargs)
引数
-
url
str | Pattern | Callable[URL]:bool#ルーティング中に一致させる URL を受信する glob パターン、正規表現パターン、または述語。
-
handler
Callable[Route, Request]:Promise[Any] | Any (任意)#リクエストをルーティングするためのオプションのハンドラー関数。
戻り値
unroute_all
バージョン 1.41 で追加page.route() および page.route_from_har() で作成されたすべてのルートを削除します。
使用例
page.unroute_all()
page.unroute_all(**kwargs)
引数
-
behavior
"wait" | "ignoreErrors" | "default" (任意)#すでに実行中のハンドラーを待機するかどうか、およびエラーが発生した場合の対処方法を指定します。
'default'
- 現在のハンドラー呼び出し (存在する場合) の完了を待機しません。アンルーティングされたハンドラーが例外をスローした場合、未処理のエラーが発生する可能性があります。'wait'
- 現在のハンドラー呼び出し (存在する場合) の完了を待機します。'ignoreErrors'
- 現在のハンドラー呼び出し (存在する場合) の完了を待機しません。アンルーティング後にハンドラーによってスローされたすべてのエラーは、警告なしにキャッチされます。
戻り値
wait_for_event
v1.9 より前に追加ほとんどの場合、page.expect_event() を使用する必要があります。
指定された event
が発生するのを待ちます。述語が指定されている場合、イベントの値を predicate
関数に渡し、predicate(event)
が真の値を返すのを待ちます。event
が発生する前にページが閉じられた場合、エラーがスローされます。
使用例
page.wait_for_event(event)
page.wait_for_event(event, **kwargs)
引数
-
イベント名。通常
*.on(event)
に渡されるものと同じです。 -
イベントデータを受け取り、待機を解決すべき場合に真偽値を返します。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
wait_for_function
v1.9 より前に追加expression が真の値を返すときに戻ります。真の値の JSHandle に解決されます。
使用例
page.wait_for_function() は、ビューポートサイズの変更を監視するために使用できます。
- Sync
- Async
from playwright.sync_api import sync_playwright, Playwright
def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch()
page = browser.new_page()
page.evaluate("window.x = 0; setTimeout(() => { window.x = 100 }, 1000);")
page.wait_for_function("() => window.x > 0")
browser.close()
with sync_playwright() as playwright:
run(playwright)
import asyncio
from playwright.async_api import async_playwright, Playwright
async def run(playwright: Playwright):
webkit = playwright.webkit
browser = await webkit.launch()
page = await browser.new_page()
await page.evaluate("window.x = 0; setTimeout(() => { window.x = 100 }, 1000);")
await page.wait_for_function("() => window.x > 0")
await browser.close()
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
page.wait_for_function() 関数の述語に引数を渡すには、次のようにします。
- Sync
- Async
selector = ".foo"
page.wait_for_function("selector => !!document.querySelector(selector)", selector)
selector = ".foo"
await page.wait_for_function("selector => !!document.querySelector(selector)", selector)
引数
-
ブラウザコンテキストで評価される JavaScript 式。式が関数に評価される場合、関数は自動的に呼び出されます。
-
arg
EvaluationArgument (任意)#expression に渡すオプションの引数。
-
polling が
'raf'
の場合、expression はrequestAnimationFrame
コールバックで継続的に実行されます。polling が数値の場合、関数が実行される間隔 (ミリ秒単位) として扱われます。デフォルトはraf
です。 -
待機する最大時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
wait_for_load_state
v1.9 より前に追加必要なロード状態に達すると戻ります。
これは、ページが必要なロード状態 (デフォルトでは load
) に達すると解決されます。ナビゲーションは、このメソッドが呼び出されたときにコミットされている必要があります。現在のドキュメントがすでに必要な状態に達している場合は、すぐに解決されます。
Playwright は すべてのアクションの前に自動待機 するため、ほとんどの場合、このメソッドは必要ありません。
使用例
- Sync
- Async
page.get_by_role("button").click() # click triggers navigation.
page.wait_for_load_state() # the promise resolves after "load" event.
await page.get_by_role("button").click() # click triggers navigation.
await page.wait_for_load_state() # the promise resolves after "load" event.
- Sync
- Async
with page.expect_popup() as page_info:
page.get_by_role("button").click() # click triggers a popup.
popup = page_info.value
# Wait for the "DOMContentLoaded" event.
popup.wait_for_load_state("domcontentloaded")
print(popup.title()) # popup is ready to use.
async with page.expect_popup() as page_info:
await page.get_by_role("button").click() # click triggers a popup.
popup = await page_info.value
# Wait for the "DOMContentLoaded" event.
await popup.wait_for_load_state("domcontentloaded")
print(await popup.title()) # popup is ready to use.
引数
-
state
"load" | "domcontentloaded" | "networkidle" (任意)#待機するオプションのロード状態。デフォルトは
load
です。現在のドキュメントのロード中に状態がすでに到達している場合、メソッドはすぐに解決されます。次のいずれかを指定できます。'load'
-load
イベントが発生するのを待ちます。'domcontentloaded'
-DOMContentLoaded
イベントが発生するのを待ちます。'networkidle'
- 推奨されません ネットワーク接続が少なくとも500
ミリ秒なくなるまで待ちます。テストにはこのメソッドを使用しないでください。代わりに Web アサーションを使用して準備状況を評価してください。
-
操作の最大時間(ミリ秒単位)。デフォルトは30秒です。タイムアウトを無効にするには
0
を渡します。デフォルト値は、browser_context.set_default_navigation_timeout()、browser_context.set_default_timeout()、page.set_default_navigation_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
wait_for_url
バージョン 1.11 で追加メインフレームが指定された URL に移動するのを待ちます。
使用例
- Sync
- Async
page.click("a.delayed-navigation") # clicking the link will indirectly cause a navigation
page.wait_for_url("**/target.html")
await page.click("a.delayed-navigation") # clicking the link will indirectly cause a navigation
await page.wait_for_url("**/target.html")
引数
-
url
str | Pattern | Callable[URL]:bool#ナビゲーションを待機中に一致させる URL を受信する glob パターン、正規表現パターン、または述語。パラメーターがワイルドカード文字を含まない文字列の場合、メソッドは文字列と完全に等しい URL へのナビゲーションを待機することに注意してください。
-
操作の最大時間(ミリ秒単位)。デフォルトは30秒です。タイムアウトを無効にするには
0
を渡します。デフォルト値は、browser_context.set_default_navigation_timeout()、browser_context.set_default_timeout()、page.set_default_navigation_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
wait_until
"load" | "domcontentloaded" | "networkidle" | "commit" (任意)#操作が成功したとみなすタイミング。デフォルトは
load
です。イベントは以下のいずれかになります。'domcontentloaded'
-DOMContentLoaded
イベントが発火したときに操作が完了したとみなします。'load'
-load
イベントが発火したときに操作が完了したとみなします。'networkidle'
- 非推奨 ネットワーク接続が少なくとも500
ミリ秒間ない場合に操作が完了したとみなします。テストにはこのメソッドを使用せず、代わりにウェブアサーションに依存して準備状態を評価してください。'commit'
- ネットワークレスポンスが受信され、ドキュメントのロードが開始されたときに操作が完了したとみなします。
戻り値
プロパティ
clock
バージョン 1.45 で追加Playwright には、時計と時間の経過をモックする機能があります。
使用例
page.clock
タイプ
context
v1.9 より前に追加ページが属するブラウザコンテキストを取得します。
使用例
page.context
戻り値
frames
v1.9 より前に追加ページにアタッチされているすべてのフレームの配列。
使用例
page.frames
戻り値
is_closed
v1.9 より前に追加ページが閉じられたことを示します。
使用例
page.is_closed()
戻り値
keyboard
v1.9 より前に追加使用例
page.keyboard
タイプ
main_frame
v1.9 より前に追加ページのメインフレーム。ページには、ナビゲーション中に永続化されるメインフレームがあることが保証されています。
使用例
page.main_frame
戻り値
mouse
v1.9 より前に追加使用例
page.mouse
タイプ
request
バージョン 1.16 で追加このページに関連付けられた API テストヘルパー。このメソッドは、ページのコンテキストで browser_context.request と同じインスタンスを返します。詳細については、browser_context.request を参照してください。
使用例
page.request
タイプ
touchscreen
v1.9 より前に追加使用例
page.touchscreen
タイプ
url
v1.9 より前に追加使用例
page.url
戻り値
video
v1.9 より前に追加このページに関連付けられたビデオオブジェクト。
使用例
page.video
戻り値
viewport_size
v1.9 より前に追加使用例
page.viewport_size
戻り値
workers
v1.9 より前に追加このメソッドは、ページに関連付けられた専用の WebWorker をすべて返します。
これには ServiceWorker は含まれません
使用例
page.workers
戻り値
イベント
on("close")
v1.9 より前に追加ページが閉じるときに発行されます。
使用例
page.on("close", handler)
イベントデータ
on("console")
v1.9 より前に追加ページ内の JavaScript が console.log
や console.dir
などの console API メソッドのいずれかを呼び出すと発行されます。
console.log
に渡された引数は、ConsoleMessage イベントハンドラー引数で使用できます。
使用例
- Sync
- Async
def print_args(msg):
for arg in msg.args:
print(arg.json_value())
page.on("console", print_args)
page.evaluate("console.log('hello', 5, { foo: 'bar' })")
async def print_args(msg):
values = []
for arg in msg.args:
values.append(await arg.json_value())
print(values)
page.on("console", print_args)
await page.evaluate("console.log('hello', 5, { foo: 'bar' })")
イベントデータ
on("crash")
v1.9 より前に追加ページがクラッシュしたときに発行されます。ブラウザページは、メモリを過剰に割り当てようとするとクラッシュする可能性があります。ページがクラッシュすると、進行中および後続の操作は例外をスローします。
クラッシュに対処する最も一般的な方法は、例外をキャッチすることです。
- Sync
- Async
try:
# crash might happen during a click.
page.click("button")
# or while waiting for an event.
page.wait_for_event("popup")
except Error as e:
pass
# when the page crashes, exception message contains "crash".
try:
# crash might happen during a click.
await page.click("button")
# or while waiting for an event.
await page.wait_for_event("popup")
except Error as e:
pass
# when the page crashes, exception message contains "crash".
使用例
page.on("crash", handler)
イベントデータ
on("dialog")
v1.9 より前に追加alert
、prompt
、confirm
、beforeunload
などの JavaScript ダイアログが表示されると発行されます。リスナーは、dialog.accept() または dialog.dismiss() のいずれかでダイアログを受け入れる必要があります。そうしないと、ページがダイアログを待機してフリーズし、クリックなどのアクションが完了しなくなります。
使用例
page.on("dialog", lambda dialog: dialog.accept())
page.on("dialog") または browser_context.on("dialog") リスナーが存在しない場合、すべてのダイアログは自動的に閉じられます。
イベントデータ
on("domcontentloaded")
追加: v1.9JavaScript の DOMContentLoaded
イベントがディスパッチされると発行されます。
使用例
page.on("domcontentloaded", handler)
イベントデータ
on("download")
v1.9 より前に追加添付ファイルのダウンロードが開始されると発行されます。ユーザーは、渡された Download インスタンスを介して、ダウンロードされたコンテンツに対する基本的なファイル操作にアクセスできます。
使用例
page.on("download", handler)
イベントデータ
on("filechooser")
追加: v1.9ファイルチューザーが表示されるべき時に発生します。例えば、<input type=file>
をクリックした後などです。Playwright は、file_chooser.set_files() を使用して入力ファイルをセットすることでこれに応答でき、その後ファイルをアップロードできます。
page.on("filechooser", lambda file_chooser: file_chooser.set_files("/tmp/myfile.pdf"))
使用例
page.on("filechooser", handler)
イベントデータ
on("frameattached")
追加: v1.9フレームがアタッチされたときに発生します。
使用例
page.on("frameattached", handler)
イベントデータ
on("framedetached")
追加: v1.9フレームがデタッチされたときに発生します。
使用例
page.on("framedetached", handler)
イベントデータ
on("framenavigated")
追加: v1.9フレームが新しい URL にナビゲートされたときに発生します。
使用例
page.on("framenavigated", handler)
イベントデータ
on("load")
v1.9 より前に追加JavaScript の load
イベントがディスパッチされたときに発生します。
使用例
page.on("load", handler)
イベントデータ
on("pageerror")
追加: v1.9ページ内でキャッチされない例外が発生したときに発生します。
- Sync
- Async
# Log all uncaught errors to the terminal
page.on("pageerror", lambda exc: print(f"uncaught exception: {exc}"))
# Navigate to a page with an exception.
page.goto("data:text/html,<script>throw new Error('test')</script>")
# Log all uncaught errors to the terminal
page.on("pageerror", lambda exc: print(f"uncaught exception: {exc}"))
# Navigate to a page with an exception.
await page.goto("data:text/html,<script>throw new Error('test')</script>")
使用例
page.on("pageerror", handler)
イベントデータ
on("popup")
v1.9 より前に追加ページが新しいタブまたはウィンドウを開いたときに発生します。このイベントは、browser_context.on("page") に加えて発生しますが、このページに関連するポップアップのみが対象です。
ページが利用可能になる最も早いタイミングは、初期 URL にナビゲートされたときです。例えば、window.open('http://example.com')
でポップアップを開くと、"http://example.com" へのネットワークリクエストが完了し、そのレスポンスがポップアップでの読み込みを開始したときに、このイベントが発生します。このネットワークリクエストをルーティング/リッスンしたい場合は、browser_context.route() および browser_context.on("request") を、Page の同様のメソッドの代わりに使用してください。
- Sync
- Async
with page.expect_event("popup") as page_info:
page.get_by_text("open the popup").click()
popup = page_info.value
print(popup.evaluate("location.href"))
async with page.expect_event("popup") as page_info:
await page.get_by_text("open the popup").click()
popup = await page_info.value
print(await popup.evaluate("location.href"))
ページが特定の状態になるまで待機するには、page.wait_for_load_state() を使用してください(ほとんどの場合、必要ありません)。
使用例
page.on("popup", handler)
イベントデータ
on("request")
v1.9 より前に追加ページがリクエストを発行したときに発生します。request オブジェクトは読み取り専用です。リクエストをインターセプトして変更するには、page.route() または browser_context.route() を参照してください。
使用例
page.on("request", handler)
イベントデータ
on("requestfailed")
追加: v1.9リクエストが失敗したときに発生します。例えば、タイムアウトした場合などです。
page.on("requestfailed", lambda request: print(request.url + " " + request.failure.error_text))
404 や 503 などの HTTP エラーレスポンスは、HTTP の観点からは依然として成功したレスポンスであるため、リクエストは page.on("requestfinished") イベントで完了し、page.on("requestfailed") イベントでは完了しません。リクエストが失敗と見なされるのは、クライアントがサーバーから HTTP レスポンスを取得できない場合のみです。例えば、ネットワークエラー net::ERR_FAILED などが原因の場合です。
使用例
page.on("requestfailed", handler)
イベントデータ
on("requestfinished")
追加: v1.9レスポンスボディのダウンロード後、リクエストが正常に完了したときに発生します。成功したレスポンスの場合、イベントのシーケンスは request
、response
、requestfinished
です。
使用例
page.on("requestfinished", handler)
イベントデータ
on("response")
v1.9 より前に追加リクエストに対する response のステータスとヘッダーを受信したときに発生します。成功したレスポンスの場合、イベントのシーケンスは request
、response
、requestfinished
です。
使用例
page.on("response", handler)
イベントデータ
on("websocket")
追加: v1.9WebSocket リクエストが送信されたときに発生します。
使用例
page.on("websocket", handler)
イベントデータ
on("worker")
v1.9 より前に追加専用の WebWorker がページによって生成されたときに発生します。
使用例
page.on("worker", handler)
イベントデータ
非推奨
アクセシビリティ
v1.9 より前に追加使用例
page.accessibility
タイプ
check
v1.9 より前に追加代わりに、ロケーターベースの locator.check() を使用してください。詳細については、ロケーター を参照してください。
このメソッドは、selector に一致する要素をチェックするために、次の手順を実行します。
- selector に一致する要素を検索します。一致する要素がない場合は、一致する要素が DOM にアタッチされるまで待ちます。
- 一致する要素がチェックボックスまたはラジオ入力であることを確認します。そうでない場合、このメソッドは例外をスローします。要素がすでにチェックされている場合、このメソッドはすぐに戻ります。
- force オプションが設定されていない限り、一致する要素のアクション実行可能性チェックを待ちます。チェック中に要素がデタッチされた場合、アクション全体が再試行されます。
- 必要に応じて、要素をビューにスクロールします。
- page.mouse を使用して、要素の中央をクリックします。
- 要素がチェックされたことを確認します。そうでない場合、このメソッドは例外をスローします。
指定された timeout 内にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。タイムアウトをゼロにすると、これは無効になります。
使用例
page.check(selector)
page.check(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
アクション実行可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
position
Dict (オプション)バージョン 1.11 で追加#要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視ポイントが使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
trial
bool (オプション)バージョン 1.11 で追加#設定すると、このメソッドは アクション実行可能性チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに要素がアクションの準備ができるまで待機する場合に役立ちます。
戻り値
click
v1.9 より前に追加代わりに、ロケーターベースの locator.click() を使用してください。詳細については、ロケーター を参照してください。
このメソッドは、selector に一致する要素をクリックするために、次の手順を実行します。
- selector に一致する要素を検索します。一致する要素がない場合は、一致する要素が DOM にアタッチされるまで待ちます。
- force オプションが設定されていない限り、一致する要素のアクション実行可能性チェックを待ちます。チェック中に要素がデタッチされた場合、アクション全体が再試行されます。
- 必要に応じて、要素をビューにスクロールします。
- page.mouse を使用して、要素の中央、または指定された position をクリックします。
- no_wait_after オプションが設定されていない限り、開始されたナビゲーションが成功または失敗するまで待ちます。
指定された timeout 内にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。タイムアウトをゼロにすると、これは無効になります。
使用例
page.click(selector)
page.click(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
button
"left" | "right" | "middle" (オプション)#デフォルトは
left
です。 -
デフォルトは 1 です。UIEvent.detail を参照してください。
-
mousedown
とmouseup
の間の待機時間(ミリ秒単位)。デフォルトは 0 です。 -
アクション実行可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
modifiers
List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (オプション)#押す修飾キー。操作中にこれらの修飾キーのみが押されていることを確認し、その後、現在の修飾キーを復元します。指定しない場合、現在押されている修飾キーが使用されます。"ControlOrMeta" は、Windows および Linux では "Control" に、macOS では "Meta" に解決されます。
-
非推奨
このオプションは、将来デフォルトで
true
になります。ナビゲーションを開始するアクションは、これらのナビゲーションが発生し、ページが読み込みを開始するのを待機しています。このフラグを設定することで、待機をオプトアウトできます。このオプションが必要になるのは、アクセスできないページにナビゲートするなどの例外的なケースのみです。デフォルトは
false
です。 -
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視ポイントが使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
trial
bool (オプション)バージョン 1.11 で追加#設定すると、このメソッドは actionability チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。要素がアクションの準備が整うまで待機するのに役立ちますが、アクションは実行しません。キーボードのmodifiers
は、それらのキーが押されている場合にのみ表示される要素をテストできるように、trial
に関係なく押されることに注意してください。
戻り値
dblclick
v1.9 より前に追加代わりに、ロケーターベースの locator.dblclick() を使用してください。詳細については、ロケーター を参照してください。
このメソッドは、selector に一致する要素をダブルクリックするために、次の手順を実行します。
- selector に一致する要素を検索します。一致する要素がない場合は、一致する要素が DOM にアタッチされるまで待ちます。
- force オプションが設定されていない限り、一致する要素のアクション実行可能性チェックを待ちます。チェック中に要素がデタッチされた場合、アクション全体が再試行されます。
- 必要に応じて、要素をビューにスクロールします。
- page.mouse を使用して、要素の中央、または指定された position をダブルクリックします。
指定された timeout 内にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。タイムアウトをゼロにすると、これは無効になります。
page.dblclick()
は、2 つの click
イベントと 1 つの dblclick
イベントをディスパッチします。
使用例
page.dblclick(selector)
page.dblclick(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
button
"left" | "right" | "middle" (オプション)#デフォルトは
left
です。 -
mousedown
とmouseup
の間の待機時間(ミリ秒単位)。デフォルトは 0 です。 -
アクション実行可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
modifiers
List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (オプション)#押す修飾キー。操作中にこれらの修飾キーのみが押されていることを確認し、その後、現在の修飾キーを復元します。指定しない場合、現在押されている修飾キーが使用されます。"ControlOrMeta" は、Windows および Linux では "Control" に、macOS では "Meta" に解決されます。
-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視ポイントが使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
trial
bool (オプション)バージョン 1.11 で追加#設定すると、このメソッドは actionability チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。要素がアクションの準備が整うまで待機するのに役立ちますが、アクションは実行しません。キーボードのmodifiers
は、それらのキーが押されている場合にのみ表示される要素をテストできるように、trial
に関係なく押されることに注意してください。
戻り値
dispatch_event
v1.9 より前に追加代わりに、ロケーターベースの locator.dispatch_event() を使用してください。詳細については、ロケーター を参照してください。
以下のスニペットは、要素に対して click
イベントをディスパッチします。要素の可視状態に関係なく、click
がディスパッチされます。これは、element.click() を呼び出すのと同じです。
使用例
- Sync
- Async
page.dispatch_event("button#submit", "click")
await page.dispatch_event("button#submit", "click")
内部的には、指定された type に基づいてイベントのインスタンスを作成し、event_init プロパティで初期化し、要素にディスパッチします。イベントは、デフォルトで composed
、cancelable
、およびバブルです。
event_init はイベント固有であるため、初期プロパティのリストについては、イベントのドキュメントを参照してください。
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
ライブオブジェクトをイベントに渡したい場合は、プロパティ値として JSHandle
を指定することもできます。
- Sync
- Async
# note you can only create data_transfer in chromium and firefox
data_transfer = page.evaluate_handle("new DataTransfer()")
page.dispatch_event("#source", "dragstart", { "dataTransfer": data_transfer })
# note you can only create data_transfer in chromium and firefox
data_transfer = await page.evaluate_handle("new DataTransfer()")
await page.dispatch_event("#source", "dragstart", { "dataTransfer": data_transfer })
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
DOM イベントタイプ:
"click"
,"dragstart"
など。 -
event_init
EvaluationArgument (オプション)#オプションのイベント固有の初期化プロパティ。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
eval_on_selector
追加: v1.9このメソッドは、要素がアクション実行可能性チェックに合格するのを待たないため、テストが不安定になる可能性があります。代わりに、locator.evaluate()、他の Locator ヘルパーメソッド、または Web ファーストアサーションを使用してください。
このメソッドは、ページ内で指定されたセレクターに一致する要素を見つけ、それを最初の引数として expression に渡します。セレクターに一致する要素がない場合、メソッドはエラーをスローします。expression の値を返します。
expression が Promise を返す場合、page.eval_on_selector() は Promise が解決されるのを待って、その値を返します。
使用例
- Sync
- Async
search_value = page.eval_on_selector("#search", "el => el.value")
preload_href = page.eval_on_selector("link[rel=preload]", "el => el.href")
html = page.eval_on_selector(".main-container", "(e, suffix) => e.outer_html + suffix", "hello")
search_value = await page.eval_on_selector("#search", "el => el.value")
preload_href = await page.eval_on_selector("link[rel=preload]", "el => el.href")
html = await page.eval_on_selector(".main-container", "(e, suffix) => e.outer_html + suffix", "hello")
引数
-
クエリするセレクター。
-
ブラウザコンテキストで評価される JavaScript 式。式が関数に評価される場合、関数は自動的に呼び出されます。
-
arg
EvaluationArgument (オプション)#expression に渡すオプションの引数。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
戻り値
eval_on_selector_all
追加: v1.9ほとんどの場合、locator.evaluate_all()、他の Locator ヘルパーメソッド、および Web ファーストアサーションの方が優れています。
このメソッドは、ページ内で指定されたセレクターに一致するすべての要素を見つけ、一致する要素の配列を最初の引数として expression に渡します。expression 呼び出しの結果を返します。
expression が Promise を返す場合、page.eval_on_selector_all() は Promise が解決されるのを待って、その値を返します。
使用例
- Sync
- Async
div_counts = page.eval_on_selector_all("div", "(divs, min) => divs.length >= min", 10)
div_counts = await page.eval_on_selector_all("div", "(divs, min) => divs.length >= min", 10)
引数
-
クエリするセレクター。
-
ブラウザコンテキストで評価される JavaScript 式。式が関数に評価される場合、関数は自動的に呼び出されます。
-
arg
EvaluationArgument (オプション)#expression に渡すオプションの引数。
戻り値
expect_navigation
v1.9 より前に追加このメソッドは本質的に競争状態になりやすいため、代わりに page.wait_for_url() を使用してください。
メインフレームのナビゲーションを待機し、メインリソースレスポンスを返します。複数のリダイレクトの場合、ナビゲーションは最後のリダイレクトのレスポンスで解決されます。異なるアンカーへのナビゲーション、または History API の使用によるナビゲーションの場合、ナビゲーションは null
で解決されます。
使用例
これは、ページが新しい URL にナビゲートするか、リロードするときに解決されます。これは、ページを間接的にナビゲートさせるコードを実行する場合に役立ちます。例: クリックターゲットには、setTimeout
からナビゲーションをトリガーする onclick
ハンドラーがあります。次の例を考えてみてください。
- Sync
- Async
with page.expect_navigation():
# This action triggers the navigation after a timeout.
page.get_by_text("Navigate after timeout").click()
# Resolves after navigation has finished
async with page.expect_navigation():
# This action triggers the navigation after a timeout.
await page.get_by_text("Navigate after timeout").click()
# Resolves after navigation has finished
History API を使用して URL を変更することは、ナビゲーションと見なされます。
引数
-
操作の最大時間(ミリ秒単位)。デフォルトは30秒です。タイムアウトを無効にするには
0
を渡します。デフォルト値は、browser_context.set_default_navigation_timeout()、browser_context.set_default_timeout()、page.set_default_navigation_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
url
str | Pattern | Callable[URL]:bool (オプション)#ナビゲーションを待機中に一致させる URL を受信する glob パターン、正規表現パターン、または述語。パラメーターがワイルドカード文字を含まない文字列の場合、メソッドは文字列と完全に等しい URL へのナビゲーションを待機することに注意してください。
-
wait_until
"load" | "domcontentloaded" | "networkidle" | "commit" (オプション)#操作が成功したとみなすタイミング。デフォルトは
load
です。イベントは以下のいずれかになります。'domcontentloaded'
-DOMContentLoaded
イベントが発火したときに操作が完了したとみなします。'load'
-load
イベントが発火したときに操作が完了したとみなします。'networkidle'
- 非推奨 ネットワーク接続が少なくとも500
ミリ秒間ない場合に操作が完了したとみなします。テストにはこのメソッドを使用せず、代わりにウェブアサーションに依存して準備状態を評価してください。'commit'
- ネットワークレスポンスが受信され、ドキュメントのロードが開始されたときに操作が完了したとみなします。
戻り値
fill
v1.9 より前に追加代わりに、ロケーターベースの locator.fill() を使用してください。詳細については、ロケーター を参照してください。
このメソッドは、selector に一致する要素を待機し、actionability チェックを待機し、要素にフォーカスを当て、入力し、入力後に input
イベントをトリガーします。入力フィールドをクリアするために空の文字列を渡すことができることに注意してください。
ターゲット要素が <input>
、<textarea>
、または [contenteditable]
要素でない場合、このメソッドはエラーをスローします。ただし、要素が関連付けられた control を持つ <label>
要素内にある場合、代わりにコントロールが入力されます。
きめ細かいキーボードイベントを送信するには、locator.press_sequentially() を使用してください。
使用例
page.fill(selector, value)
page.fill(selector, value, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
<input>
、<textarea>
、または[contenteditable]
要素に入力する値。 -
アクション実行可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
focus
v1.9 より前に追加代わりに、ロケーターベースの locator.focus() を使用してください。詳細については、ロケーター を参照してください。
このメソッドは、selector を持つ要素を取得し、フォーカスを当てます。selector に一致する要素がない場合、メソッドは一致する要素が DOM に表示されるまで待ちます。
使用例
page.focus(selector)
page.focus(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
get_attribute
v1.9 より前に追加代わりに、ロケーターベースの locator.get_attribute() を使用してください。詳細については、ロケーター を参照してください。
要素の属性値を返します。
使用例
page.get_attribute(selector, name)
page.get_attribute(selector, name, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
値を取得する属性名。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
hover
v1.9 より前に追加ロケーターベースの locator.hover() を代わりに使用してください。ロケーターの詳細をご覧ください。
このメソッドは、selector に一致する要素に、次の手順を実行してホバーします。
- selector に一致する要素を検索します。一致する要素がない場合は、一致する要素が DOM にアタッチされるまで待機します。
- 操作可能性チェックが一致した要素に対して実行されるのを待ちます。ただし、force オプションが設定されている場合は除きます。チェック中に要素がデタッチされた場合、アクション全体が再試行されます。
- 必要に応じて、要素をビューにスクロールします。
- page.mouse を使用して、要素の中央、または指定された position にホバーします。
指定された timeout 時間内にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。タイムアウトに 0 を渡すと、これは無効になります。
使用例
page.hover(selector)
page.hover(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
アクション実行可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
modifiers
List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (任意)#押す修飾キー。操作中にこれらの修飾キーのみが押されていることを確認し、その後、現在の修飾キーを復元します。指定しない場合、現在押されている修飾キーが使用されます。"ControlOrMeta" は、Windows および Linux では "Control" に、macOS では "Meta" に解決されます。
-
no_wait_after
bool (オプション)追加: v1.28#非推奨このオプションは効果がありません。
このオプションは効果がありません。
-
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視ポイントが使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
trial
bool (オプション)バージョン 1.11 で追加#設定すると、このメソッドは actionability チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。要素がアクションの準備が整うまで待機するのに役立ちますが、アクションは実行しません。キーボードのmodifiers
は、それらのキーが押されている場合にのみ表示される要素をテストできるように、trial
に関係なく押されることに注意してください。
戻り値
inner_html
v1.9 より前に追加ロケーターベースの locator.inner_html() を代わりに使用してください。ロケーターの詳細をご覧ください。
element.innerHTML
を返します。
使用例
page.inner_html(selector)
page.inner_html(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
inner_text
v1.9 より前に追加ロケーターベースの locator.inner_text() を代わりに使用してください。ロケーターの詳細をご覧ください。
element.innerText
を返します。
使用例
page.inner_text(selector)
page.inner_text(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
input_value
追加: v1.13ロケーターベースの locator.input_value() を代わりに使用してください。ロケーターの詳細をご覧ください。
選択された <input>
、<textarea>
、または <select>
要素の input.value
を返します。
入力要素以外の場合はエラーをスローします。ただし、要素が関連付けられた コントロール を持つ <label>
要素内にある場合は、コントロールの値を返します。
使用例
page.input_value(selector)
page.input_value(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
is_checked
v1.9 より前に追加ロケーターベースの locator.is_checked() を代わりに使用してください。ロケーターの詳細をご覧ください。
要素がチェックされているかどうかを返します。要素がチェックボックスまたはラジオ入力でない場合はエラーをスローします。
使用例
page.is_checked(selector)
page.is_checked(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
is_disabled
v1.9 より前に追加ロケーターベースの locator.is_disabled() を代わりに使用してください。ロケーターの詳細をご覧ください。
要素が無効になっているかどうかを返します。有効 の反対です。
使用例
page.is_disabled(selector)
page.is_disabled(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
is_editable
v1.9 より前に追加ロケーターベースの locator.is_editable() を代わりに使用してください。ロケーターの詳細をご覧ください。
要素が 編集可能 かどうかを返します。
使用例
page.is_editable(selector)
page.is_editable(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
is_enabled
v1.9 より前に追加ロケーターベースの locator.is_enabled() を代わりに使用してください。ロケーターの詳細をご覧ください。
要素が 有効 かどうかを返します。
使用例
page.is_enabled(selector)
page.is_enabled(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
is_hidden
v1.9 より前に追加ロケーターベースの locator.is_hidden() を代わりに使用してください。ロケーターの詳細をご覧ください。
要素が非表示かどうかを返します。表示 の反対です。selector がどの要素にも一致しない場合、非表示とみなされます。
使用例
page.is_hidden(selector)
page.is_hidden(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
非推奨
このオプションは無視されます。page.is_hidden() は要素が非表示になるのを待たずに、すぐに戻ります。
戻り値
is_visible
v1.9 より前に追加ロケーターベースの locator.is_visible() を代わりに使用してください。ロケーターの詳細をご覧ください。
要素が 表示 されているかどうかを返します。selector がどの要素にも一致しない場合、表示されていないとみなされます。
使用例
page.is_visible(selector)
page.is_visible(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
非推奨
このオプションは無視されます。page.is_visible() は要素が表示されるのを待たずに、すぐに戻ります。
戻り値
press
v1.9 より前に追加ロケーターベースの locator.press() を代わりに使用してください。ロケーターの詳細をご覧ください。
要素にフォーカスし、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
は、Windows および Linux では Control
に、macOS では Meta
に解決されます。
Shift
キーを押しながら key に対応するテキストを大文字で入力します。
key が単一の文字の場合、大文字と小文字が区別されるため、値 a
と A
はそれぞれ異なるテキストを生成します。
key: "Control+o"
、key: "Control++
、または key: "Control+Shift+T"
などのショートカットもサポートされています。修飾キー付きで指定すると、修飾キーが押され、後続のキーが押されている間保持されます。
使用例
- Sync
- Async
page = browser.new_page()
page.goto("https://keycode.info")
page.press("body", "A")
page.screenshot(path="a.png")
page.press("body", "ArrowLeft")
page.screenshot(path="arrow_left.png")
page.press("body", "Shift+O")
page.screenshot(path="o.png")
browser.close()
page = await browser.new_page()
await page.goto("https://keycode.info")
await page.press("body", "A")
await page.screenshot(path="a.png")
await page.press("body", "ArrowLeft")
await page.screenshot(path="arrow_left.png")
await page.press("body", "Shift+O")
await page.screenshot(path="o.png")
await browser.close()
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
押すキーの名前、または
ArrowLeft
やa
などの生成する文字。 -
keydown
とkeyup
の間の待ち時間(ミリ秒単位)。デフォルトは 0 です。 -
非推奨
このオプションは、将来デフォルトで
true
になります。ナビゲーションを開始するアクションは、これらのナビゲーションが発生し、ページが読み込みを開始するのを待機しています。このフラグを設定することで、待機をオプトアウトできます。このオプションが必要になるのは、アクセスできないページにナビゲートするなどの例外的なケースのみです。デフォルトは
false
です。 -
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
query_selector
追加: v1.9ロケーターベースの page.locator() を代わりに使用してください。ロケーターの詳細をご覧ください。
このメソッドは、ページ内で指定されたセレクターに一致する要素を検索します。セレクターに一致する要素がない場合、戻り値は null
に解決されます。ページ上の要素を待機するには、locator.wait_for() を使用してください。
使用例
page.query_selector(selector)
page.query_selector(selector, **kwargs)
引数
-
クエリするセレクター。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
戻り値
query_selector_all
追加: v1.9ロケーターベースの page.locator() を代わりに使用してください。ロケーターの詳細をご覧ください。
このメソッドは、ページ内で指定されたセレクターに一致するすべての要素を検索します。セレクターに一致する要素がない場合、戻り値は []
に解決されます。
使用例
page.query_selector_all(selector)
引数
戻り値
select_option
v1.9 より前に追加ロケーターベースの locator.select_option() を代わりに使用してください。ロケーターの詳細をご覧ください。
このメソッドは、selector に一致する要素を待機し、操作可能性チェックを待機し、指定されたすべてのオプションが <select>
要素に存在し、これらのオプションが選択されるまで待機します。
ターゲット要素が <select>
要素でない場合、このメソッドはエラーをスローします。ただし、要素が関連付けられた コントロール を持つ <label>
要素内にある場合は、代わりにコントロールが使用されます。
正常に選択されたオプション値の配列を返します。
指定されたすべてのオプションが選択されると、change
および input
イベントをトリガーします。
使用例
- Sync
- Async
# Single selection matching the value or label
page.select_option("select#colors", "blue")
# single selection matching both the label
page.select_option("select#colors", label="blue")
# multiple selection
page.select_option("select#colors", value=["red", "green", "blue"])
# Single selection matching the value or label
await page.select_option("select#colors", "blue")
# single selection matching the label
await page.select_option("select#colors", label="blue")
# multiple selection
await page.select_option("select#colors", value=["red", "green", "blue"])
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
アクション実行可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
element
ElementHandle | List[ElementHandle] (任意)#選択するオプション要素。任意。
-
インデックスで選択するオプション。任意。
-
値で選択するオプション。
<select>
にmultiple
属性がある場合、指定されたすべてのオプションが選択されます。それ以外の場合は、渡されたオプションのいずれかに一致する最初のオプションのみが選択されます。任意。 -
ラベルで選択するオプション。
<select>
にmultiple
属性がある場合、指定されたすべてのオプションが選択されます。それ以外の場合は、渡されたオプションのいずれかに一致する最初のオプションのみが選択されます。任意。
戻り値
set_checked
追加: v1.15ロケーターベースの locator.set_checked() を代わりに使用してください。ロケーターの詳細をご覧ください。
このメソッドは、次の手順を実行して、selector に一致する要素をチェックまたはチェック解除します。
- selector に一致する要素を検索します。一致する要素がない場合は、一致する要素が DOM にアタッチされるまで待機します。
- 一致した要素がチェックボックスまたはラジオ入力であることを確認します。そうでない場合、このメソッドはエラーをスローします。
- 要素がすでに正しいチェック状態になっている場合、このメソッドはすぐに戻ります。
- 操作可能性チェックが一致した要素に対して実行されるのを待ちます。ただし、force オプションが設定されている場合は除きます。チェック中に要素がデタッチされた場合、アクション全体が再試行されます。
- 必要に応じて、要素をビューにスクロールします。
- page.mouse を使用して、要素の中央をクリックします。
- 要素がチェックまたはチェック解除されたことを確認します。そうでない場合、このメソッドはエラーをスローします。
指定された timeout 時間内にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。タイムアウトに 0 を渡すと、これは無効になります。
使用例
page.set_checked(selector, checked)
page.set_checked(selector, checked, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
チェックボックスをチェックするかチェック解除するか。
-
アクション実行可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視ポイントが使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
設定すると、このメソッドは アクション実行可能性チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに要素がアクションの準備ができるまで待機する場合に役立ちます。
戻り値
set_input_files
v1.9 より前に追加ロケーターベースの locator.set_input_files() を代わりに使用してください。ロケーターの詳細をご覧ください。
ファイル入力の値をこれらのファイルパスまたはファイルに設定します。filePaths
の一部が相対パスである場合、それらは現在の作業ディレクトリに対する相対パスとして解決されます。空の配列の場合、選択されたファイルをクリアします。[webkitdirectory]
属性を持つ入力の場合、単一のディレクトリパスのみがサポートされます。
このメソッドは、selector が input 要素 を指していることを期待します。ただし、要素が関連付けられた コントロール を持つ <label>
要素内にある場合は、代わりにコントロールをターゲットにします。
使用例
page.set_input_files(selector, files)
page.set_input_files(selector, files, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
files
Union[str, pathlib.Path] | List[Union[str, pathlib.Path]] | Dict | List[Dict]# -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
tap
v1.9 より前に追加ロケーターベースの locator.tap() を代わりに使用してください。ロケーターの詳細をご覧ください。
このメソッドは、次の手順を実行して、selector に一致する要素をタップします。
- selector に一致する要素を検索します。一致する要素がない場合は、一致する要素が DOM にアタッチされるまで待機します。
- 操作可能性チェックが一致した要素に対して実行されるのを待ちます。ただし、force オプションが設定されている場合は除きます。チェック中に要素がデタッチされた場合、アクション全体が再試行されます。
- 必要に応じて、要素をビューにスクロールします。
- page.touchscreen を使用して、要素の中央、または指定された position をタップします。
指定された timeout 時間内にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。タイムアウトに 0 を渡すと、これは無効になります。
page.tap() メソッドは、ブラウザーコンテキストの has_touch オプションが false の場合、エラーをスローします。
使用例
page.tap(selector)
page.tap(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
アクション実行可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
modifiers
List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (任意)#押す修飾キー。操作中にこれらの修飾キーのみが押されていることを確認し、その後、現在の修飾キーを復元します。指定しない場合、現在押されている修飾キーが使用されます。"ControlOrMeta" は、Windows および Linux では "Control" に、macOS では "Meta" に解決されます。
-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視ポイントが使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
trial
bool (オプション)バージョン 1.11 で追加#設定すると、このメソッドは actionability チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。要素がアクションの準備が整うまで待機するのに役立ちますが、アクションは実行しません。キーボードのmodifiers
は、それらのキーが押されている場合にのみ表示される要素をテストできるように、trial
に関係なく押されることに注意してください。
戻り値
text_content
v1.9 より前に追加代わりにロケーターベースの locator.text_content() を使用してください。ロケーターの詳細はこちらをご覧ください。
element.textContent
を返します。
使用例
page.text_content(selector)
page.text_content(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
type
v1.9 より前に追加ほとんどの場合、代わりに locator.fill() を使用する必要があります。ページに特別なキーボード処理がある場合にのみ、キーを 1 つずつ押す必要があります。その場合は、locator.press_sequentially() を使用してください。
テキスト内の各文字に対して、keydown
、keypress
/input
、および keyup
イベントを送信します。page.type
は、きめ細かいキーボードイベントを送信するために使用できます。フォームフィールドに値を入力するには、page.fill() を使用してください。
Control
や ArrowDown
などの特殊キーを押すには、keyboard.press() を使用してください。
使用例
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
フォーカスされた要素に入力するテキスト。
-
キー押下間の時間間隔(ミリ秒単位)。デフォルトは 0 です。
-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
uncheck
v1.9 より前に追加代わりにロケーターベースの locator.uncheck() を使用してください。ロケーターの詳細はこちらをご覧ください。
このメソッドは、次の手順を実行して、selector に一致する要素のチェックを外します。
- selector に一致する要素を検索します。存在しない場合は、一致する要素が DOM にアタッチされるまで待機します。
- 一致する要素がチェックボックスまたはラジオ入力であることを確認します。そうでない場合、このメソッドは例外をスローします。要素がすでにチェック解除されている場合、このメソッドはすぐに戻ります。
- アクション実行可能性チェックを、force オプションが設定されていない限り、一致する要素に対して実行されるのを待ちます。チェック中に要素がデタッチされた場合、アクション全体が再試行されます。
- 必要に応じて、要素をビューにスクロールします。
- page.mouse を使用して、要素の中央をクリックします。
- 要素が現在チェック解除されていることを確認します。そうでない場合、このメソッドは例外をスローします。
指定された timeout 中にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。タイムアウトにゼロを渡すと、これは無効になります。
使用例
page.uncheck(selector)
page.uncheck(selector, **kwargs)
引数
-
要素を検索するためのセレクター。セレクターを満たす要素が複数ある場合は、最初の要素が使用されます。
-
アクション実行可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
position
Dict (オプション)バージョン 1.11 で追加#要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視ポイントが使用されます。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。 -
trial
bool (オプション)バージョン 1.11 で追加#設定すると、このメソッドは アクション実行可能性チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに要素がアクションの準備ができるまで待機する場合に役立ちます。
戻り値
wait_for_selector
v1.9 より前に追加代わりに、可視性をアサートするウェブアサーションまたはロケーターベースの locator.wait_for() を使用してください。ロケーターの詳細はこちらをご覧ください。
セレクターで指定された要素が state オプションを満たすと戻ります。hidden
または detached
を待機している場合は null
を返します。
Playwright は、アクションを実行する前に要素が準備完了になるのを自動的に待機します。Locator オブジェクトとウェブファーストのアサーションを使用すると、コードから wait_for_selector が不要になります。
selector が state オプション (DOM に出現/消滅、または表示/非表示のいずれか) を満たすまで待機します。メソッド呼び出し時に selector がすでに条件を満たしている場合、メソッドはすぐに戻ります。セレクターが timeout (ミリ秒) の間、条件を満たさない場合、関数は例外をスローします。
使用例
このメソッドはナビゲーションをまたいで動作します。
- Sync
- Async
from playwright.sync_api import sync_playwright, Playwright
def run(playwright: Playwright):
chromium = playwright.chromium
browser = chromium.launch()
page = browser.new_page()
for current_url in ["https://google.com", "https://bbc.com"]:
page.goto(current_url, wait_until="domcontentloaded")
element = page.wait_for_selector("img")
print("Loaded image: " + str(element.get_attribute("src")))
browser.close()
with sync_playwright() as playwright:
run(playwright)
import asyncio
from playwright.async_api import async_playwright, Playwright
async def run(playwright: Playwright):
chromium = playwright.chromium
browser = await chromium.launch()
page = await browser.new_page()
for current_url in ["https://google.com", "https://bbc.com"]:
await page.goto(current_url, wait_until="domcontentloaded")
element = await page.wait_for_selector("img")
print("Loaded image: " + str(await element.get_attribute("src")))
await browser.close()
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
引数
-
クエリするセレクター。
-
state
"attached" | "detached" | "visible" | "hidden" (オプション)#デフォルトは
'visible'
です。次のいずれかの値を指定できます。'attached'
- 要素が DOM に存在している状態になるのを待ちます。'detached'
- 要素が DOM に存在しなくなるのを待ちます。'visible'
- 要素が空でない bounding box を持ち、visibility:hidden
でないのを待ちます。コンテンツがない要素やdisplay:none
が設定されている要素は空の bounding box を持ち、表示されているとはみなされないことに注意してください。'hidden'
- 要素が DOM からデタッチされるか、空の bounding box を持つか、visibility:hidden
になるのを待ちます。これは'visible'
オプションの反対です。
-
true の場合、この呼び出しでは、セレクターが単一の要素に解決される必要があります。指定されたセレクターが複数の要素に解決される場合、この呼び出しは例外をスローします。
-
最大待機時間 (ミリ秒単位)。デフォルトは
30000
(30 秒) です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、browser_context.set_default_timeout() または page.set_default_timeout() メソッドを使用して変更できます。
戻り値
wait_for_timeout
v1.9 より前に追加本番環境でタイムアウトを待機しないでください。時間を待機するテストは本質的に不安定です。代わりに Locator アクションと自動的に待機するウェブアサーションを使用してください。
指定された timeout (ミリ秒) の間、待機します。
page.waitForTimeout()
はデバッグ目的でのみ使用すべきであることに注意してください。本番環境でタイマーを使用するテストは不安定になります。代わりに、ネットワークイベントやセレクターの可視性などのシグナルを使用してください。
使用例
- Sync
- Async
# wait for 1 second
page.wait_for_timeout(1000)
# wait for 1 second
await page.wait_for_timeout(1000)
引数
戻り値