リリースノート
バージョン 1.51
ハイライト
-
BrowserContext.StorageStateAsync() の新しいオプション IndexedDB により、IndexedDB の内容を保存および復元できます。アプリケーションが認証トークンを保存するために IndexedDB API を使用している場合に役立ちます (Firebase Authentication など)。
以下は、認証ガイド に従う例です。
// Save storage state into the file. Make sure to include IndexedDB.
await context.StorageStateAsync(new()
{
Path = "../../../playwright/.auth/state.json",
IndexedDB = true
});
// Create a new context with the saved storage state.
var context = await browser.NewContextAsync(new()
{
StorageStatePath = "../../../playwright/.auth/state.json"
}); -
Locator.Filter() の新しいオプション Visible を使用すると、表示されている要素のみを一致させることができます。
// Ignore invisible todo items.
var todoItems = Page.GetByTestId("todo-item").Filter(new() { Visible = true });
// Check there are exactly 3 visible ones.
await Expect(todoItems).ToHaveCountAsync(3); -
メソッド Page.EmulateMediaAsync() および Browser.NewContextAsync() の新しいオプション
Contrast
を使用すると、prefers-contrast
メディア機能をエミュレートできます。 -
新しいオプション FailOnStatusCode を使用すると、APIRequestContext を介して行われたすべてのフェッチリクエストが、2xx および 3xx 以外のレスポンスコードで例外をスローするようになります。
ブラウザのバージョン
- Chromium 134.0.6998.35
- Mozilla Firefox 135.0
- WebKit 18.4
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 133
- Microsoft Edge 133
バージョン 1.50
Xunit のサポート
- Microsoft.Playwright.Xunit を介した xUnit 2.8+ のサポート。詳細については、はじめに ガイドを参照してください。
その他
- Locator が指定された aria-errormessage を持つ要素を指していることをアサートするためのメソッド Expect(Locator).ToHaveAccessibleErrorMessageAsync() を追加しました。
UI の更新
- aria スナップショットを生成する要素を選択するための Codegen の新しいボタン。
- トレースのアクション API 呼び出しと並んで、追加の詳細 (押されたキーなど) が表示されるようになりました。
- トレースでの
canvas
コンテンツの表示はエラーが発生しやすいです。表示はデフォルトで無効になり、Display canvas content
UI 設定で有効にできます。 Call
パネルとNetwork
パネルに、追加の時間情報が表示されるようになりました。
破壊的変更
- ターゲット要素が
<input>
、<select>
、またはその他の編集可能な要素のいずれでもない場合、Expect(Locator).ToBeEditableAsync() および Locator.IsEditableAsync() が例外をスローするようになりました。
ブラウザのバージョン
- Chromium 133.0.6943.16
- Mozilla Firefox 134.0
- WebKit 18.2
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 132
- Microsoft Edge 132
バージョン 1.49
Aria スナップショット
新しいアサーション Expect(Locator).ToMatchAriaSnapshotAsync() は、YAML として表される、予期されるアクセシビリティツリーと比較することにより、ページ構造を検証します。
await page.GotoAsync("https://playwright.dokyumento.jp");
await Expect(page.Locator("body")).ToMatchAriaSnapshotAsync(@"
- 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.AriaSnapshotAsync() を呼び出すことによって生成できます。
詳細については、aria スナップショットガイド を参照してください。
トレースグループ
新しいメソッド Tracing.GroupAsync() を使用すると、トレースビューアーでアクションを視覚的にグループ化できます。
// All actions between GroupAsync and GroupEndAsync
// will be shown in the trace viewer as a group.
await Page.Context.Tracing.GroupAsync("Open Playwright.dev > API");
await Page.GotoAsync("https://playwright.dokyumento.jp/");
await Page.GetByRole(AriaRole.Link, new() { Name = "API" }).ClickAsync();
await Page.Context.Tracing.GroupEndAsync();
破壊的変更: 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 アプリテストやブラウザ拡張機能テストに適しています。
発生する可能性のある破損とその詳細については、issue #33566 を参照してください。オプトイン後に問題が発生した場合は、問題を報告してください。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Channel>chromium</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Channel=chromium
その他
- Ubuntu 20.04 および Debian 11 での WebKit のアップデートはもうありません。OS を新しいバージョンにアップデートすることをお勧めします。
- スナップショット内の
<canvas>
要素にプレビューが表示されるようになりました。
ブラウザのバージョン
- Chromium 131.0.6778.33
- Mozilla Firefox 132.0
- WebKit 18.2
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 130
- Microsoft Edge 130
バージョン 1.48
WebSocket ルーティング
新しいメソッド Page.RouteWebSocketAsync() および BrowserContext.RouteWebSocketAsync() を使用すると、ページで開始された WebSocket 接続をインターセプト、変更、およびモックできます。以下は、"request"
に "response"
で応答することにより WebSocket 通信をモックする簡単な例です。
await page.RouteWebSocketAsync("/ws", ws => {
ws.OnMessage(frame => {
if (frame.Text == "request")
ws.Send("response");
});
});
詳細については、WebSocketRoute を参照してください。
UI の更新
- HTML レポートのアノテーションとテストロケーション用の新しい「コピー」ボタン。
- Route.FulfillAsync() のようなルートメソッド呼び出しは、レポートとトレースビューアーに表示されなくなりました。代わりに、ネットワークタブでどのネットワークリクエストがルーティングされたかを確認できます。
- ネットワークタブのリクエスト用の新しい「cURL としてコピー」および「fetch としてコピー」ボタン。
その他
- 新しいメソッド Page.RequestGCAsync() は、メモリリークの検出に役立つ場合があります。
- 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/dotnet:v1.47.0
は、Ubuntu 24.04 Noble に基づく Playwright イメージを提供するようになりました。22.04 jammy ベースのイメージを使用するには、代わりにmcr.microsoft.com/playwright/dotnet:v1.47.0-jammy
を使用してください。- Playwright Docker イメージの
:latest
/:focal
/:jammy
タグは公開されなくなりました。安定性と再現性を向上させるために、特定のバージョンにピン留めしてください。 - TLS クライアント証明書は、ファイルパスの代わりに ClientCertificates.Cert および ClientCertificates.Key をバイト配列として渡すことで、メモリから渡すことができるようになりました。
- Locator.SelectOptionAsync() の NoWaitAfter は非推奨になりました。
- 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.NewContextAsync() および ApiRequest.NewContextAsync() のパラメーターとして提供できます。次のスニペットは、https://example.com
のクライアント証明書を設定します。
var context = await Browser.NewContextAsync(new() {
ClientCertificates = [
new() {
Origin = "https://example.com",
CertPath = "client-certificates/cert.pem",
KeyPath = "client-certificates/key.pem",
}
]
});
トレースビューアーの更新
- テキスト添付ファイルの内容が、添付ファイルペインにインラインでレンダリングされるようになりました。
- Route.ContinueAsync() のようなルーティングアクションを表示/非表示にするための新しい設定。
- ネットワーク詳細タブに、リクエストメソッドとステータスが表示されるようになりました。
- ソースファイルの場所をクリップボードにコピーする新しいボタン。
- メタデータペインに
BaseURL
が表示されるようになりました。
その他
- ApiRequestContext.FetchAsync() の新しい
maxRetries
オプション。ECONNRESET
ネットワークエラーで再試行します。
ブラウザのバージョン
- 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.
await Page.Clock.InstallAsync(new()
{
TimeDate = new DateTime(2024, 2, 2, 8, 0, 0)
});
await Page.GotoAsync("http://localhost:3333");
// Pretend that the user closed the laptop lid and opened it again at 10am.
// Pause the time once reached that point.
await Page.Clock.PauseAtAsync(new DateTime(2024, 2, 2, 10, 0, 0));
// Assert the page state.
await Expect(Page.GetByTestId("current-time")).ToHaveTextAsync("2/2/2024, 10:00:00 AM");
// Close the laptop lid again and open it at 10:30am.
await Page.Clock.FastForwardAsync("30:00");
await Expect(Page.GetByTestId("current-time")).ToHaveTextAsync("2/2/2024, 10:30:00 AM");
詳細については、クロックガイド を参照してください。
その他
-
メソッド Locator.SetInputFilesAsync() が
<input type=file webkitdirectory>
要素のディレクトリのアップロードをサポートするようになりました。await page.GetByLabel("Upload directory").SetInputFilesAsync("mydir");
-
Locator.ClickAsync() や Locator.PressAsync() などの複数のメソッドが、
ControlOrMeta
修飾キーをサポートするようになりました。このキーは macOS ではMeta
にマッピングされ、Windows および Linux ではControl
にマッピングされます。// Press the common keyboard shortcut Control+S or Meta+S to trigger a "Save" operation.
await page.Keyboard.PressAsync("ControlOrMeta+S"); -
ApiRequest.NewContextAsync() の新しいプロパティ
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).ToHaveAccessibleNameAsync() は、要素が指定されたアクセシブル名を持っているかどうかを確認します。
var locator = Page.GetByRole(AriaRole.Button);
await Expect(locator).ToHaveAccessibleNameAsync("Submit"); -
Expect(Locator).ToHaveAccessibleDescriptionAsync() は、要素が指定されたアクセシブルな説明を持っているかどうかを確認します。
var locator = Page.GetByRole(AriaRole.Button);
await Expect(locator).ToHaveAccessibleDescriptionAsync("Upload a photo"); -
Expect(Locator).ToHaveRoleAsync() は、要素が指定された ARIA ロールを持っているかどうかを確認します。
var locator = Page.GetByTestId("save-button");
await Expect(locator).ToHaveRoleAsync(AriaRole.Button);
ロケーターハンドラー
- Page.AddLocatorHandlerAsync() で追加されたハンドラーを実行した後、Playwright は、ハンドラーをトリガーしたオーバーレイが非表示になるまで待機するようになりました。新しい
NoWaitAfter
オプションを使用すると、この動作をオプトアウトできます。 - Page.AddLocatorHandlerAsync() の新しい
Times
オプションを使用して、ハンドラーを実行する最大回数を指定できます。 - Page.AddLocatorHandlerAsync() のハンドラーが、引数としてロケーターを受け入れるようになりました。
- 以前に追加されたロケーターハンドラーを削除するための新しい Page.RemoveLocatorHandlerAsync() メソッド。
var locator = Page.GetByText("This interstitial covers the button");
await Page.AddLocatorHandlerAsync(locator, async (overlay) =>
{
await overlay.Locator("#close").ClickAsync();
}, new() { Times = 3, NoWaitAfter = true });
// Run your tests that can be interrupted by the overlay.
// ...
await Page.RemoveLocatorHandlerAsync(locator);
その他のオプション
-
APIRequestContext.FetchAsync()
のMultipart
オプションで同じ名前の繰り返しフィールドを指定できる新しいメソッド FormData.Append()var formData = Context.APIRequest.CreateFormData();
formData.Append("file", new FilePayload()
{
Name = "f1.js",
MimeType = "text/javascript",
Buffer = System.Text.Encoding.UTF8.GetBytes("var x = 2024;")
});
formData.Append("file", new FilePayload()
{
Name = "f2.txt",
MimeType = "text/plain",
Buffer = System.Text.Encoding.UTF8.GetBytes("hello")
});
var response = await Context.APIRequest.PostAsync("https://example.com/uploadFiles", new() { Multipart = formData }); -
Expect(Page).ToHaveURLAsync() が
IgnoreCase
オプション をサポートするようになりました。
ブラウザのバージョン
- Chromium 125.0.6422.14
- Mozilla Firefox 125.0.1
- WebKit 17.4
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 124
- Microsoft Edge 124
バージョン 1.43
新しい API
-
メソッド BrowserContext.ClearCookiesAsync() が、一部の Cookie のみを削除するフィルターをサポートするようになりました。
// Clear all cookies.
await Context.ClearCookiesAsync();
// New: clear cookies with a particular name.
await Context.ClearCookiesAsync(new() { Name = "session-id" });
// New: clear cookies for a particular domain.
await Context.ClearCookiesAsync(new() { Domain = "my-origin.com" }); -
新しいプロパティ Locator.ContentFrame は、Locator オブジェクトを FrameLocator に変換します。これは、どこかで取得した Locator オブジェクトがあり、後でフレーム内のコンテンツを操作したい場合に役立ちます。
var locator = Page.Locator("iframe[name='embedded']");
// ...
var frameLocator = locator.ContentFrame;
await frameLocator.GetByRole(AriaRole.Button).ClickAsync(); -
新しいプロパティ FrameLocator.Owner は、FrameLocator オブジェクトを Locator に変換します。これは、どこかで取得した FrameLocator オブジェクトがあり、後で
iframe
要素を操作したい場合に役立ちます。var frameLocator = page.FrameLocator("iframe[name='embedded']");
// ...
var locator = frameLocator.Owner;
await Expect(locator).ToBeVisibleAsync();
ブラウザのバージョン
- Chromium 124.0.6367.8
- Mozilla Firefox 124.0
- WebKit 17.4
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 123
- Microsoft Edge 123
バージョン 1.42
新しいロケーターハンドラー
新しいメソッド Page.AddLocatorHandlerAsync() は、指定された要素が表示されたときに呼び出され、Playwright アクションをブロックする可能性のあるコールバックを登録します。コールバックはオーバーレイを取り除くことができます。以下は、Cookie ダイアログが表示されたときに閉じる例です。
// Setup the handler.
await Page.AddLocatorHandlerAsync(
Page.GetByRole(AriaRole.Heading, new() { Name = "Hej! You are in control of your cookies." }),
async () =>
{
await Page.GetByRole(AriaRole.Button, new() { Name = "Accept all" }).ClickAsync();
});
// Write the test as usual.
await Page.GotoAsync("https://www.ikea.com/");
await Page.GetByRole(AriaRole.Link, new() { Name = "Collection of blue and white" }).ClickAsync();
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Light and easy" })).ToBeVisibleAsync();
新しい API
- Page.PdfAsync() は、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.UnrouteAllAsync() は、Page.RouteAsync() および Page.RouteFromHARAsync() によって登録されたすべてのルートを削除します。オプションで、進行中のルートが完了するのを待つか、それらからのエラーを無視できます。
- 新しいメソッド BrowserContext.UnrouteAllAsync() は、BrowserContext.RouteAsync() および BrowserContext.RouteFromHARAsync() によって登録されたすべてのルートを削除します。オプションで、進行中のルートが完了するのを待つか、それらからのエラーを無視できます。
- Page.ScreenshotAsync() の新しいオプション Style と Locator.ScreenshotAsync() の Style を使用して、スクリーンショットを撮る前にカスタム CSS をページに追加します。
ブラウザのバージョン
- Chromium 121.0.6167.57
- Mozilla Firefox 121.0
- WebKit 17.4
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 120
- Microsoft Edge 120
バージョン 1.40
テストジェネレーターの更新
アサーションを生成する新しいツール
- 「可視性をアサート」ツールは、Expect(Locator).ToBeVisibleAsync() を生成します。
- 「値をアサート」ツールは、Expect(Locator).ToHaveValueAsync() を生成します。
- 「テキストをアサート」ツールは、Expect(Locator).ToContainTextAsync() を生成します。
以下は、アサーションを含む生成されたテストの例です。
await Page.GotoAsync("https://playwright.dokyumento.jp/");
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();
await Expect(Page.GetByLabel("Breadcrumbs").GetByRole(AriaRole.List)).ToContainTextAsync("Installation");
await Expect(Page.GetByLabel("Search")).ToBeVisibleAsync();
await Page.GetByLabel("Search").ClickAsync();
await Page.GetByPlaceholder("Search docs").FillAsync("locator");
await Expect(Page.GetByPlaceholder("Search docs")).ToHaveValueAsync("locator");
新しい API
- Page.CloseAsync() のオプション Reason、BrowserContext.CloseAsync() の Reason、および Browser.CloseAsync() の Reason。クローズ理由は、クローズによって中断されたすべての操作について報告されます。
- BrowserType.LaunchPersistentContextAsync() のオプション FirefoxUserPrefs。
その他の変更
- メソッド Download.PathAsync() および Download.CreateReadStreamAsync() は、失敗およびキャンセルされたダウンロードに対してエラーをスローします。
- Playwright docker イメージ に .NET 8 (新しい LTS) が付属するようになりました。
ブラウザのバージョン
- 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.TypeAsync()、Frame.TypeAsync()、Locator.TypeAsync()、および ElementHandle.TypeAsync()。代わりに、はるかに高速な Locator.FillAsync() を使用してください。ページに特別なキーボード処理があり、キーを 1 つずつ押す必要がある場合にのみ、Locator.PressSequentiallyAsync() を使用してください。
ブラウザのバージョン
- Chromium 117.0.5938.62
- Mozilla Firefox 117.0
- WebKit 17.0
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 116
- Microsoft Edge 116
バージョン 1.37
📚 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.ScreenshotAsync() および Locator.ScreenshotAsync() のデフォルトのマスキング色を変更する新しいオプション
MaskColor
。 -
ブラウザバイナリをアンインストールする新しい
uninstall
CLI コマンド$ pwsh bin/Debug/netX/playwright.ps1 uninstall # remove browsers installed by this installation
$ pwsh bin/Debug/netX/playwright.ps1 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()。
var button = page.GetByRole(AriaRole.BUTTON).And(page.GetByTitle("Subscribe"));
-
指定されたブラウザコンテキストの任意のページからの任意のダイアログとコンソールメッセージをサブスクライブする新しいイベント BrowserContext.Console および BrowserContext.Dialog。イベントソースを特定するには、新しいメソッド ConsoleMessage.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() を使用します。「新しいメール」ボタンをクリックしたいが、代わりにセキュリティ設定ダイアログが表示される場合を考えてみてください。この場合、「新しいメール」ボタンまたはダイアログのいずれかを待機し、それに応じて対処できます。
var newEmail = Page.GetByRole(AriaRole.Button, new() { Name = "New email" });
var dialog = Page.GetByText("Confirm security settings");
await Expect(newEmail.Or(dialog)).ToBeVisibleAsync();
if (await dialog.IsVisibleAsync())
await Page.GetByRole(AriaRole.Button, new() { Name = "Dismiss" }).ClickAsync();
await newEmail.ClickAsync(); -
Locator.Filter() で新しいオプション HasNot および HasNotText|HasNotTextRegex を使用して、特定の条件に一致しない要素を見つけます。
var rowLocator = Page.Locator("tr");
await rowLocator
.Filter(new() { HasNotText = "text in column 1" })
.Filter(new() { HasNot = Page.GetByRole(AriaRole.Button, new() { Name = "column 2 button" })})
.ScreenshotAsync(); -
要素がページの DOM に存在することを確認するには、新しい Web ファーストアサーション Expect(Locator).ToBeAttachedAsync() を使用します。要素がアタッチされていて表示されていることを確認する Expect(Locator).ToBeVisibleAsync() と混同しないでください。
新しい API
- Locator.Or()
- Locator.Filter() の新しいオプション HasNot
- Locator.Filter() の新しいオプション HasNotText|HasNotTextRegex
- Expect(Locator).ToBeAttachedAsync()
- Route.FetchAsync() の新しいオプション Timeout
⚠️ 破壊的変更
mcr.microsoft.com/playwright/dotnet:v1.33.0
は、Ubuntu Jammy に基づく Playwright イメージを提供するようになりました。focal ベースのイメージを使用するには、代わりにmcr.microsoft.com/playwright/dotnet: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
- Page.RouteFromHARAsync() および BrowserContext.RouteFromHARAsync() の新しいオプション UpdateMode および UpdateContent。
- 既存のロケーターオブジェクトのチェーニング。詳細については、ロケータードキュメント を参照してください。
- メソッド Tracing.StartChunkAsync() の新しいオプション Name。
ブラウザのバージョン
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 111
- Microsoft Edge 111
バージョン 1.31
新しい API
-
新しいアサーション Expect(Locator).ToBeInViewportAsync() は、Intersection Observer API に従って、ロケーターがビューポートと交差する要素を指していることを保証します。
var locator = Page.GetByRole(AriaRole.Button);
// Make sure at least some part of element intersects viewport.
await Expect(locator).ToBeInViewportAsync();
// Make sure element is fully outside of viewport.
await Expect(locator).Not.ToBeInViewportAsync();
// Make sure that at least half of the element intersects viewport.
await Expect(locator).ToBeInViewportAsync(new() { Ratio = 0.5 }); -
新しいメソッド BrowserContext.NewCDPSessionAsync() および Browser.NewBrowserCDPSessionAsync() は、ページとブラウザの Chrome DevTools Protocol セッションをそれぞれ作成します。
その他
- トレースビューアーの DOM スナップショットを別のウィンドウで開くことができるようになりました。
- メソッド Route.FetchAsync() の新しいオプション MaxRedirects。
- Playwright は Debian 11 arm64 をサポートするようになりました。
- 公式のdocker imagesに、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.FetchAsync() と、Route.FulfillAsync() の新しいオプション
Json
await Page.RouteAsync("**/api/settings", async route => {
// Fetch original settings.
var response = await route.FetchAsync();
// Force settings theme to a predefined value.
var json = await response.JsonAsync<MyDataType>();
json.Theme = "Solarized";
// Fulfill with modified data.
await route.FulfillAsync(new() {
Json = json
});
}); -
すべてのマッチする要素を反復処理する新しいメソッド Locator.AllAsync()
// Check all checkboxes!
var checkboxes = Page.GetByRole(AriaRole.Checkbox);
foreach (var checkbox in await checkboxes.AllAsync())
await checkbox.CheckAsync(); -
Locator.SelectOptionAsync() が値またはラベルでマッチするようになりました
<select multiple>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
</select>await element.SelectOptionAsync("Red");
ブラウザーのバージョン
- 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.GetByText()。
- Page.GetByRole() で、ARIAロール、ARIA属性、および アクセシブルネーム で位置を特定します。
- 関連付けられたラベルのテキストでフォームコントロールを特定する Page.GetByLabel()。
data-testid
属性(他の属性も設定可能)に基づいて要素を特定する Page.GetByTestId()。- プレースホルダーで入力を特定する Page.GetByPlaceholder()。
- テキストによる代替要素(通常は画像)を特定する Page.GetByAltText()。
- タイトルで要素を特定する Page.GetByTitle()。
await page.GetByLabel("User Name").FillAsync("John");
await page.GetByLabel("Password").FillAsync("secret-password");
await page.GetByRole(AriaRole.Button, new() { NameString = "Sign in" }).ClickAsync();
await Expect(Page.GetByText("Welcome, John!")).ToBeVisibleAsync();
同じメソッドは、Locator、FrameLocator、および Frame クラスでも利用できます。
その他のハイライト
- v1.25 で発表されたように、Ubuntu 18 は 2022 年 12 月以降サポートされなくなります。それに加えて、次の Playwright リリース以降、Ubuntu 18 での WebKit の更新はなくなります。
動作変更
-
空の値を持つ Expect(Locator).ToHaveAttributeAsync() は、属性の欠落と一致しなくなりました。たとえば、次のスニペットは、
button
にdisabled
属性がない場合に成功します。await Expect(Page.GetByRole(AriaRole.Button)).ToHaveAttributeAsync("disabled", "");
ブラウザーのバージョン
- Chromium 107.0.5304.18
- Mozilla Firefox 105.0.1
- WebKit 16.0
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 106
- Microsoft Edge 106
バージョン 1.26
アサーション
- Expect(Locator).ToBeEnabledAsync() の新しいオプション
Enabled
。 - Expect(Locator).ToHaveTextAsync() がオープンシャドウルートを貫通するようになりました。
- Expect(Locator).ToBeEditableAsync() の新しいオプション
Editable
。 - Expect(Locator).ToBeVisibleAsync() の新しいオプション
Visible
。 - Expect(Response).ToBeOKAsync() が利用可能になりました。
その他のハイライト
- リダイレクト数を制限するための ApiRequestContext.GetAsync() などの新しいオプション
MaxRedirects
。 - Codegen が MSTest および NUnit フレームワークをサポートするようになりました。
- ASP .NET がサポートされるようになりました。
動作変更
多くの Playwright API はすでに WaitUntil: WaitUntilState.DOMContentLoaded
オプションをサポートしています。例:
await Page.GotoAsync("https://playwright.dokyumento.jp", new() { WaitUntil = WaitUntilState.DOMContentLoaded });
1.26 より前は、これはすべての iframe が DOMContentLoaded
イベントを発火するのを待っていました。
Web 仕様に合わせるために、WaitUntilState.DOMContentLoaded
値は、ターゲットフレームが 'DOMContentLoaded'
イベントを発火するのを待つだけになりました。すべての iframe を待つには、WaitUntil: WaitUntilState.Load
を使用してください。
ブラウザーのバージョン
- Chromium 106.0.5249.30
- Mozilla Firefox 104.0
- WebKit 16.0
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 105
- Microsoft Edge 105
バージョン 1.25
新しい .runsettings ファイルのサポート
Microsoft.Playwright.NUnit
および Microsoft.Playwright.MSTest
は、エンドツーエンドテストの実行時に、.runsettings
ファイルと CLI を介して渡された設定を考慮するようになりました。サポートされている設定の完全なリストについては、ドキュメントを参照してください。
以下が動作するようになりました
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Playwright -->
<Playwright>
<BrowserName>chromium</BrowserName>
<ExpectTimeout>5000</ExpectTimeout>
<LaunchOptions>
<Headless>true</Headless>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
<!-- General run configuration -->
<RunConfiguration>
<EnvironmentVariables>
<!-- For debugging selectors, it's recommend to set the following environment variable -->
<DEBUG>pw:api</DEBUG>
</EnvironmentVariables>
</RunConfiguration>
</RunSettings>
お知らせ
- 🪦 これは、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 | ✅ | ✅ | ✅ |
新しい導入ドキュメント
入門ドキュメントをエンドツーエンドテストに焦点を当てて書き直しました。playwright.dev で確認してください。
バージョン 1.23
APIテスト
Playwright for .NET 1.23 では、.NET からサーバーに直接リクエストを送信できる新しい APIテスト が導入されました!これで、次のことが可能になります。
- サーバーAPIをテストする
- テストでWebアプリケーションにアクセスする前に、サーバー側の状態を準備する
- ブラウザーでいくつかのアクションを実行した後、サーバー側の事後条件を検証する
Playwright の Page の代わりにリクエストを実行するには、新しい Page.APIRequest API を使用します
// Do a GET request on behalf of page
var response = await Page.APIRequest.GetAsync("http://example.com/foo.json");
Console.WriteLine(response.Status);
Console.WriteLine(response.StatusText);
Console.WriteLine(response.Ok);
Console.WriteLine(response.Headers["Content-Type"]);
Console.WriteLine(await response.TextAsync());
Console.WriteLine((await response.JsonAsync())?.GetProperty("foo").GetString());
詳細については、API テストガイドをお読みください。
ネットワークリプレイ
HAR ファイルにネットワークトラフィックを記録し、テストでこのトラフィックを再利用できるようになりました。
HAR ファイルにネットワークを記録するには
pwsh bin/Debug/netX/playwright.ps1 open --save-har=example.har --save-har-glob="**/api/**" https://example.com
または、プログラムで HAR を記録できます
var context = await browser.NewContextAsync(new()
{
RecordHarPath = harPath,
RecordHarUrlFilterString = "**/api/**",
});
// ... Perform actions ...
// Close context to ensure HAR is saved to disk.
context.CloseAsync();
新しいメソッド Page.RouteFromHARAsync() または BrowserContext.RouteFromHARAsync() を使用して、HAR ファイルから一致する応答を処理します
await context.RouteFromHARAsync("example.har");
詳細については、ドキュメントをお読みください。
高度なルーティング
Route.FallbackAsync() を使用して、ルーティングを他のハンドラーに延期できるようになりました。
次の例を考えてみてください
// Remove a header from all requests.
await page.RouteAsync("**/*", async route =>
{
var headers = route.Request.Headers;
headers.Remove("X-Secret");
await route.ContinueAsync(new() { Headers = headers });
});
// Abort all images.
await page.RouteAsync("**/*", async route =>
{
if (route.Request.ResourceType == "image")
{
await route.AbortAsync();
}
else
{
await route.FallbackAsync();
}
});
新しいメソッド Page.RouteFromHARAsync() および BrowserContext.RouteFromHARAsync() もルーティングに参加し、延期できることに注意してください。
Web-Firstアサーションの更新
<select multiple>
要素のすべての選択された値をアサートする新しいメソッド Expect(Locator).ToHaveValuesAsync()。- メソッド Expect(Locator).ToContainTextAsync() および Expect(Locator).ToHaveTextAsync() が
ignoreCase
オプションを受け入れるようになりました。
その他
-
邪魔になるサービスワーカーがある場合は、新しいコンテキストオプション
serviceWorkers
を使用して簡単に無効にできますvar context = await Browser.NewContextAsync(new()
{
ServiceWorkers = ServiceWorkerPolicy.Block
}); -
recordHar
コンテキストオプションに.zip
パスを使用すると、結果の HAR が自動的に圧縮されますvar context = await Browser.NewContextAsync(new() { RecordHarPath = "example.har.zip" });
-
HAR を手動で編集する場合は、リプレイに不可欠な情報のみを記録する
"minimal"
HAR 記録モードの使用を検討してくださいvar context = await Browser.NewContextAsync(new() { RecordHarPath = "example.har", RecordHarMode = HarMode.Minimal });
-
Playwright は Ubuntu 22 amd64 および Ubuntu 22 arm64 で実行されるようになりました。
-
Playwright for .NET は linux-arm64 をサポートし、そのための arm64 Ubuntu 20.04 Docker イメージ を提供するようになりました。
バージョン 1.22
ハイライト
-
ARIAロール、ARIA属性、および アクセシブルネーム によって要素を選択できるロールセレクター。
// Click a button with accessible name "log in"
await page.Locator("role=button[name='log in']").ClickAsync();詳細については、ドキュメントをお読みください。
-
既存のロケーターをフィルター処理する新しい Locator.Filter() API
var buttons = page.Locator("role=button");
// ...
var submitLocator = buttons.Filter(new() { HasText = "Sign up" });
await submitLocator.ClickAsync();
バージョン 1.21
ハイライト
-
ARIAロール、ARIA属性、および アクセシブルネーム によって要素を選択できる新しいロールセレクター。
// Click a button with accessible name "log in"
await page.Locator("role=button[name='log in']").ClickAsync();詳細については、ドキュメントをお読みください。
-
より小さいサイズのスクリーンショットのための Page.ScreenshotAsync() の新しい
scale
オプション。 -
Page.ScreenshotAsync() のテキストカーソルを制御するための新しい
caret
オプション。デフォルトは"hide"
です。 -
専用の .NET docker イメージ
mcr.microsoft.com/playwright/dotnet
を出荷するようになりました。詳細については、ドキュメントをお読みください。
動作変更
- Playwright は、Locator.SetInputFilesAsync() API を介して、大きなファイルアップロード(数百 MB)をサポートするようになりました。
ブラウザーのバージョン
- Chromium 101.0.4951.26
- Mozilla Firefox 98.0.2
- WebKit 15.4
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 100
- Microsoft Edge 100
バージョン 1.20
Web-Firstアサーション
Playwright for .NET 1.20 では、Web-Firstアサーション が導入されました。
次の例を考えてみてください
using System.Threading.Tasks;
using Microsoft.Playwright.NUnit;
using NUnit.Framework;
namespace PlaywrightTests;
[TestFixture]
public class ExampleTests : PageTest
{
[Test]
public async Task StatusBecomesSubmitted()
{
await Expect(Page.Locator(".status")).ToHaveTextAsync("Submitted");
}
}
Playwright は、フェッチされたノードに "Submitted"
テキストが含まれるまで、セレクター .status
を持つノードを再テストします。条件が満たされるか、タイムアウトに達するまで、ノードを繰り返し再フェッチしてチェックします。このタイムアウトはオプションとして渡すことができます。
詳細については、ドキュメントをお読みください。
その他の更新
- メソッド Page.ScreenshotAsync()、Locator.ScreenshotAsync()、および ElementHandle.ScreenshotAsync() の新しいオプション
- オプション
ScreenshotAnimations.Disabled
は、すべての CSS アニメーションとトランジションを一貫性のある状態に巻き戻します - オプション
mask: Locator[]
は、指定された要素をピンク#FF00FF
のボックスでオーバーレイしてマスクします。
- オプション
- Locator.HighlightAsync() は、デバッグを容易にするために要素を視覚的に表示します。
お知らせ
- 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
ハイライト
-
ロケーターは、内部に別のロケーターが含まれていることを確認する
has
オプションをサポートするようになりましたawait Page.Locator("article", new() { Has = Page.Locator(".highlight") }).ClickAsync();
詳細については、ロケーターのドキュメントをお読みください
-
新しい Locator.Page
-
Page.ScreenshotAsync() および Locator.ScreenshotAsync() が点滅するカーソルを自動的に非表示にするようになりました
-
Playwright Codegen がロケーターとフレームロケーターを生成するようになりました
ブラウザーのバージョン
- Chromium 100.0.4863.0
- Mozilla Firefox 96.0.1
- WebKit 15.4
このバージョンは、以下の安定版チャネルに対してもテスト済みです。
- Google Chrome 98
- Microsoft Edge 98
バージョン 1.18
ロケーターの改善
-
各ロケーターは、オプションでそれが含むテキストでフィルター処理できるようになりました
await Page.Locator("li", new() { HasTextString = "My Item" })
.Locator("button").click();詳細については、ロケーターのドキュメントをお読みください
新しいAPIと変更
AcceptDownloads
オプションがデフォルトで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.FrameLocator() または Locator.FrameLocator() メソッドのいずれかで作成できます。
var locator = page.FrameLocator("#my-frame").Locator("text=Submit");
await locator.ClickAsync();
詳細については、ドキュメントをご覧ください。
トレースビューアーの更新
Playwright トレースビューアーが https://trace.playwright.dev でオンラインで利用可能になりました! trace.zip
ファイルをドラッグアンドドロップするだけで、その内容を検査できます。
注: トレースファイルはどこにもアップロードされません。trace.playwright.dev は、トレースをローカルで処理する プログレッシブウェブアプリケーション です。
- Playwright テストトレースに、デフォルトでソースが含まれるようになりました(トレースオプションでオフにできます)
- トレースビューアーにテスト名が表示されるようになりました
- ブラウザーの詳細を示す新しいトレースメタデータタブ
- スナップショットにURLバーが表示されるようになりました
HTMLレポートの更新
- HTMLレポートが動的なフィルタリングをサポートするようになりました
- レポートが、メールまたは Slack の添付ファイルとして送信できる単一の静的 HTML ファイルになりました。
Ubuntu ARM64 サポートなど
-
Playwright が Ubuntu 20.04 ARM64 をサポートするようになりました。Apple M1 および Raspberry Pi 上の Docker 内で Playwright テストを実行できるようになりました。
-
Playwright を使用して、Linux 上に Edge の安定版をインストールできるようになりました
pwsh bin/Debug/netX/playwright.ps1 install msedge
新しいAPI
バージョン 1.16
🎭 Playwrightライブラリ
Locator.WaitForAsync
ロケーターが指定された状態で単一の要素に解決されるのを待ちます。デフォルトは state: 'visible'
です。
var orderSent = page.Locator("#order-sent");
orderSent.WaitForAsync();
詳細については、Locator.WaitForAsync() をお読みください。
🎭 Playwrightトレースビューアー
pwsh bin/Debug/netX/playwright.ps1 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.WheelAsync() を使用して、垂直または水平方向にスクロールできるようになりました。
📜 新しいヘッダーAPI
以前は、応答の複数のヘッダー値を取得することはできませんでした。これが可能になり、追加のヘルパー関数が利用可能になりました
- Request.AllHeadersAsync()
- Request.HeadersArrayAsync()
- Request.HeaderValueAsync()
- Response.AllHeadersAsync()
- Response.HeadersArrayAsync()
- Response.HeaderValueAsync()
- Response.HeaderValuesAsync()
🌈 強制カラーエミュレーション
Browser.NewContextAsync() で渡すか、Page.EmulateMediaAsync() を呼び出すことで、forced-colors
CSSメディア機能をエミュレートできるようになりました。
新しいAPI
- Page.RouteAsync() は、このルートを一致させる回数を指定する新しい
times
オプションを受け入れます。 - Page.SetCheckedAsync() および Locator.SetCheckedAsync() が、チェックボックスのチェック状態を設定するために導入されました。
- Request.SizesAsync() 指定されたHTTPリクエストのリソースサイズ情報を返します。
- Tracing.StartChunkAsync() - 新しいトレースチャンクを開始します。
- Tracing.StopChunkAsync() - 新しいトレースチャンクを停止します。
重要 ⚠
- ⬆ .NET Core Apps 2.1 は、CLIツールでサポートされなくなりました。2021年8月31日をもって、.NET Core 2.1 は サポートされなくなり、セキュリティアップデートは提供されなくなります。CLI を前進させ、最低限 .NET Core 3.1 を要求することにしました。
ブラウザーのバージョン
- Chromium 96.0.4641.0
- Mozilla Firefox 92.0
- WebKit 15.0
バージョン 1.14
⚡️ 新しい「strict」モード
セレクターのあいまいさは、自動化テストでよくある問題です。「strict」モードは、セレクターが単一の要素を指していることを保証し、そうでない場合は例外をスローします。
アクション呼び出しで setStrict(true)
を設定して、オプトインします。
// This will throw if you have more than one button!
await page.Locator("button", new() { Strict = true });
📍 新しい ロケーターAPI
ロケーターは、ページ上の要素のビューを表します。特定の瞬間に要素を取得するのに十分なロジックをキャプチャします。
ロケーター と ElementHandle の違いは、後者が特定の要素を指すのに対し、ロケーター はその要素を取得する方法のロジックをキャプチャすることです。
また、ロケーターはデフォルトで「strict」です!
var locator = page.Locator("button");
await locator.ClickAsync();
詳細については、ドキュメントを参照してください。
🧩 実験的な React および Vue セレクターエンジン
React および Vue セレクターを使用すると、コンポーネント名やプロパティ値で要素を選択できます。構文は 属性セレクター と非常によく似ており、すべての属性セレクター演算子をサポートしています。
await page.Locator("_react=SubmitButton[enabled=true]").ClickAsync();
await page.Locator("_vue=submit-button[enabled=true]").ClickAsync();
詳細については、React セレクターのドキュメントと Vue セレクターのドキュメントを参照してください。
✨ 新しい nth
および visible
セレクターエンジン
nth
セレクターエンジンは、:nth-match
疑似クラスと同等ですが、他のセレクターエンジンと組み合わせることができます。visible
セレクターエンジンは、:visible
疑似クラスと同等ですが、他のセレクターエンジンと組み合わせることができます。
// select the first button among all buttons
await button.ClickAsync("button >> nth=0");
// or if you are using locators, you can use First, Nth() and Last
await page.Locator("button").First.ClickAsync();
// click a visible button
await button.ClickAsync("button >> visible=true");
ブラウザーのバージョン
- Chromium 94.0.4595.0
- Mozilla Firefox 91.0
- WebKit 15.0
バージョン 1.13
Playwright
- 🖖 プログラムによるドラッグアンドドロップのサポート Page.DragAndDropAsync() API を介して。
- 🔎 拡張された HAR リクエストとレスポンスの本文サイズ付き。Browser.NewContextAsync() の
recordHar
オプションを介して使用します。
ツール
- Playwright トレースビューアーに、パラメーター、戻り値、および
console.log()
呼び出しが表示されるようになりました。
新しいガイドとオーバーホールされたガイド
ブラウザーのバージョン
- Chromium 93.0.4576.0
- Mozilla Firefox 90.0
- WebKit 14.2
新しい Playwright API
baseURL
オプションが Browser.NewContextAsync() および Browser.NewPageAsync() に新たに追加されました。- Response.SecurityDetailsAsync() および Response.ServerAddrAsync()
- Page.DragAndDropAsync() および Frame.DragAndDropAsync()
- Download.CancelAsync()
- Page.InputValueAsync(), Frame.InputValueAsync() および ElementHandle.InputValueAsync()
- Page.FillAsync(), Frame.FillAsync(), および ElementHandle.FillAsync() に
force
オプションが新たに追加されました。 - Page.SelectOptionAsync(), Frame.SelectOptionAsync(), および ElementHandle.SelectOptionAsync() に
force
オプションが新たに追加されました。
バージョン 1.12
ハイライト
- Playwright for .NET v1.12 が安定版になりました!
- codegen および trace viewer ツールが標準で付属
ブラウザのバージョン
- Chromium 93.0.4530.0
- Mozilla Firefox 89.0
- WebKit 14.2
このバージョンの Playwright は、次の安定チャネルに対してもテストされました
- Google Chrome 91
- Microsoft Edge 91