メインコンテンツにスキップ

リリースノート

バージョン 1.55

Codegen

  • 自動 toBeVisible() アサーション: Codegen は、一般的な UI 操作に対して自動 toBeVisible() アサーションを生成できるようになりました。この機能は Codegen 設定 UI で有効にできます。

破壊的変更

  • ⚠️ Chromium 拡張機能マニフェスト v2 のサポートを終了しました。

その他

ブラウザバージョン

  • Chromium 140.0.7339.16
  • Mozilla Firefox 141.0
  • WebKit 26.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 139
  • Microsoft Edge 139

バージョン 1.54

ハイライト

  • BrowserContext.CookiesAsync() および BrowserContext.AddCookiesAsync() に新しいcookieプロパティ PartitionKey を追加しました。このプロパティにより、パーティション化されたcookieの保存と復元が可能になります。詳細については、CHIPS MDNの記事を参照してください。なお、ブラウザによってcookieのパーティション化のサポートとデフォルトは異なります。

  • 複数のコマンドで新しいオプション --user-data-dir。セッション間で認証などのブラウジング状態を再利用するために、同じユーザーデータディレクトリを指定できます。

    pwsh bin/Debug/netX/playwright.ps1 codegen --user-data-dir=./user-data
  • pwsh bin/Debug/netX/playwright.ps1 open はテストレコーダーを開かなくなりました。代わりに pwsh bin/Debug/netX/playwright.ps1 codegen を使用してください。

ブラウザバージョン

  • Chromium 139.0.7258.5
  • Mozilla Firefox 140.0.2
  • WebKit 26.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 140
  • Microsoft Edge 140

バージョン 1.53

トレースビューアーとHTMLレポーターの更新

  • トレースビューアの新しいステップ:New Trace Viewer Steps

  • ロケーターを記述する新しいメソッド Locator.Describe() を追加しました。トレースビューアで使用されます。

    var button = Page.GetByTestId("btn-sub").Describe("Subscribe button");
    await button.ClickAsync();
  • pwsh bin/Debug/netX/playwright.ps1 install --list は、インストールされているすべてのブラウザ、バージョン、および場所を一覧表示するようになりました。

ブラウザバージョン

  • Chromium 138.0.7204.4
  • Mozilla Firefox 139.0
  • WebKit 18.5

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 137
  • Microsoft Edge 137

バージョン 1.52

