リリースノート
バージョン 1.51
ハイライト
-
browser_context.storage_state() の新しいオプション indexed_db により、IndexedDB のコンテンツを保存および復元できます。アプリケーションが IndexedDB API を使用して Firebase Authentication などの認証トークンを保存する場合に役立ちます。
以下は、認証ガイドに従った例です。
# Save storage state into the file. Make sure to include IndexedDB.
storage = await context.storage_state(path="state.json", indexed_db=True)
# Create a new context with the saved storage state.
context = await browser.new_context(storage_state="state.json") -
locator.filter() の新しいオプション visible により、表示されている要素のみを照合できます。
# Ignore invisible todo items.
todo_items = page.get_by_test_id("todo-item").filter(visible=True)
# Check there are exactly 3 visible ones.
await expect(todo_items).to_have_count(3) -
メソッド page.emulate_media() および browser.new_context() の新しいオプション
contrast
により、prefers-contrast
メディア機能をエミュレートできます。 -
新しいオプション fail_on_status_code を使用すると、APIRequestContext を介して行われたすべての fetch リクエストは、レスポンスコードが 2xx および 3xx 以外の場合に例外をスローします。
ブラウザのバージョン
- Chromium 134.0.6998.35
- Mozilla Firefox 135.0
- WebKit 18.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 133
- Microsoft Edge 133
バージョン 1.50
Async Pytest プラグイン
- Playwright の Pytest プラグイン は、Async Fixtures のサポートが追加されました。
その他
- Locator が指定された aria errormessage を持つ要素を指していることをアサートするメソッド expect(locator).to_have_accessible_error_message() が追加されました。
UI の更新
- Codegen に aria スナップショットを生成する要素を選択するための新しいボタンが追加されました。
- トレース内で、アクション API 呼び出しと並んで、追加の詳細 (押されたキーなど) が表示されるようになりました。
- トレースでの
canvas
コンテンツの表示はエラーが発生しやすいです。表示はデフォルトで無効になり、Display canvas content
UI 設定で有効にできます。 Call
およびNetwork
パネルに、追加の時間情報が表示されるようになりました。
破壊的変更
- expect(locator).to_be_editable() および locator.is_editable() は、ターゲット要素が
<input>
、<select>
、またはその他の編集可能な要素でない場合に例外をスローするようになりました。
ブラウザのバージョン
- Chromium 133.0.6943.16
- Mozilla Firefox 134.0
- WebKit 18.2
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 132
- Microsoft Edge 132
バージョン 1.49
Aria スナップショット
新しいアサーション expect(locator).to_match_aria_snapshot() は、YAML として表現された、期待されるアクセシビリティツリーと比較することにより、ページ構造を検証します。
page.goto("https://playwright.dokyumento.jp")
expect(page.locator('body')).to_match_aria_snapshot('''
- banner:
- heading /Playwright enables reliable/ [level=1]
- link "Get started"
- link "Star microsoft/playwright on GitHub"
- main:
- img "Browsers (Chromium, Firefox, WebKit)"
- heading "Any browser • Any platform • One API"
''')
このアサーションは、テストジェネレーターを使用するか、locator.aria_snapshot() を呼び出すことで生成できます。
詳細については、aria スナップショットガイドを参照してください。
トレースグループ
新しいメソッド tracing.group() を使用すると、トレースビューアーでアクションを視覚的にグループ化できます。
# All actions between group and group_end
# will be shown in the trace viewer as a group.
page.context.tracing.group("Open Playwright.dev > API")
page.goto("https://playwright.dokyumento.jp/")
page.get_by_role("link", name="API").click()
page.context.tracing.group_end()
破壊的変更: chrome
および msedge
チャンネルが新しいヘッドレスモードに切り替え
この変更は、playwright.config.ts
で次のチャンネルのいずれかを使用している場合に影響します。
chrome
、chrome-dev
、chrome-beta
、またはchrome-canary
msedge
、msedge-dev
、msedge-beta
、またはmsedge-canary
Playwright v1.49 に更新した後、テストスイートを実行します。それでも合格する場合は、問題ありません。そうでない場合は、スナップショットを更新し、PDF ビューアーと拡張機能に関するテストコードをいくつか適応させる必要がある場合があります。詳細については、issue #33566 を参照してください。
新しい Chromium ヘッドレスを試す
'chromium'
チャンネルを使用すると、新しいヘッドレスモードにオプトインできます。公式の Chrome ドキュメント に記載されているように
一方、新しいヘッドレスは実際の Chrome ブラウザであり、より信頼性が高く、機能も豊富です。これにより、高精度のエンドツーエンドの Web アプリケーションテストやブラウザ拡張機能のテストに適しています。
発生する可能性のある破損と Chromium ヘッドレスの詳細については、issue #33566 を参照してください。オプトイン後に問題が発生した場合は、問題を報告してください。
pytest test_login.py --browser-channel chromium
その他
- Ubuntu 20.04 および Debian 11 での WebKit の更新はなくなります。OS を新しいバージョンに更新することをお勧めします。
- スナップショット内の
<canvas>
要素にプレビューが表示されるようになりました。 - Python 3.8 はサポートされなくなりました。
ブラウザのバージョン
- Chromium 131.0.6778.33
- Mozilla Firefox 132.0
- WebKit 18.2
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 130
- Microsoft Edge 130
バージョン 1.48
WebSocket ルーティング
新しいメソッド page.route_web_socket() および browser_context.route_web_socket() を使用すると、ページで開始された WebSocket 接続をインターセプト、変更、およびモックできます。以下は、"request"
に "response"
で応答することにより、WebSocket 通信をモックする簡単な例です。
def message_handler(ws: WebSocketRoute, message: Union[str, bytes]):
if message == "request":
ws.send("response")
page.route_web_socket("/ws", lambda ws: ws.on_message(
lambda message: message_handler(ws, message)
))
詳細については、WebSocketRoute を参照してください。
UI の更新
- HTML レポートのアノテーションとテストロケーション用の新しい「コピー」ボタン。
- route.fulfill() のようなルートメソッドの呼び出しは、レポートとトレースビューアーに表示されなくなりました。代わりに、ネットワークタブでどのネットワークリクエストがルーティングされたかを確認できます。
- ネットワークタブのリクエスト用の新しい「cURL としてコピー」および「fetch としてコピー」ボタン。
その他
- 新しいメソッド page.request_gc() は、メモリリークの検出に役立つ場合があります。
- APIRequestContext によって行われたリクエストは、HAR に詳細なタイミングとセキュリティ情報を記録するようになりました。
ブラウザのバージョン
- Chromium 130.0.6723.19
- Mozilla Firefox 130.0
- WebKit 18.0
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 129
- Microsoft Edge 129
バージョン 1.47
ネットワークタブの改善
トレースビューアーのネットワークタブには、いくつかの優れた改善点があります。
- アセットタイプと URL によるフィルタリング
- クエリ文字列パラメーターの表示の改善
- フォントアセットのプレビュー
その他
mcr.microsoft.com/playwright/python:v1.47.0
は、Ubuntu 24.04 Noble に基づく Playwright イメージを提供するようになりました。22.04 jammy ベースのイメージを使用するには、代わりにmcr.microsoft.com/playwright/python:v1.47.0-jammy
を使用してください。- Playwright Docker イメージの
:latest
/:focal
/:jammy
タグは公開されなくなりました。安定性と再現性を高めるために、特定のバージョンにピン留めしてください。 - TLS クライアント証明書は、ファイルパスの代わりに client_certificates.cert および client_certificates.key をバイトとして渡すことで、メモリから渡すことができるようになりました。
- locator.select_option() の no_wait_after は非推奨になりました。
- GitHub Actions
macos-13
での Webkit の誤動作に関するレポートが寄せられています。GitHub Actions をmacos-14
にアップグレードすることをお勧めします。
ブラウザのバージョン
- Chromium 129.0.6668.29
- Mozilla Firefox 130.0
- WebKit 18.0
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 128
- Microsoft Edge 128
バージョン 1.46
TLS クライアント証明書
Playwright では、TLS クライアント認証で指定されているように、サーバーが検証できるように、クライアント側の証明書を提供できるようになりました。
クライアント証明書は、browser.new_context() および api_request.new_context() のパラメーターとして提供できます。次のスニペットは、https://example.com
のクライアント証明書を設定します。
context = browser.new_context(
client_certificates=[
{
"origin": "https://example.com",
"certPath": "client-certificates/cert.pem",
"keyPath": "client-certificates/key.pem",
}
],
)
トレースビューアーの更新
- テキスト添付ファイルの内容が、添付ファイルペインにインラインでレンダリングされるようになりました。
- route.continue_() のようなルーティングアクションを表示/非表示にする新しい設定。
- リクエストメソッドとステータスが、ネットワーク詳細タブに表示されます。
- ソースファイルの場所をクリップボードにコピーする新しいボタン。
- メタデータペインに
base_url
が表示されるようになりました。
その他
ECONNRESET
ネットワークエラーで再試行する api_request_context.fetch() の新しいmaxRetries
オプション。
ブラウザのバージョン
- Chromium 128.0.6613.18
- Mozilla Firefox 128.0
- WebKit 18.0
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 127
- Microsoft Edge 127
バージョン 1.45
時計
新しい Clock API を利用すると、テスト内の時間を操作および制御して、時間に関連する動作を検証できます。この API は、次のような多くの一般的なシナリオに対応しています。
- 事前定義された時間でのテスト。
- 一貫した時間とタイマーの維持。
- 非アクティブの監視。
- 手動での時間の進行。
# Initialize clock with some time before the test time and let the page load
# naturally. `Date.now` will progress as the timers fire.
page.clock.install(time=datetime.datetime(2024, 2, 2, 8, 0, 0))
page.goto("http://localhost:3333")
# Pretend that the user closed the laptop lid and opened it again at 10am.
# Pause the time once reached that point.
page.clock.pause_at(datetime.datetime(2024, 2, 2, 10, 0, 0))
# Assert the page state.
expect(page.get_by_test_id("current-time")).to_have_text("2/2/2024, 10:00:00 AM")
# Close the laptop lid again and open it at 10:30am.
page.clock.fast_forward("30:00")
expect(page.get_by_test_id("current-time")).to_have_text("2/2/2024, 10:30:00 AM")
詳細については、時計ガイドを参照してください。
その他
-
メソッド locator.set_input_files() は、
<input type=file webkitdirectory>
要素のディレクトリのアップロードをサポートするようになりました。page.get_by_label("Upload directory").set_input_files('mydir')
-
locator.click() や locator.press() などの複数のメソッドが、
ControlOrMeta
修飾キーをサポートするようになりました。このキーは macOS ではMeta
にマップされ、Windows および Linux ではControl
にマップされます。# Press the common keyboard shortcut Control+S or Meta+S to trigger a "Save" operation.
page.keyboard.press("ControlOrMeta+S") -
api_request.new_context() の新しいプロパティ
httpCredentials.send
。Authorization
ヘッダーを常に送信するか、401 Unauthorized
への応答でのみ送信するかを選択できます。 -
Playwright は、Ubuntu 24.04 での Chromium、Firefox、および WebKit をサポートするようになりました。
-
v1.45 は、macOS 12 Monterey 用の WebKit アップデートを受け取る最後のリリースです。最新の WebKit を使用し続けるには、macOS をアップデートしてください。
ブラウザのバージョン
- Chromium 127.0.6533.5
- Mozilla Firefox 127.0
- WebKit 17.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 126
- Microsoft Edge 126
バージョン 1.44
新しい API
アクセシビリティアサーション
-
expect(locator).to_have_accessible_name() は、要素に指定されたアクセシブルネームがあるかどうかを確認します。
locator = page.get_by_role("button")
expect(locator).to_have_accessible_name("Submit") -
expect(locator).to_have_accessible_description() は、要素に指定されたアクセシブルな説明があるかどうかを確認します。
locator = page.get_by_role("button")
expect(locator).to_have_accessible_description("Upload a photo") -
expect(locator).to_have_role() は、要素に指定された ARIA ロールがあるかどうかを確認します。
locator = page.get_by_test_id("save-button")
expect(locator).to_have_role("button")
ロケーターハンドラー
- page.add_locator_handler() で追加されたハンドラーを実行した後、Playwright は、ハンドラーをトリガーしたオーバーレイが非表示になるまで待機するようになりました。新しい
no_wait_after
オプションを使用すると、この動作をオプトアウトできます。 - page.add_locator_handler() の新しい
times
オプションを使用して、ハンドラーを実行する最大回数を指定できます。 - page.add_locator_handler() のハンドラーは、ロケーターを引数として受け入れるようになりました。
- 以前に追加されたロケーターハンドラーを削除するための新しい page.remove_locator_handler() メソッド。
locator = page.get_by_text("This interstitial covers the button")
page.add_locator_handler(locator, lambda overlay: overlay.locator("#close").click(), times=3, no_wait_after=True)
# Run your tests that can be interrupted by the overlay.
# ...
page.remove_locator_handler(locator)
その他のオプション
- expect(page).to_have_url() は、
ignore_case
オプションをサポートするようになりました。
ブラウザのバージョン
- Chromium 125.0.6422.14
- Mozilla Firefox 125.0.1
- WebKit 17.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 124
- Microsoft Edge 124
バージョン 1.43
新しい API
-
メソッド browser_context.clear_cookies() は、一部の Cookie のみを削除するフィルターをサポートするようになりました。
# Clear all cookies.
context.clear_cookies()
# New: clear cookies with a particular name.
context.clear_cookies(name="session-id")
# New: clear cookies for a particular domain.
context.clear_cookies(domain="my-origin.com") -
新しいメソッド locator.content_frame は、Locator オブジェクトを FrameLocator に変換します。これは、どこかで取得した Locator オブジェクトがあり、後でフレーム内のコンテンツを操作する場合に役立ちます。
locator = page.locator("iframe[name='embedded']")
# ...
frame_locator = locator.content_frame
frame_locator.getByRole("button").click() -
新しいメソッド frame_locator.owner は、FrameLocator オブジェクトを Locator に変換します。これは、どこかで取得した FrameLocator オブジェクトがあり、後で
iframe
要素を操作する場合に役立ちます。frame_locator = page.frame_locator("iframe[name='embedded']")
# ...
locator = frame_locator.owner
expect(locator).to_be_visible() -
Conda ビルドが macOS-arm64 および Linux-arm64 向けに公開されるようになりました。
ブラウザのバージョン
- Chromium 124.0.6367.8
- Mozilla Firefox 124.0
- WebKit 17.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 123
- Microsoft Edge 123
バージョン 1.42
新しいロケーターハンドラー
新しいメソッド page.add_locator_handler() は、指定された要素が表示されたときに呼び出されるコールバックを登録し、Playwright アクションをブロックする場合があります。コールバックはオーバーレイを削除できます。以下は、Cookie ダイアログが表示されたときに閉じる例です。
# Setup the handler.
page.add_locator_handler(
page.get_by_role("heading", name="Hej! You are in control of your cookies."),
lambda: page.get_by_role("button", name="Accept all").click(),
)
# Write the test as usual.
page.goto("https://www.ikea.com/")
page.get_by_role("link", name="Collection of blue and white").click()
expect(page.get_by_role("heading", name="Light and easy")).to_be_visible()
新しい API
- page.pdf() は、2 つの新しいオプション tagged および outline を受け入れるようになりました。
お知らせ
- ⚠️ Ubuntu 18 はサポートされなくなりました。
ブラウザのバージョン
- Chromium 123.0.6312.4
- Mozilla Firefox 123.0
- WebKit 17.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 122
- Microsoft Edge 123
バージョン 1.41
新しい API
- 新しいメソッド page.unroute_all() は、page.route() および page.route_from_har() によって登録されたすべてのルートを削除します。必要に応じて、進行中のルートが完了するまで待機したり、ルートからのエラーを無視したりできます。
- 新しいメソッド browser_context.unroute_all() は、browser_context.route() および browser_context.route_from_har() によって登録されたすべてのルートを削除します。必要に応じて、進行中のルートが完了するまで待機したり、ルートからのエラーを無視したりできます。
- page.screenshot() の新しいオプション style および locator.screenshot() の style は、スクリーンショットを撮る前にカスタム CSS をページに追加します。
ブラウザのバージョン
- Chromium 121.0.6167.57
- Mozilla Firefox 121.0
- WebKit 17.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 120
- Microsoft Edge 120
バージョン 1.40
テストジェネレーターの更新
アサーションを生成する新しいツール
- 「可視性をアサート」ツールは、expect(locator).to_be_visible() を生成します。
- 「値をアサート」ツールは、expect(locator).to_have_value() を生成します。
- 「テキストをアサート」ツールは、expect(locator).to_contain_text() を生成します。
以下は、アサーションを含む生成されたテストの例です。
from playwright.sync_api import Page, expect
def test_example(page: Page) -> None:
page.goto("https://playwright.dokyumento.jp/")
page.get_by_role("link", name="Get started").click()
expect(page.get_by_label("Breadcrumbs").get_by_role("list")).to_contain_text("Installation")
expect(page.get_by_label("Search")).to_be_visible()
page.get_by_label("Search").click()
page.get_by_placeholder("Search docs").fill("locator")
expect(page.get_by_placeholder("Search docs")).to_have_value("locator");
新しい API
- page.close() のオプション reason、browser_context.close() の reason、および browser.close() の reason。クローズ理由は、クローズによって中断されたすべての操作に対して報告されます。
- browser_type.launch_persistent_context() のオプション firefox_user_prefs。
その他の変更
- メソッド download.path() は、失敗およびキャンセルされたダウンロードに対してエラーをスローします。
ブラウザのバージョン
- Chromium 120.0.6099.28
- Mozilla Firefox 119.0
- WebKit 17.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 119
- Microsoft Edge 119
バージョン 1.39
Evergreen ブラウザのアップデート。
ブラウザのバージョン
- Chromium 119.0.6045.9
- Mozilla Firefox 118.0.1
- WebKit 17.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 118
- Microsoft Edge 118
バージョン 1.38
トレースビューアーの更新
- 時間範囲へのズーム。
- ネットワークパネルの再設計。
新しい API
非推奨
- 次のメソッドは非推奨になりました: page.type()、frame.type()、locator.type() および element_handle.type()。代わりに、はるかに高速な locator.fill() を使用してください。locator.press_sequentially() は、ページに特別なキーボード処理があり、キーを 1 つずつ押す必要がある場合にのみ使用してください。
ブラウザのバージョン
- Chromium 117.0.5938.62
- Mozilla Firefox 117.0
- WebKit 17.0
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 116
- Microsoft Edge 116
バージョン 1.37
ハイライト
- 新しい --full-page-screenshot コマンドラインフラグを使用すると、失敗時にページ全体のスクリーンショットを撮ることができます。
- browser_context_args マーカーを使用すると、単一のテストのコンテキストオプションをオーバーライドできるようになりました。
pytest-playwright
は、Anaconda で公開されるようになりました。
📚 Debian 12 Bookworm のサポート
Playwright は、Chromium、Firefox、および WebKit 用に、x86_64 および arm64 の両方で Debian 12 Bookworm をサポートするようになりました。問題が発生した場合はお知らせください!
Linux のサポートは次のようになります。
Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | |
---|---|---|---|---|
Chromium | ✅ | ✅ | ✅ | ✅ |
WebKit | ✅ | ✅ | ✅ | ✅ |
Firefox | ✅ | ✅ | ✅ | ✅ |
ブラウザのバージョン
- Chromium 116.0.5845.82
- Mozilla Firefox 115.0
- WebKit 17.0
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 115
- Microsoft Edge 115
バージョン 1.36
🏝️ 夏のメンテナンスリリース。
ブラウザのバージョン
- Chromium 115.0.5790.75
- Mozilla Firefox 115.0
- WebKit 17.0
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 114
- Microsoft Edge 114
バージョン 1.35
ハイライト
-
メソッド page.screenshot() および locator.screenshot() の新しいオプション
mask_color
。デフォルトのマスキングカラーを変更します。 -
ブラウザバイナリをアンインストールする新しい
uninstall
CLI コマンド$ playwright uninstall # remove browsers installed by this installation
$ playwright uninstall --all # remove all ever-install Playwright browsers
ブラウザのバージョン
- Chromium 115.0.5790.13
- Mozilla Firefox 113.0
- WebKit 16.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 114
- Microsoft Edge 114
バージョン 1.34
ハイライト
-
両方のロケーターに一致するロケーターを作成する新しい locator.and_()。
button = page.get_by_role("button").and_(page.get_by_title("Subscribe"))
-
指定されたブラウザコンテキストの任意のページからのダイアログとコンソールメッセージをサブスクライブする新しいイベント browser_context.on("console") および browser_context.on("dialog")。新しいメソッド console_message.page および dialog.page を使用して、イベントソースを特定します。
ブラウザのバージョン
- Chromium 114.0.5735.26
- Mozilla Firefox 113.0
- WebKit 16.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 113
- Microsoft Edge 113
バージョン 1.33
ロケーターの更新
-
2 つのロケーターのいずれかに一致するロケーターを作成するには、locator.or_() を使用します。「新しいメール」ボタンをクリックしたいが、セキュリティ設定ダイアログが代わりに表示されるシナリオを考えてみてください。この場合、「新しいメール」ボタンまたはダイアログのいずれかを待って、それに応じてアクションを実行できます。
new_email = page.get_by_role("button", name="New email")
dialog = page.get_by_text("Confirm security settings")
expect(new_email.or_(dialog)).is_visible()
if (dialog.is_visible()):
page.get_by_role("button", name="Dismiss").click()
new_email.click() -
locator.filter() の新しいオプション has_not および has_not_text を使用して、特定の条件に一致しない要素を見つけます。
row_locator = page.locator("tr")
row_locator.filter(has_not_text="text in column 1").filter(
has_not=page.get_by_role("button", name="column 2 button")
).screenshot() -
要素がページの DOM に存在することを確認するには、新しい Web ファーストアサーション expect(locator).to_be_attached() を使用します。要素がアタッチされていて表示されていることを保証する expect(locator).to_be_visible() と混同しないでください。
新しい API
- locator.or_()
- locator.filter() の新しいオプション has_not
- locator.filter() の新しいオプション has_not_text
- expect(locator).to_be_attached()
- route.fetch() の新しいオプション timeout
⚠️ 破壊的変更
mcr.microsoft.com/playwright/python:v1.33.0
は、Ubuntu Jammy に基づく Playwright イメージを提供するようになりました。focal ベースのイメージを使用するには、代わりにmcr.microsoft.com/playwright/python:v1.33.0-focal
を使用してください。
ブラウザのバージョン
- Chromium 113.0.5672.53
- Mozilla Firefox 112.0
- WebKit 16.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 112
- Microsoft Edge 112
バージョン 1.32
新しい API
- カスタム expect メッセージ。詳細については、テストアサーションのドキュメントを参照してください。
- page.route_from_har() および browser_context.route_from_har() の新しいオプション update_mode および update_content。
- 既存のロケーターオブジェクトのチェーン。詳細については、ロケータードキュメントを参照してください。
- メソッド tracing.start_chunk() の新しいオプション name。
ブラウザのバージョン
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 111
- Microsoft Edge 111
バージョン 1.31
新API
-
新しいアサーション expect(locator).to_be_in_viewport() は、Intersection Observer API に基づき、locator がビューポートと交差する要素を指していることを保証します。
from playwright.sync_api import expect
locator = page.get_by_role("button")
# Make sure at least some part of element intersects viewport.
expect(locator).to_be_in_viewport()
# Make sure element is fully outside of viewport.
expect(locator).not_to_be_in_viewport()
# Make sure that at least half of the element intersects viewport.
expect(locator).to_be_in_viewport(ratio=0.5)
その他
- トレースビューワーの DOM スナップショットを別のウィンドウで開けるようになりました。
- メソッド route.fetch() の新しいオプション max_redirects。
- Playwright が Debian 11 arm64 をサポートするようになりました。
- 公式の Docker イメージ に Node 16 の代わりに Node 18 が含まれるようになりました。
ブラウザーのバージョン
- Chromium 111.0.5563.19
- Mozilla Firefox 109.0
- WebKit 16.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 110
- Microsoft Edge 110
バージョン 1.30
ブラウザーのバージョン
- Chromium 110.0.5481.38
- Mozilla Firefox 108.0.2
- WebKit 16.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 109
- Microsoft Edge 109
バージョン 1.29
新API
-
新しいメソッド route.fetch() と route.fulfill() の新しいオプション
json
def handle_route(route: Route):
# Fetch original settings.
response = route.fetch()
# Force settings theme to a predefined value.
json = response.json()
json["theme"] = "Solorized"
# Fulfill with modified data.
route.fulfill(json=json)
page.route("**/api/settings", handle_route) -
すべてのマッチする要素を反復処理する新しいメソッド locator.all()
# Check all checkboxes!
checkboxes = page.get_by_role("checkbox")
for checkbox in checkboxes.all():
checkbox.check() -
locator.select_option() が value または label でマッチするようになりました
<select multiple>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
</select>element.select_option("Red")
その他
- メソッド route.continue_() のオプション
postData
が Serializable な値をサポートするようになりました。
ブラウザーのバージョン
- Chromium 109.0.5414.46
- Mozilla Firefox 107.0
- WebKit 16.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 108
- Microsoft Edge 108
バージョン 1.28
Playwright ツール
- CodeGen のライブロケーター。 「Explore」ツールを使用して、ページ上の任意の要素のロケーターを生成します。
新API
ブラウザーのバージョン
- Chromium 108.0.5359.29
- Mozilla Firefox 106.0
- WebKit 16.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 107
- Microsoft Edge 107
バージョン 1.27
ロケーター
これらの新しいAPIにより、ロケーターの記述が楽しくなります
- テキストコンテンツでロケーターを取得する page.get_by_text()。
- page.get_by_role() を使用して、ARIA role、ARIA attributes、および アクセシブルネーム でロケーターを取得します。
- 関連付けられたラベルのテキストでフォームコントロールを特定する page.get_by_label()。
- page.get_by_test_id() を使用して、
data-testid
属性(他の属性も設定可能)に基づいて要素を特定します。 - プレースホルダーで入力を特定する page.get_by_placeholder()。
- page.get_by_alt_text() を使用して、要素(通常は画像)をテキストの代替で特定します。
- page.get_by_title() を使用して、要素をタイトルで特定します。
page.get_by_label("User Name").fill("John")
page.get_by_label("Password").fill("secret-password")
page.get_by_role("button", name="Sign in").click()
expect(page.get_by_text("Welcome, John!")).to_be_visible()
これらのメソッドはすべて、Locator、FrameLocator、および Frame クラスでも利用可能です。
その他のハイライト
- v1.25 で発表されたように、Ubuntu 18 は 2022 年 12 月以降サポートされなくなります。それに加えて、次期 Playwright リリース以降、Ubuntu 18 での WebKit のアップデートは提供されません。
動作変更
-
空の値を持つ expect(locator).to_have_attribute() は、もはや存在しない属性とは一致しません。たとえば、次のスニペットは、
button
にdisabled
属性がない場合に成功します。expect(page.get_by_role("button")).to_have_attribute("disabled", "")
ブラウザーのバージョン
- Chromium 107.0.5304.18
- Mozilla Firefox 105.0.1
- WebKit 16.0
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 106
- Microsoft Edge 106
バージョン 1.26
アサーション
- expect(locator).to_be_enabled() の新しいオプション
enabled
。 - expect(locator).to_have_text() がオープンシャドウルートを貫通するようになりました。
- expect(locator).to_be_editable() の新しいオプション
editable
。 - expect(locator).to_be_visible() の新しいオプション
visible
。
その他のハイライト
- リダイレクト数を制限するための api_request_context.get() などの新しいオプション
max_redirects
。 - Python 3.11 がサポートされるようになりました。
動作変更
多くの Playwright API はすでに wait_until: "domcontentloaded"
オプションをサポートしています。例:
page.goto("https://playwright.dokyumento.jp", wait_until="domcontentloaded")
1.26 より前は、これによりすべての iframe が DOMContentLoaded
イベントを発行するのを待機していました。
ウェブ仕様に合わせるため、'domcontentloaded'
値は、ターゲットフレームが 'DOMContentLoaded'
イベントを発行するのを待つだけになりました。すべての iframe を待つには、wait_until="load"
を使用してください。
ブラウザーのバージョン
- Chromium 106.0.5249.30
- Mozilla Firefox 104.0
- WebKit 16.0
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 105
- Microsoft Edge 105
バージョン 1.25
お知らせ
- 🎁 Ubuntu 22.04 Jammy Jellyfish Docker イメージ
mcr.microsoft.com/playwright/python:v1.34.0-jammy
を出荷開始しました。 - 🪦 これは macOS 10.15 のサポートを含む最後のリリースです(1.21 で非推奨となりました)。
- ⚠️ Ubuntu 18 は非推奨となり、2022 年 12 月以降サポートされなくなります。
ブラウザーのバージョン
- Chromium 105.0.5195.19
- Mozilla Firefox 103.0
- WebKit 16.0
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 104
- Microsoft Edge 104
バージョン 1.24
🐂 Debian 11 Bullseye のサポート
Playwright が Chromium、Firefox、および WebKit 用に x86_64 上の Debian 11 Bullseye をサポートするようになりました。何か問題が発生した場合はお知らせください!
Linux のサポートは次のようになります。
| | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ |
新しい入門ドキュメント
エンドツーエンドテストに焦点を当てるため、「Getting Started」ドキュメントを書き直しました。playwright.dev でご確認ください。
バージョン 1.23
ネットワークリプレイ
ネットワークトラフィックを HAR ファイルに記録し、テストでこのトラフィックを再利用できるようになりました。
ネットワークを HAR ファイルに記録するには
npx playwright open --save-har=github.har.zip https://github.com/microsoft
または、プログラムで HAR を記録することもできます
- Sync
- Async
context = browser.new_context(record_har_path="github.har.zip")
# ... do stuff ...
context.close()
context = await browser.new_context(record_har_path="github.har.zip")
# ... do stuff ...
await context.close()
新しいメソッド page.route_from_har() または browser_context.route_from_har() を使用して、HAR ファイルから一致するレスポンスを提供します
- Sync
- Async
context.route_from_har("github.har.zip")
await context.route_from_har("github.har.zip")
詳細については、ドキュメントをご覧ください。
高度なルーティング
route.fallback() を使用して、ルーティングを他のハンドラーに委ねることができるようになりました。
次の例を考えてみましょう
- Sync
- Async
# Remove a header from all requests
def remove_header_handler(route: Route) -> None:
headers = route.request.all_headers()
if "if-none-match" in headers:
del headers["if-none-match"]
route.fallback(headers=headers)
page.route("**/*", remove_header_handler)
# Abort all images
def abort_images_handler(route: Route) -> None:
if route.request.resource_type == "image":
route.abort()
else:
route.fallback()
page.route("**/*", abort_images_handler)
# Remove a header from all requests
async def remove_header_handler(route: Route) -> None:
headers = await route.request.all_headers()
if "if-none-match" in headers:
del headers["if-none-match"]
await route.fallback(headers=headers)
await page.route("**/*", remove_header_handler)
# Abort all images
async def abort_images_handler(route: Route) -> None:
if route.request.resource_type == "image":
await route.abort()
else:
await route.fallback()
await page.route("**/*", abort_images_handler)
新しいメソッド page.route_from_har() および browser_context.route_from_har() もルーティングに参加し、委ねられる可能性があることに注意してください。
Web-First アサーションの更新
<select multiple>
要素のすべての選択された値をアサートする新しいメソッド expect(locator).to_have_values()。- メソッド expect(locator).to_contain_text() および expect(locator).to_have_text() が
ignore_case
オプションを受け入れるようになりました。
その他
-
邪魔になるサービスワーカーがある場合は、新しいコンテキストオプション
service_workers
で簡単に無効にできるようになりました- Sync
- Async
context = browser.new_context(service_workers="block")
page = context.new_page()context = await browser.new_context(service_workers="block")
page = await context.new_page() -
recordHar
コンテキストオプションに.zip
パスを使用すると、結果の HAR が自動的に zip 圧縮されます- Sync
- Async
context = browser.new_context(record_har_path="github.har.zip")
context = await browser.new_context(record_har_path="github.har.zip")
-
HAR を手動で編集する場合は、再生に不可欠な情報のみを記録する
"minimal"
HAR 記録モードの使用を検討してください- Sync
- Async
context = browser.new_context(record_har_mode="minimal", record_har_path="har.har")
context = await browser.new_context(record_har_mode="minimal", record_har_path="har.har")
-
Playwright が Ubuntu 22 amd64 および Ubuntu 22 arm64 で実行されるようになりました。
バージョン 1.22
ハイライト
-
ARIA role、ARIA attributes、および アクセシブルネーム で要素を選択できるロールセレクター。
# Click a button with accessible name "log in"
page.locator("role=button[name='log in']").click()詳細については、ドキュメントをご覧ください。
-
既存のロケーターをフィルタリングする新しい locator.filter() API
buttons = page.locator("role=button")
# ...
submit_button = buttons.filter(has_text="Submit")
submit_button.click() -
Codegen が Pytest テストの生成をサポートするようになりました
バージョン 1.21
ハイライト
-
ARIA role、ARIA attributes、および アクセシブルネーム で要素を選択できる新しいロールセレクター。
- Sync
- Async
# Click a button with accessible name "log in"
page.locator("role=button[name='log in']").click()# Click a button with accessible name "log in"
await page.locator("role=button[name='log in']").click()詳細については、ドキュメントをご覧ください。
-
より小さいサイズのスクリーンショットのための page.screenshot() の新しい
scale
オプション。 -
テキストカーソルを制御する page.screenshot() の新しい
caret
オプション。デフォルトは"hide"
です。
動作変更
mcr.microsoft.com/playwright
Docker イメージには Python が含まれなくなりました。プレインストール済みの Python を含む Playwright 対応の Docker イメージとしてmcr.microsoft.com/playwright/python
を使用してください。- Playwright が locator.set_input_files() API を介して、大きなファイル(数百 MB)のアップロードをサポートするようになりました。
ブラウザーのバージョン
- Chromium 101.0.4951.26
- Mozilla Firefox 98.0.2
- WebKit 15.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 100
- Microsoft Edge 100
バージョン 1.20
ハイライト
- メソッド page.screenshot()、locator.screenshot()、および element_handle.screenshot() の新しいオプション
- オプション
animations: "disabled"
は、すべての CSS アニメーションとトランジションを巻き戻して、一貫した状態にします - オプション
mask: Locator[]
は、指定された要素をマスクし、ピンクの#FF00FF
ボックスでオーバーレイします。
- オプション
- トレースビューワー が API テストリクエスト を表示するようになりました。
- locator.highlight() は、デバッグを容易にするために要素を視覚的に表示します。
お知らせ
- 専用の Python Docker イメージ
mcr.microsoft.com/playwright/python
を出荷開始しました。Python を使用する場合は、こちらに切り替えてください。これは、JavaScript のmcr.microsoft.com/playwright
Docker イメージ内に Python を含む最後のリリースです。 - v1.20 は、macOS 10.15 Catalina 用の WebKit アップデートを受け取る最後のリリースです。最新かつ最高の WebKit を使い続けるには、macOS をアップデートしてください!
ブラウザーのバージョン
- Chromium 101.0.4921.0
- Mozilla Firefox 97.0.1
- WebKit 15.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 99
- Microsoft Edge 99
バージョン 1.19
ハイライト
-
Locator が、内部に別のロケーターが含まれていることを確認する
has
オプションをサポートするようになりました- Sync
- Async
page.locator("article", has=page.locator(".highlight")).click()
await page.locator("article", has=page.locator(".highlight")).click()
詳細については、ロケーターのドキュメントをご覧ください
-
新しい locator.page
-
page.screenshot() および locator.screenshot() が点滅するカーソルを自動的に非表示にするようになりました
-
Playwright Codegen がロケーターとフレームロケーターを生成するようになりました
ブラウザーのバージョン
- Chromium 100.0.4863.0
- Mozilla Firefox 96.0.1
- WebKit 15.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 98
- Microsoft Edge 98
バージョン 1.18
API テスト
Playwright for Python 1.18 では、Python からサーバーに直接リクエストを送信できる新しい API テスト が導入されました!これで、次のことが可能になります。
- サーバー API をテストする
- テストでウェブアプリケーションを訪問する前に、サーバー側の状態を準備する
- ブラウザーでいくつかのアクションを実行した後、サーバー側の事後条件を検証する
Playwright の Page に代わってリクエストを実行するには、新しい page.request API を使用します
- Sync
- Async
# Do a GET request on behalf of page
res = page.request.get("http://example.com/foo.json")
# Do a GET request on behalf of page
res = await page.request.get("http://example.com/foo.json")
詳細については、ドキュメントをご覧ください。
Web-First アサーション
Playwright for Python 1.18 では、Web-First アサーション が導入されました。
次の例を考えてみましょう
- Sync
- Async
from playwright.sync_api import Page, expect
def test_status_becomes_submitted(page: Page) -> None:
# ..
page.locator("#submit-button").click()
expect(page.locator(".status")).to_have_text("Submitted")
from playwright.async_api import Page, expect
async def test_status_becomes_submitted(page: Page) -> None:
# ..
await page.locator("#submit-button").click()
await expect(page.locator(".status")).to_have_text("Submitted")
Playwright は、フェッチされたノードが "Submitted"
テキストを持つまで、セレクター .status
を持つノードを再テストします。条件が満たされるか、タイムアウトに達するまで、ノードを再フェッチして何度もチェックします。このタイムアウトはオプションとして渡すことができます。
詳細については、ドキュメントをご覧ください。
ロケーターの改善
-
各ロケーターは、それが含むテキストによってオプションでフィルタリングできるようになりました
- Sync
- Async
page.locator("li", has_text="my item").locator("button").click()
await page.locator("li", has_text="my item").locator("button").click()
詳細については、ロケーターのドキュメントをご覧ください
新APIと変更点
accept_downloads
オプションのデフォルトがTrue
になりました。- トレースにソースを埋め込む
sources
オプション。
ブラウザーのバージョン
- Chromium 99.0.4812.0
- Mozilla Firefox 95.0
- WebKit 15.4
このバージョンは、以下の安定版チャンネルに対してもテスト済みです。
- Google Chrome 97
- Microsoft Edge 97
バージョン 1.17
フレームロケーター
Playwright 1.17 では、フレームロケーター(ページ上の iframe へのロケーター)が導入されました。フレームロケーターは、iframe
を取得し、その iframe 内の要素を特定するのに十分なロジックをキャプチャします。フレームロケーターはデフォルトで厳密であり、iframe
が表示されるのを待機し、Web-First アサーションで使用できます。
フレームロケーターは、page.frame_locator() または locator.frame_locator() メソッドのいずれかで作成できます。
locator = page.frame_locator("my-frame").locator("text=Submit")
locator.click()
詳細については、ドキュメントをご覧ください。
トレースビューワーの更新
Playwright トレースビューワーが https://trace.playwright.dev でオンラインで利用できるようになりました!trace.zip
ファイルをドラッグアンドドロップするだけで、その内容を検査できます。
注: トレースファイルはどこにもアップロードされません。trace.playwright.dev は、トレースをローカルで処理する プログレッシブウェブアプリケーション です。
- Playwright Test トレースに、デフォルトでソースが含まれるようになりました(これらはトレーシングオプションでオフにすることができます)
- トレースビューワーにテスト名が表示されるようになりました
- ブラウザーの詳細を含む新しいトレースメタデータタブ
- スナップショットに URL バーが表示されるようになりました
HTML レポートの更新
- HTML レポートが動的フィルタリングをサポートするようになりました
- レポートは、電子メールまたは Slack の添付ファイルとして送信できる単一の静的 HTML ファイルになりました。
Ubuntu ARM64 のサポートなど
-
Playwright が Ubuntu 20.04 ARM64 をサポートするようになりました。Apple M1 および Raspberry Pi 上の Docker 内で Playwright テストを実行できるようになりました。
-
Playwright を使用して、Linux 上に Edge の安定バージョンをインストールできるようになりました
npx playwright install msedge
新API
バージョン 1.16
🎭 Playwright ライブラリ
locator.wait_for
ロケーターが特定の状態の単一の要素に解決されるのを待機します。デフォルトは state: 'visible'
です。
リストを操作する場合に特に便利です
order_sent = page.locator("#order-sent")
order_sent.wait_for()
詳細については、locator.wait_for() をご覧ください。
Arm64 の Docker サポート
Playwright Docker イメージが Arm64 向けに公開され、Apple Silicon で使用できるようになりました。
詳細については、Docker 統合をご覧ください。
🎭 Playwright トレースビューワー
npx playwright show-trace
でトレースビューワーを実行し、トレースファイルをトレースビューワー PWA にドロップします- アクションターゲットの視覚的な属性を改善
詳細については、トレースビューワーをご覧ください。
ブラウザーのバージョン
- Chromium 97.0.4666.0
- Mozilla Firefox 93.0
- WebKit 15.4
このバージョンの Playwright は、以下の安定チャネルに対してもテスト済みです
- Google Chrome 94
- Microsoft Edge 94
バージョン 1.15
🖱️ マウスホイール
mouse.wheel() を使用することで、垂直または水平方向にスクロールできるようになりました。
📜 新しい Headers API
以前は、レスポンスの複数のヘッダー値を取得することはできませんでした。これが可能になり、追加のヘルパー関数が利用可能になりました
- request.all_headers()
- request.headers_array()
- request.header_value()
- response.all_headers()
- response.headers_array()
- response.header_value()
- response.header_values()
🌈 強制色エミュレーション
browser.new_context() で渡すか、page.emulate_media() を呼び出すことで、forced-colors
CSS メディア機能をエミュレートできるようになりました。
新API
- page.route() は、このルートを照合する回数を指定するための新しい
times
オプションを受け入れます。 - page.set_checked() および locator.set_checked() がチェックボックスのチェック状態を設定するために導入されました。
- request.sizes() は、指定された HTTP リクエストのリソースサイズ情報を返します。
- tracing.start_chunk() - 新しいトレースチャンクを開始します。
- tracing.stop_chunk() - 新しいトレースチャンクを停止します。
ブラウザーのバージョン
- Chromium 96.0.4641.0
- Mozilla Firefox 92.0
- WebKit 15.0
バージョン 1.14
⚡️ 新しい「strict」モード
セレクターの曖昧さは、自動化テストにおける一般的な問題です。「strict」モード は、セレクターが単一の要素を指していることを保証し、そうでない場合はエラーをスローします。
オプトインするには、アクション呼び出しに strict=true
を渡します。
# This will throw if you have more than one button!
page.click("button", strict=True)
📍 新しい Locators API
ロケーターは、ページ上の要素へのビューを表します。特定の瞬間に要素を取得するのに十分なロジックをキャプチャします。
Locator と ElementHandle の違いは、後者が特定の要素を指すのに対し、Locator はその要素を取得する方法のロジックをキャプチャすることです。
また、ロケーターはデフォルトで「strict」です!
locator = page.locator("button")
locator.click()
詳細については、ドキュメントを参照してください。
🧩 試験的な React および Vue セレクターエンジン
React および Vue セレクターを使用すると、コンポーネント名やプロパティ値で要素を選択できます。構文は 属性セレクター と非常によく似ており、すべての属性セレクター演算子をサポートしています。
page.locator("_react=SubmitButton[enabled=true]").click()
page.locator("_vue=submit-button[enabled=true]").click()
詳細については、React セレクターのドキュメントと Vue セレクターのドキュメントを参照してください。
✨ 新しい nth
および visible
セレクターエンジン
nth
セレクターエンジンは:nth-match
擬似クラスと同等ですが、他のセレクターエンジンと組み合わせることができます。visible
セレクターエンジンは:visible
擬似クラスと同等ですが、他のセレクターエンジンと組み合わせることができます。
# select the first button among all buttons
button.click("button >> nth=0")
# or if you are using locators, you can use first, nth() and last
page.locator("button").first.click()
# click a visible button
button.click("button >> visible=true")
ブラウザーのバージョン
- Chromium 94.0.4595.0
- Mozilla Firefox 91.0
- WebKit 15.0
バージョン 1.13
Playwright
- 🖖 プログラムによるドラッグアンドドロップのサポート(page.drag_and_drop() API 経由)。
- 🔎 拡張 HAR(リクエストとレスポンスのボディサイズ付き)。browser.new_context() の
recordHar
オプションを使用して使用します。
ツール
- Playwright トレースビューワーに、パラメーター、戻り値、および
console.log()
呼び出しが表示されるようになりました。
新規および改訂されたガイド
ブラウザーのバージョン
- Chromium 93.0.4576.0
- Mozilla Firefox 90.0
- WebKit 14.2
新しい Playwright API
- browser.new_context() および browser.new_page() の新しい
baseURL
オプション - response.security_details() および response.server_addr()
- page.drag_and_drop() および frame.drag_and_drop()
- download.cancel()
- page.input_value()、frame.input_value()、および element_handle.input_value()
- page.fill()、frame.fill()、および element_handle.fill() の新しい
force
オプション - page.select_option()、frame.select_option()、および element_handle.select_option() の新しい
force
オプション
バージョン 1.12
🧟♂️ Playwright Trace Viewer のご紹介
Playwright Trace Viewer は、スクリプト実行後に記録された Playwright トレースを探索するのに役立つ新しい GUI ツールです。Playwright トレースを使用すると、以下を調べることができます。
- 各 Playwright アクションの前後のページ DOM
- 各 Playwright アクションの前後のページ レンダリング
- スクリプト実行中のブラウザ ネットワーク
トレースは、新しい browser_context.tracing API を使用して記録されます
browser = chromium.launch()
context = browser.new_context()
# Start tracing before creating / navigating a page.
context.tracing.start(screenshots=True, snapshots=True)
page.goto("https://playwright.dokyumento.jp")
# Stop tracing and export it into a zip archive.
context.tracing.stop(path = "trace.zip")
トレースは後で Playwright CLI で調べます
playwright show-trace trace.zip
これにより、次の GUI が開きます
👉 詳細はトレース ビューアーのドキュメントをご覧ください。
ブラウザのバージョン
- Chromium 93.0.4530.0
- Mozilla Firefox 89.0
- WebKit 14.2
このバージョンの Playwright は、以下の安定チャネルに対してもテスト済みです
- Google Chrome 91
- Microsoft Edge 91
新しい API
- page.emulate_media()、browser_type.launch_persistent_context()、browser.new_context()、および browser.new_page() の
reducedMotion
オプション - browser_context.on("request")
- browser_context.on("requestfailed")
- browser_context.on("requestfinished")
- browser_context.on("response")
- browser_type.launch() および browser_type.launch_persistent_context() の
tracesDir
オプション - 新しい browser_context.tracing API 名前空間
- 新しい download.page メソッド
バージョン 1.11
🎥 新しいビデオ: Playwright: 現代のウェブのための新しいテスト自動化フレームワーク (スライド)
- Playwright について説明しました
- 舞台裏のエンジニアリング作業を紹介しました
- 新機能 ✨ を使用したライブデモを実施しました
- 特別な感謝 を applitools に。イベントを主催し、私たちを招待してくれました!
ブラウザのバージョン
- Chromium 92.0.4498.0
- Mozilla Firefox 89.0b6
- WebKit 14.2
新しい API
- page.expect_request() などのメソッドにおける API 全体での 非同期述語 のサポート
- 新しい エミュレーション デバイス: Galaxy S8、Galaxy S9+、Galaxy Tab S4、Pixel 3、Pixel 4
- 新しいメソッド
- URL へのナビゲーションを待機する page.wait_for_url()
- 画面録画を管理する video.delete() および video.save_as()
- 新しいオプション
window.screen
ディメンションをエミュレートする browser.new_context() メソッドのscreen
オプション- page.check() および page.uncheck() メソッドの
position
オプション - page.check()、page.uncheck()、page.click()、page.dblclick()、page.hover()、および page.tap() のアクションをドライランする
trial
オプション
バージョン 1.10
- Playwright for Java v1.10 が 安定版になりました!
- 新しいチャンネル API を使用して、Google Chrome および Microsoft Edge の安定版チャンネルに対して Playwright を実行します。
- Chromium のスクリーンショットは、Mac および Windows で 高速 です。
バンドルされたブラウザのバージョン
- Chromium 90.0.4430.0
- Mozilla Firefox 87.0b10
- WebKit 14.2
このバージョンの Playwright は、以下の安定チャネルに対してもテスト済みです
- Google Chrome 89
- Microsoft Edge 89
新しい API
- browser_type.launch() が新しい
'channel'
オプションを受け入れるようになりました。詳細については、ドキュメント を参照してください。
バージョン 1.9
- Playwright Inspector は、テストを作成およびデバッグするための 新しい GUI ツール です。
- Playwright スクリプトの 行ごとのデバッグ、再生、一時停止、ステップスルーが可能です。
- ユーザーアクションを記録 して新しいスクリプトを作成します。
- 要素にカーソルを合わせることで、スクリプトの 要素セレクターを生成 します。
- インスペクターを起動するには、
PWDEBUG=1
環境変数を設定します
- ヘッドレスモードで page.pause() を使用して スクリプトの実行を一時停止 します。ページを一時停止すると、デバッグ用に Playwright Inspector が起動します。
- CSS セレクターの 新しい has-text 疑似クラス。
:has-text("example")
は、子要素または子孫要素のどこかに"example"
を含む要素に一致します。詳細な例については、こちら を参照してください。 dialog
イベントのリスナーが構成されていない限り、ページダイアログは実行中に自動的に閉じられるようになりました。詳細 についてはこちらをご覧ください。- Playwright for Python は、慣用的なスネークケース API と CI/CD でテストを実行するためのプリビルド Docker イメージ を備えた 安定版になりました。
ブラウザのバージョン
- Chromium 90.0.4421.0
- Mozilla Firefox 86.0b10
- WebKit 14.1
新しい API
バージョン 1.8
-
:left-of()
、:right-of()
、:above()
、および:below()
を使用した レイアウトに基づく要素の選択。 -
Playwright にコマンドライン インターフェース (以前の playwright-cli) が含まれるようになりました。
playwright --help
-
page.select_option() がオプションが存在するのを待つようになりました。
-
要素の状態をアサート するための新しいメソッド (page.is_editable() など)。
新しい API
- element_handle.is_checked().
- element_handle.is_disabled().
- element_handle.is_editable().
- element_handle.is_enabled().
- element_handle.is_hidden().
- element_handle.is_visible().
- page.is_checked().
- page.is_disabled().
- page.is_editable().
- page.is_enabled().
- page.is_hidden().
- page.is_visible().
- element_handle.wait_for_element_state() の新しいオプション
'editable'
。
ブラウザのバージョン
- Chromium 90.0.4392.0
- Mozilla Firefox 85.0b5
- WebKit 14.1
バージョン 1.7
- 新しい Java SDK: Playwright for Java は、JavaScript、Python、および .NET バインディング と同等になりました。
- ブラウザ ストレージ API: 認証を伴う自動化シナリオを簡素化するために、ブラウザ ストレージの状態 (Cookie、ローカル ストレージ) を保存およびロードするための新しい便利な API。
- 新しい CSS セレクター: より柔軟なセレクターに対するフィードバックをいただき、セレクターの実装を刷新しました。Playwright 1.7 では 新しい CSS 拡張機能 が導入され、今後もさらに追加される予定です。
- 新しいウェブサイト: playwright.dev のドキュメント ウェブサイトが更新され、Docusaurus で構築されるようになりました。
- Apple Silicon のサポート: WebKit および Chromium 用の Playwright ブラウザ バイナリが Apple Silicon 向けにビルドされるようになりました。
新しい API
- 後で再利用するための現在の状態を取得する browser_context.storage_state()。
- ブラウザ コンテキストの状態を設定する browser.new_context() および browser.new_page() の
storageState
オプション。
ブラウザのバージョン
- Chromium 89.0.4344.0
- Mozilla Firefox 84.0b9
- WebKit 14.1