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

自動ウェイト

はじめに

Playwright は、アクションを実行する前に、要素の操作可能性チェックを広範囲に実行します。これらのアクションが期待どおりに動作するようにするためです。関連するすべてのチェックが成功するまで自動的に待機し、その後、要求されたアクションを実行します。必要なチェックが指定された timeout 内に成功しない場合、アクションは TimeoutError で失敗します。

例えば、Locator.ClickAsync() の場合、Playwright は以下を確認します。

以下は、各アクションに対して実行される操作可能性チェックの完全なリストです。

アクション表示安定イベントを受け取る有効編集可能
Locator.CheckAsync()はいはいはいはい-
Locator.ClickAsync()はいはいはいはい-
Locator.DblClickAsync()はいはいはいはい-
Locator.SetCheckedAsync()はいはいはいはい-
Locator.TapAsync()はいはいはいはい-
Locator.UncheckAsync()はいはいはいはい-
Locator.HoverAsync()はいはいはい--
Locator.DragToAsync()はいはいはい--
Locator.ScreenshotAsync()はいはい---
Locator.FillAsync()はい--はいはい
Locator.ClearAsync()はい--はいはい
Locator.SelectOptionAsync()はい--はい-
Locator.SelectTextAsync()はい----
Locator.ScrollIntoViewIfNeededAsync()-はい---
Locator.BlurAsync()-----
Locator.DispatchEventAsync()-----
Locator.FocusAsync()-----
Locator.PressAsync()-----
Locator.PressSequentiallyAsync()-----
Locator.SetInputFilesAsync()-----

アクションの強制実行

Locator.ClickAsync() のような一部のアクションは、force オプションをサポートしています。これは、重要でない操作可能性チェックを無効にするものです。例えば、truthy な forceLocator.ClickAsync() メソッドに渡すと、ターゲット要素が実際にクリックイベントを受け取るかどうかをチェックしません。

アサーション

Playwright には、自動再試行アサーションが含まれています。これは、条件が満たされるまで待機することで、不安定さを解消します。アクション前の自動ウェイトと同様です。

アサーション説明
Expect(Locator).ToBeAttachedAsync()要素がアタッチされている
Expect(Locator).ToBeCheckedAsync()チェックボックスがチェックされている
Expect(Locator).ToBeDisabledAsync()要素が無効になっている
Expect(Locator).ToBeEditableAsync()要素が編集可能である
Expect(Locator).ToBeEmptyAsync()コンテナが空である
Expect(Locator).ToBeEnabledAsync()要素が有効になっている
Expect(Locator).ToBeFocusedAsync()要素がフォーカスされている
Expect(Locator).ToBeHiddenAsync()要素が表示されていない
Expect(Locator).ToBeInViewportAsync()要素がビューポートと交差している
Expect(Locator).ToBeVisibleAsync()要素が表示されている
Expect(Locator).ToContainTextAsync()要素がテキストを含む
Expect(Locator).ToHaveAttributeAsync()要素が DOM 属性を持つ
Expect(Locator).ToHaveClassAsync()要素がクラスプロパティを持つ
Expect(Locator).ToHaveCountAsync()リストが正確な数の子要素を持つ
Expect(Locator).ToHaveCSSAsync()要素が CSS プロパティを持つ
Expect(Locator).ToHaveIdAsync()要素が ID を持つ
Expect(Locator).ToHaveJSPropertyAsync()要素が JavaScript プロパティを持つ
Expect(Locator).ToHaveTextAsync()要素がテキストに一致する
Expect(Locator).ToHaveValueAsync()入力が値を持つ
Expect(Locator).ToHaveValuesAsync()セレクトボックスでオプションが選択されている
Expect(Page).ToHaveTitleAsync()ページがタイトルを持つ
Expect(Page).ToHaveURLAsync()ページが URL を持つ
Expect(Response).ToBeOKAsync()レスポンスが OK ステータスである

詳細については、アサーションガイド を参照してください。

表示

要素は、空でないバウンディングボックスを持ち、visibility:hidden の計算済みスタイルを持たない場合に表示されているとみなされます。

この定義によれば、以下の点に注意してください。

  • サイズがゼロの要素は、表示されているとはみなされません
  • display:none の要素は、表示されているとはみなされません
  • opacity:0 の要素は、表示されているとみなされます

安定

要素は、少なくとも 2 つの連続するアニメーションフレームで同じバウンディングボックスを維持した場合に安定しているとみなされます。

有効

要素は、無効になっていない場合に有効になっているとみなされます。

要素が無効になるのは、以下の場合です。

  • <button>, <select>, <input>, <textarea>, <option>, または <optgroup> であり、[disabled] 属性を持つ場合。
  • <button>, <select>, <input>, <textarea>, <option>, または <optgroup> であり、[disabled] 属性を持つ <fieldset> の一部である場合。
  • [aria-disabled=true] 属性を持つ要素の子孫である場合。

編集可能

要素は、有効 であり、readonly ではない場合に編集可能であるとみなされます。

要素がreadonly になるのは、以下の場合です。

  • <select>, <input>, または <textarea> であり、[readonly] 属性を持つ場合。
  • [aria-readonly=true] 属性を持ち、それをサポートする aria ロールを持つ場合。

イベントを受け取る

要素は、アクションポイントでポインターイベントのヒットターゲットである場合に、ポインターイベントを受け取るとみなされます。例えば、(10;10) のポイントをクリックすると、Playwright は、別の要素 (通常はオーバーレイ) が代わりに (10;10) でのクリックをキャプチャするかどうかを確認します。

例えば、Playwright が Locator.ClickAsync() の呼び出しがいつ行われたかに関係なく Sign Up ボタンをクリックするシナリオを考えてみましょう。

  • ページは、ユーザー名が一意であること、および Sign Up ボタンが無効になっていることを確認しています。
  • サーバーとのチェック後、無効になっていた Sign Up ボタンは、現在有効になっている別のボタンに置き換えられます。