ハイライト

  • 要素上の個々のクラス名を人間工学的にアサートする新しいメソッド Expect(Locator).ToContainClassAsync() を追加しました。

      await Expect(Page.GetByRole(AriaRole.Listitem, new() { Name = "Ship v1.52" })).ToContainClassAsync("done");
  • Ariaスナップショット には2つの新しいプロパティが追加されました: 厳密なマッチングのための /children とリンクのための /url です。

    await Expect(locator).ToMatchAriaSnapshotAsync(@"
    - list
    - /children: equal
    - listitem: Feature A
    - listitem:
    - link ""Feature B"":
    - /url: ""https://playwright.dokyumento.jp""
    ");

その他

破壊的変更

  • Page.RouteAsync() などのメソッドにおけるグローバルURLパターンは ?[] をサポートしなくなりました。代わりに正規表現を使用することをお勧めします。
  • メソッド Route.ContinueAsync()Cookie ヘッダーのオーバーライドを許可しなくなりました。Cookie ヘッダーが指定された場合、それは無視され、CookieはブラウザのCookieストアからロードされます。カスタムCookieを設定するには、BrowserContext.AddCookiesAsync() を使用してください。
  • macOS 13 は非推奨となり、WebKit の更新は受けられなくなります。最新の WebKit の改善を利用し続けるために、より新しい macOS バージョンにアップグレードしてください。

ブラウザバージョン

  • Chromium 136.0.7103.25
  • Mozilla Firefox 137.0
  • WebKit 18.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 135
  • Microsoft Edge 135

バージョン 1.51

ハイライト

  • BrowserContext.StorageStateAsync() の新しいオプション IndexedDB は、IndexedDBコンテンツの保存と復元を可能にします。Firebase Authenticationのように、アプリケーションが認証トークンを保存するために IndexedDB API を使用する場合に便利です。

    認証ガイド に従う例を以下に示します。

    // 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のサポート

その他

UI の更新

  • Codegen に、aria スナップショットを生成する要素を選択するための新しいボタンが追加されました。
  • アクション API 呼び出しと一緒に、追加の詳細(押されたキーなど)がトレースに表示されるようになりました。
  • トレースでの canvas コンテンツの表示はエラーが発生しやすいです。表示はデフォルトで無効になり、Display canvas content UI 設定で有効にできます。
  • Call および Network パネルに、追加の時間情報が表示されるようになりました。

破壊的変更

ブラウザバージョン

  • 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""
");

Test Generator を使用するか、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();

破壊的変更: chromemsedge チャネルが新しいヘッドレスモードに切り替わります

この変更は、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 を参照してください。オプトイン後に問題が見られた場合は、イシューを提出してください。

runsettings.xml
<?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によるフィルタリング
  • クエリ文字列パラメータのより良い表示
  • フォントアセットのプレビュー

Network tab now has filters

その他

  • 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.CertClientCertificates.Key を渡すことで、メモリから渡せるようになりました。
  • Locator.SelectOptionAsync()NoWaitAfter は非推奨になりました。
  • GitHub Actions macos-13 で WebKit の WebGL が誤動作するという報告がありました。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("https://: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);

その他のオプション

  • 新しいメソッド FormData.Append() は、APIRequestContext.FetchAsync()Multipart オプションで同じ名前の繰り返しフィールドを指定できます。

    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

アナウンス

  • ⚠️ Ubuntu 18 はサポートされなくなりました。

ブラウザバージョン

  • Chromium 123.0.6312.4
  • Mozilla Firefox 123.0
  • WebKit 17.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 122
  • Microsoft Edge 123

バージョン 1.41

新しいAPI

ブラウザバージョン

  • Chromium 121.0.6167.57
  • Mozilla Firefox 121.0
  • WebKit 17.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 120
  • Microsoft Edge 120

バージョン 1.40

テストジェネレータの更新

Playwright Test Generator

アサーションを生成する新しいツール

以下は、アサーション付きで生成されたテストの例です。

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

その他の変更

ブラウザバージョン

  • Chromium 120.0.6099.28
  • Mozilla Firefox 119.0
  • WebKit 17.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 119
  • Microsoft Edge 119

バージョン 1.39

エバーグリーンブラウザの更新。

ブラウザバージョン

  • Chromium 119.0.6045.9
  • Mozilla Firefox 118.0.1
  • WebKit 17.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 118
  • Microsoft Edge 118

バージョン 1.38

トレースビューアの更新

Playwright Trace Viewer

  1. 時間範囲のズーム。
  2. ネットワークパネルの再設計。

新しいAPI

非推奨

ブラウザバージョン

  • Chromium 117.0.5938.62
  • Mozilla Firefox 117.0
  • WebKit 17.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 116
  • Microsoft Edge 116

バージョン 1.37

📚 Debian 12 Bookworm のサポート

Playwright は現在、x86_64 および arm64 の両方で Debian 12 Bookworm を Chromium、Firefox、および WebKit でサポートしています。問題が発生した場合はお知らせください。

Linux のサポートは次のようになります。

Ubuntu 20.04Ubuntu 22.04Debian 11Debian 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

ロケータの更新

  • Locator.Or() を使用して、2つのロケータのいずれかに一致するロケータを作成します。「新しいメール」ボタンをクリックしたいが、セキュリティ設定ダイアログが表示される場合があるというシナリオを考えてみてください。この場合、「新しいメール」ボタンまたはダイアログのいずれかを待ち、それに応じて対応できます。

    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() の新しいオプション HasNotHasNotText|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();
  • 新しいWebファーストアサーション Expect(Locator).ToBeAttachedAsync() を使用して、要素がページのDOMに存在することを確認します。Expect(Locator).ToBeVisibleAsync() は要素がアタッチされていて可視であることを確認するものであり、これと混同しないでください。

新しいAPI

⚠️ 破壊的変更

  • 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

ブラウザバージョン

  • 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イメージ には、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でのライブロケーター。「探索」ツールを使用して、ページ上の任意の要素のロケーターを生成します。

Locator Explorer

新しいAPI

ブラウザのバージョン

  • Chromium 108.0.5359.29
  • Mozilla Firefox 106.0
  • WebKit 16.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 107
  • Microsoft Edge 107

バージョン 1.27

ロケーター

これらの新しいAPIにより、ロケーターの記述が楽しくなりました

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();

すべての同じメソッドは、LocatorFrameLocator、および Frame クラスでも利用できます。

その他のハイライト

  • v1.25 で発表されたように、Ubuntu 18 は2022年12月以降サポートされません。それに加えて、次のPlaywrightリリースからはUbuntu 18でのWebKitの更新はありません。

動作の変更

  • 空の値を持つ Expect(Locator).ToHaveAttributeAsync() は、もはや欠落している属性に一致しません。たとえば、次のスニペットは、buttondisabled 属性がない場合に成功します。

    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

アサーション

その他のハイライト

  • 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 イベントを発火するまで待機していました。

ウェブ仕様に合わせるため、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 | ✅ | ✅ | ✅ |

新しい導入ドキュメント

私たちは、よりエンドツーエンドテストに焦点を当てるように、Getting Startedドキュメントを書き直しました。playwright.dev で確認してください。

バージョン 1.23

APIテスト

Playwright for .NET 1.23では、APIテスト が導入され、.NETから直接サーバーにリクエストを送信できるようになりました!これで、

  • サーバーAPIをテストする
  • テストでウェブアプリケーションにアクセスする前にサーバー側の状態を準備する
  • ブラウザでいくつかのアクションを実行した後にサーバー側の事後条件を検証する

Playwrightのページに代わってリクエストを行うには、新しい 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アサーションの更新

その他

  • 邪魔になるサービスワーカーがある場合、新しいコンテキストオプション 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ファーストアサーション

Playwright for .NET 1.20は、Webファーストアサーションを導入します。

次の例を考えてみましょう。

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 は、選択子 .status を持つノードを再テストし、取得されたノードが "Submitted" テキストを持つまで続けます。このノードは、条件が満たされるかタイムアウトに達するまで、繰り返し取得およびチェックされます。このタイムアウトはオプションとして渡すことができます。

詳細については、私たちのドキュメント を参照してください。

その他の更新

  • メソッド 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

ハイライト

  • Locator は、内部に別のロケーターが含まれていることを確認する 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

ロケーターの改善

  • Locator.DragToAsync()

  • 各ロケーターは、含むテキストでオプションでフィルタリングできるようになりました。

    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ファーストアサーションで使用できます。

Graphics

フレームロケータは、Page.FrameLocator() または Locator.FrameLocator() メソッドのいずれかで作成できます。

var locator = page.FrameLocator("#my-frame").Locator("text=Submit");
await locator.ClickAsync();

詳細については、私たちのドキュメント を参照してください。

トレースビューアーの更新

Playwright Trace Viewer が https://trace.playwright.devオンラインで利用可能になりました!trace.zip ファイルをドラッグアンドドロップするだけで、その内容を検査できます。

: トレースファイルはどこにもアップロードされません。trace.playwright.dev は、トレースをローカルで処理するプログレッシブウェブアプリケーションです。

  • Playwright Test のトレースにデフォルトでソースが含まれるようになりました (トレースオプションでオフにできます)。
  • Trace Viewer にテスト名が表示されるようになりました。
  • ブラウザの詳細を含む新しいトレースメタデータタブ
  • スナップショットにURLバーが追加されました

image

HTML レポートの更新

  • HTML レポートが動的フィルタリングをサポートするようになりました。
  • レポートは単一の静的HTMLファイルとなり、EメールやSlackの添付ファイルとして送信できます。

image

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

  • トレースは新しい 'title' オプションをサポートするようになりました。
  • ページナビゲーションは新しい 'commit' 待機オプションをサポートします。

バージョン 1.16

🎭 Playwright ライブラリ

Locator.WaitForAsync

指定された状態の単一の要素に解決されるロケーターを待機します。デフォルトは state: 'visible' です。

var orderSent = page.Locator("#order-sent");
orderSent.WaitForAsync();

Locator.WaitForAsync() の詳細をご覧ください。

🎭 Playwright Trace Viewer

  • 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

以前は、応答の複数のヘッダー値を取得することはできませんでした。これが可能になり、追加のヘルパー関数が利用できるようになりました。

🌈 Forced-Colors エミュレーション

Browser.NewContextAsync() に渡すか、Page.EmulateMediaAsync() を呼び出すことで、forced-colors CSSメディア機能をエミュレートできるようになりました。

新しいAPI

重要 ⚠

  • ⬆ .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

⚡️ 新しい「厳密」モード

セレクタの曖昧さは、自動化テストにおける一般的な問題です。「厳密」モードは、セレクタが単一の要素を指していることを保証し、そうでなければ例外をスローします。

アクション呼び出しで setStrict(true) を設定して、オプトインしてください。

// This will throw if you have more than one button!
await page.Locator("button", new() { Strict = true });

📍 新しい ロケータAPI

ロケーターは、ページ上の要素のビューを表します。特定の時点で要素を取得するのに十分なロジックをキャプチャします。

ロケータElementHandle の違いは、後者が特定の要素を指すのに対し、ロケータ はその要素を取得する方法のロジックをキャプチャする点です。

また、ロケーターはデフォルトで「厳密」です!

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 Trace Viewer に、パラメーター、戻り値、console.log() 呼び出しが表示されるようになりました。

新しいおよび刷新されたガイド

ブラウザのバージョン

  • Chromium 93.0.4576.0
  • Mozilla Firefox 90.0
  • WebKit 14.2

新しい Playwright API

バージョン 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