Locator
Locator は、Playwright の自動ウェイトとリトライ機能の中心となる要素です。一言で言えば、Locator は、ページ上の要素をいつでも見つけるための手段を表します。Locator は、Page.Locator() メソッドで作成できます。
メソッド
AllAsync
v1.29で追加Locatorが要素のリストを指している場合、これはそれらの各要素を指すLocatorの配列を返します。
Locator.AllAsync() は、Locatorに一致する要素を待機せず、ページに存在するものをすぐに返します。
要素のリストが動的に変化する場合、Locator.AllAsync() は、予測不可能で不安定な結果を生み出します。
要素のリストが安定しているものの、動的にロードされる場合は、Locator.AllAsync() を呼び出す前に、リスト全体がロードを完了するまで待機してください。
使用例
foreach (var li in await page.GetByRole("listitem").AllAsync())
await li.ClickAsync();
戻り値
AllInnerTextsAsync
v1.14で追加一致するすべてのノードの node.innerText
値の配列を返します。
ページ上のテキストをアサートする必要がある場合は、不安定さを避けるために、Expect(Locator).ToHaveTextAsync() を UseInnerText オプション付きで使用することを推奨します。詳細は アサーションガイド を参照してください。
使用例
var texts = await page.GetByRole(AriaRole.Link).AllInnerTextsAsync();
戻り値
AllTextContentsAsync
v1.14で追加一致するすべてのノードの node.textContent
値の配列を返します。
ページ上のテキストをアサートする必要がある場合は、不安定さを避けるために、Expect(Locator).ToHaveTextAsync() を使用することを推奨します。詳細は アサーションガイド を参照してください。
使用例
var texts = await page.GetByRole(AriaRole.Link).AllTextContentsAsync();
戻り値
And
v1.34で追加このLocatorと引数Locatorの両方に一致するLocatorを作成します。
使用例
次の例は、特定のタイトルを持つボタンを見つけます。
var button = page.GetByRole(AriaRole.Button).And(page.GetByTitle("Subscribe"));
引数
戻り値
AriaSnapshotAsync
v1.49で追加指定された要素のARIAスナップショットを取得します。ARIAスナップショットと、対応するアサーションである Expect(Locator).ToMatchAriaSnapshotAsync() について詳しくはこちらをご覧ください。
使用例
await page.GetByRole(AriaRole.Link).AriaSnapshotAsync();
引数
options
LocatorAriaSnapshotOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
詳細
このメソッドは、指定された要素のARIAスナップショットを取得します。スナップショットは、要素とその子要素の状態を表す文字列です。スナップショットは、テストで要素の状態をアサートしたり、将来の状態と比較したりするために使用できます。
ARIAスナップショットは、YAML マークアップ言語を使用して表現されます。
- オブジェクトのキーは、要素のロールとオプションのアクセシブルな名前です。
- 値は、テキストコンテンツまたは子要素の配列です。
- 一般的な静的テキストは、
text
キーで表現できます。
以下は、HTMLマークアップとそれぞれのARIAスナップショットです。
<ul aria-label="Links">
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
<ul>
- list "Links":
- listitem:
- link "Home"
- listitem:
- link "About"
BlurAsync
v1.28で追加要素に対して blur を呼び出します。
使用例
await Locator.BlurAsync(options);
引数
options
LocatorBlurOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
BoundingBoxAsync
v1.14で追加このメソッドは、Locatorに一致する要素のバウンディングボックスを返します。要素が表示されていない場合は null
を返します。バウンディングボックスは、メインフレームのビューポート(通常はブラウザウィンドウと同じ)を基準に計算されます。
使用例
var box = await page.GetByRole(AriaRole.Button).BoundingBoxAsync();
await page.Mouse.ClickAsync(box.X + box.Width / 2, box.Y + box.Height / 2);
引数
options
LocatorBoundingBoxOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
- BoundingBox?#
-
x
[float]要素のx座標(ピクセル単位)。
-
y
[float]要素のy座標(ピクセル単位)。
-
width
[float]要素の幅(ピクセル単位)。
-
height
[float]要素の高さ(ピクセル単位)。
-
詳細
スクロールは、Element.getBoundingClientRect と同様に、返されるバウンディングボックスに影響を与えます。つまり、x
や y
が負の値になる可能性があります。
子フレームの要素は、Element.getBoundingClientRect とは異なり、メインフレームを基準としたバウンディングボックスを返します。
ページが静的であると仮定すると、バウンディングボックスの座標を入力の実行に使用しても安全です。たとえば、次のスニペットは要素の中心をクリックします。
CheckAsync
v1.14で追加チェックボックスまたはラジオ要素がチェックされていることを確認します。
使用例
await page.GetByRole(AriaRole.Checkbox).CheckAsync();
引数
options
LocatorCheckOptions?
(任意)-
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
Position
Position? (任意)#-
X
[float] -
Y
[float]
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視点を使用します。
-
-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。 -
設定すると、このメソッドは アクション可能性 チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。
-
戻り値
詳細
次の手順を実行します。
- 要素がチェックボックスまたはラジオ入力であることを確認します。そうでない場合、このメソッドは例外をスローします。要素がすでにチェックされている場合、このメソッドはすぐに戻ります。
- アクション可能性 チェックを要素に対して待機します(Force オプションが設定されていない場合)。
- 必要に応じて、要素をビューにスクロールします。
- Page.Mouse を使用して、要素の中心をクリックします。
- 要素がチェックされたことを確認します。そうでない場合、このメソッドは例外をスローします。
アクション中に要素がDOMから切り離された場合、このメソッドは例外をスローします。
指定された Timeout の間にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。タイムアウトを無効にするには、ゼロタイムアウトを渡します。
ClearAsync
v1.28で追加入力フィールドをクリアします。
使用例
await page.GetByRole(AriaRole.Textbox).ClearAsync();
引数
options
LocatorClearOptions?
(任意)-
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
詳細
このメソッドは、アクション可能性 チェックを待機し、要素にフォーカスを当て、クリアしてから、クリア後に input
イベントをトリガーします。
ターゲット要素が <input>
、<textarea>
、または [contenteditable]
要素でない場合、このメソッドはエラーをスローします。ただし、要素が関連付けられた control を持つ <label>
要素内にある場合、代わりにコントロールがクリアされます。
ClickAsync
v1.14で追加要素をクリックします。
使用例
ボタンをクリックする
await page.GetByRole(AriaRole.Button).ClickAsync();
キャンバス上の特定の位置をShift+右クリックする
await page.Locator("canvas").ClickAsync(new() {
Button = MouseButton.Right,
Modifiers = new[] { KeyboardModifier.Shift },
Position = new Position { X = 0, Y = 0 }
});
引数
options
LocatorClickOptions?
(任意)-
Button
enum MouseButton { Left, Right, Middle }?
(任意)#デフォルトは
left
です。 -
デフォルトは 1 です。UIEvent.detail を参照してください。
-
Delay
[float]? (任意)#mousedown
とmouseup
の間の待機時間(ミリ秒単位)。デフォルトは 0 です。 -
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
Modifiers
IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }
> (任意)#押すモディファイキー。操作中はこれらのモディファイキーのみが押されていることを保証し、現在のモディファイキーを元に戻します。指定しない場合、現在押されているモディファイキーが使用されます。"ControlOrMeta" は、WindowsとLinuxでは "Control" に、macOSでは "Meta" に解決されます。
-
非推奨
このオプションは、将来的にデフォルトで
true
になります。ナビゲーションを開始するアクションは、これらのナビゲーションが発生し、ページのロードが開始されるのを待機します。このフラグを設定することで、待機をオプトアウトできます。このオプションが必要になるのは、アクセスできないページにナビゲートする場合などの例外的なケースのみです。デフォルトは
false
です。 -
Position
Position? (任意)#-
X
[float] -
Y
[float]
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視点を使用します。
-
-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。 -
設定すると、このメソッドは アクション可能性 チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。キーボードmodifiers
は、trial
に関係なく押され、これらのキーが押されたときにのみ表示される要素のテストを可能にすることに注意してください。
-
戻り値
詳細
このメソッドは、次の手順を実行して要素をクリックします。
- アクション可能性 チェックを要素に対して待機します(Force オプションが設定されていない場合)。
- 必要に応じて、要素をビューにスクロールします。
- Page.Mouse を使用して、要素の中心、または指定された Position をクリックします。
- 開始されたナビゲーションが成功または失敗するのを待機します(NoWaitAfter オプションが設定されていない場合)。
アクション中に要素がDOMから切り離された場合、このメソッドは例外をスローします。
指定された Timeout の間にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。タイムアウトを無効にするには、ゼロタイムアウトを渡します。
ContentFrame
v1.43で追加このLocatorと同じ iframe
を指す FrameLocator オブジェクトを返します。
どこかで取得した Locator オブジェクトがあり、後でフレーム内のコンテンツを操作したい場合に役立ちます。
逆の操作には、FrameLocator.Owner を使用します。
使用例
var locator = Page.Locator("iframe[name=\"embedded\"]");
// ...
var frameLocator = locator.ContentFrame;
await frameLocator.GetByRole(AriaRole.Button).ClickAsync();
戻り値
CountAsync
v1.14で追加Locatorに一致する要素の数を返します。
ページ上の要素数をアサートする必要がある場合は、不安定さを避けるために、Expect(Locator).ToHaveCountAsync() を推奨します。詳細は アサーションガイド を参照してください。
使用例
int count = await page.GetByRole(AriaRole.Listitem).CountAsync();
戻り値
DblClickAsync
v1.14で追加要素をダブルクリックします。
使用例
await Locator.DblClickAsync(options);
引数
options
LocatorDblClickOptions?
(任意)-
Button
enum MouseButton { Left, Right, Middle }?
(任意)#デフォルトは
left
です。 -
Delay
[float]? (任意)#mousedown
とmouseup
の間の待機時間(ミリ秒単位)。デフォルトは 0 です。 -
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
Modifiers
IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }
> (任意)#押すモディファイキー。操作中はこれらのモディファイキーのみが押されていることを保証し、現在のモディファイキーを元に戻します。指定しない場合、現在押されているモディファイキーが使用されます。"ControlOrMeta" は、WindowsとLinuxでは "Control" に、macOSでは "Meta" に解決されます。
-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
Position
Position? (任意)#-
X
[float] -
Y
[float]
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視点を使用します。
-
-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。 -
設定すると、このメソッドは アクション可能性 チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。キーボードmodifiers
は、trial
に関係なく押され、これらのキーが押されたときにのみ表示される要素のテストを可能にすることに注意してください。
-
戻り値
詳細
このメソッドは、次の手順を実行して要素をダブルクリックします。
- アクション可能性 チェックを要素に対して待機します(Force オプションが設定されていない場合)。
- 必要に応じて、要素をビューにスクロールします。
- Page.Mouse を使用して、要素の中心、または指定された Position をダブルクリックします。
アクション中に要素がDOMから切り離された場合、このメソッドは例外をスローします。
指定された Timeout の間にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。タイムアウトを無効にするには、ゼロタイムアウトを渡します。
element.dblclick()
は、2つの click
イベントと1つの dblclick
イベントをディスパッチします。
DispatchEventAsync
v1.14で追加一致する要素に対してプログラムでイベントをディスパッチします。
使用例
await locator.DispatchEventAsync("click");
引数
-
DOMイベントタイプ:
"click"
,"dragstart"
など。 -
eventInit
EvaluationArgument? (任意)#オプションのイベント固有の初期化プロパティ。
-
options
LocatorDispatchEventOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
詳細
上記のスニペットは、要素に対して click
イベントをディスパッチします。要素の可視状態に関係なく、click
がディスパッチされます。これは、element.click() を呼び出すのと同じです。
内部的には、指定された type に基づいてイベントのインスタンスを作成し、eventInit プロパティで初期化し、要素にディスパッチします。イベントは、デフォルトで composed
、cancelable
、およびバブルです。
eventInit はイベント固有であるため、初期プロパティのリストについては、イベントのドキュメントを参照してください。
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
ライブオブジェクトをイベントに渡したい場合は、JSHandle をプロパティ値として指定することもできます。
var dataTransfer = await page.EvaluateHandleAsync("() => new DataTransfer()");
await locator.DispatchEventAsync("dragstart", new Dictionary<string, object>
{
{ "dataTransfer", dataTransfer }
});
DragToAsync
v1.18で追加ソース要素をターゲット要素に向かってドラッグし、ドロップします。
使用例
var source = Page.Locator("#source");
var target = Page.Locator("#target");
await source.DragToAsync(target);
// or specify exact positions relative to the top-left corners of the elements:
await source.DragToAsync(target, new()
{
SourcePosition = new() { X = 34, Y = 7 },
TargetPosition = new() { X = 10, Y = 20 },
});
引数
-
ドラッグ先の要素のLocator。
-
options
LocatorDragToOptions?
(任意)-
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
SourcePosition
SourcePosition? (任意)#-
X
[float] -
Y
[float]
要素のパディングボックスの左上隅を基準としたこのポイントでソース要素をクリックします。指定しない場合は、要素の可視点を使用します。
-
-
TargetPosition
TargetPosition? (任意)#-
X
[float] -
Y
[float]
要素のパディングボックスの左上隅を基準としたこのポイントでターゲット要素にドロップします。指定しない場合は、要素の可視点を使用します。
-
-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。 -
設定すると、このメソッドは アクション可能性 チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。
-
戻り値
詳細
このメソッドは、Locatorを別のターゲットLocatorまたはターゲット位置にドラッグします。最初にソース要素に移動し、mousedown
を実行してから、ターゲット要素または位置に移動して mouseup
を実行します。
EvaluateAsync
v1.14で追加一致する要素を引数として受け取り、ページ内でJavaScriptコードを実行します。
使用例
引数
-
ブラウザコンテキストで評価されるJavaScript式。式が関数として評価される場合、関数は自動的に呼び出されます。
-
arg
EvaluationArgument? (任意)#expression に渡すオプションの引数。
-
options
LocatorEvaluateOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
- [object]#
詳細
expression の戻り値を返します。これは、一致する要素を最初の引数として、arg を2番目の引数として呼び出されます。
expression が Promise を返す場合、このメソッドは Promise が解決されるのを待ってその値を返します。
もし expression が例外を投げるか、リジェクトした場合、このメソッドは例外を投げます。
EvaluateAllAsync
v1.14で追加ページ内で JavaScript コードを実行し、一致するすべての要素を引数として取ります。
使用例
var locator = page.Locator("div");
var moreThanTen = await locator.EvaluateAllAsync<bool>("(divs, min) => divs.length > min", 10);
引数
-
ブラウザコンテキストで評価されるJavaScript式。式が関数として評価される場合、関数は自動的に呼び出されます。
-
arg
EvaluationArgument? (オプション)#expression に渡すオプションの引数。
戻り値
- [object]#
詳細
一致するすべての要素の配列を最初の引数として、arg を2番目の引数として呼び出された expression の戻り値を返します。
expression が Promise を返す場合、このメソッドは Promise が解決されるのを待ってその値を返します。
もし expression が例外を投げるか、リジェクトした場合、このメソッドは例外を投げます。
EvaluateHandleAsync
v1.14で追加ページ内で JavaScript コードを実行し、一致する要素を引数として取り、結果とともに JSHandle を返します。
使用例
await Locator.EvaluateHandleAsync(expression, arg, options);
引数
-
ブラウザコンテキストで評価されるJavaScript式。式が関数として評価される場合、関数は自動的に呼び出されます。
-
arg
EvaluationArgument? (オプション)#expression に渡すオプションの引数。
-
options
LocatorEvaluateHandleOptions?
(オプション)-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
詳細
一致する要素を最初の引数として、arg を2番目の引数として呼び出された expression の戻り値を JSHandle として返します。
Locator.EvaluateAsync() と Locator.EvaluateHandleAsync() の唯一の違いは、Locator.EvaluateHandleAsync() が JSHandle を返すことです。
expression が Promise を返す場合、このメソッドは Promise が解決されるのを待ってその値を返します。
もし expression が例外を投げるか、リジェクトした場合、このメソッドは例外を投げます。
詳細については、Page.EvaluateHandleAsync() を参照してください。
FillAsync
v1.14で追加入力フィールドに値を設定します。
使用例
await page.GetByRole(AriaRole.Textbox).FillAsync("example value");
引数
-
<input>
、<textarea>
、または[contenteditable]
要素に設定する値。 -
options
LocatorFillOptions?
(オプション)-
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
詳細
このメソッドは、操作可能性チェックを待ち、要素にフォーカスし、入力し、入力後に input
イベントをトリガーします。入力フィールドをクリアするために空の文字列を渡すことができることに注意してください。
ターゲット要素が <input>
、<textarea>
、または [contenteditable]
要素でない場合、このメソッドはエラーをスローします。ただし、要素が関連する コントロール を持つ <label>
要素内にある場合、代わりにコントロールが入力されます。
きめ細かいキーボードイベントを送信するには、Locator.PressSequentiallyAsync() を使用してください。
Filter
追加: v1.22このメソッドは、オプションに従って既存のロケーターを絞り込みます。たとえば、テキストでフィルタリングします。複数回フィルタリングするためにチェーンできます。
使用例
var rowLocator = page.Locator("tr");
// ...
await rowLocator
.Filter(new() { HasText = "text in column 1" })
.Filter(new() {
Has = page.GetByRole(AriaRole.Button, new() { Name = "column 2 button" } )
})
.ScreenshotAsync();
引数
options
LocatorFilterOptions?
(オプション)-
この相対ロケーターに一致する要素を含むものに、メソッドの結果を絞り込みます。たとえば、
text=Playwright
を持つarticle
は、<article><div>Playwright</div></article>
に一致します。内部ロケーターは、外部ロケーターに対して相対的である必要があり、ドキュメントルートではなく、外部ロケーターの一致からクエリが開始されます。たとえば、
<article><content><div>Playwright</div></content></article>
内のdiv
を持つcontent
を見つけることができます。ただし、article div
を持つcontent
を探すことは失敗します。内部ロケーターは相対的でなければならず、content
の外部の要素を使用すべきではないためです。外部ロケーターと内部ロケーターは同じフレームに属している必要があることに注意してください。内部ロケーターは FrameLocator を含んではなりません。
-
HasNot
Locator? (オプション)追加: v1.33#内部ロケーターに一致する要素を含まない要素に一致します。内部ロケーターは外部ロケーターに対してクエリされます。たとえば、
div
を持たないarticle
は、<article><span>Playwright</span></article>
に一致します。外部ロケーターと内部ロケーターは同じフレームに属している必要があることに注意してください。内部ロケーターは FrameLocator を含んではなりません。
-
HasNotText|HasNotTextRegex
string? | Regex? (オプション)追加: v1.33#指定されたテキストを内部のどこか(子要素または子孫要素内にある可能性あり)に含まない要素に一致します。string が渡されると、大文字と小文字を区別せずに照合され、部分文字列を検索します。
-
HasText|HasTextRegex
string? | Regex? (オプション)#指定されたテキストを内部のどこか(子要素または子孫要素内にある可能性あり)に含む要素に一致します。string が渡されると、大文字と小文字を区別せずに照合され、部分文字列を検索します。たとえば、
"Playwright"
は<article><div>Playwright</div></article>
に一致します。 -
Visible
bool? (オプション)追加: v1.51#可視または不可視の要素のみを一致させます。
-
戻り値
First
v1.14で追加最初の一致要素へのロケーターを返します。
使用例
Locator.First
戻り値
FocusAsync
v1.14で追加一致する要素で focus を呼び出します。
使用例
await Locator.FocusAsync(options);
引数
options
LocatorFocusOptions?
(オプション)-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
FrameLocator
追加: v1.17iframe を操作する場合、iframe に入り、その iframe 内の要素を特定できるフレームロケーターを作成できます。
使用例
var locator = page.FrameLocator("iframe").GetByText("Submit");
await locator.ClickAsync();
引数
戻り値
GetAttributeAsync
v1.14で追加一致する要素の属性値を返します。
要素の属性をアサートする必要がある場合は、不安定さを避けるために Expect(Locator).ToHaveAttributeAsync() を優先してください。詳細については、アサーションガイド を参照してください。
使用例
await Locator.GetAttributeAsync(name, options);
引数
-
値を取得する属性名。
-
options
LocatorGetAttributeOptions?
(オプション)-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
GetByAltText
追加: v1.27alt テキストで要素を特定できます。
使用例
たとえば、このメソッドは alt テキスト "Playwright logo" で画像を検索します。
<img alt='Playwright logo'>
await page.GetByAltText("Playwright logo").ClickAsync();
引数
-
要素を特定するためのテキスト。
-
options
LocatorGetByAltTextOptions?
(オプション)
戻り値
GetByLabel
追加: v1.27関連付けられた <label>
または aria-labelledby
要素のテキスト、または aria-label
属性によって入力要素を特定できます。
使用例
たとえば、このメソッドは次の DOM でラベル "Username" および "Password" で入力を検索します。
<input aria-label="Username">
<label for="password-input">Password:</label>
<input id="password-input">
await page.GetByLabel("Username").FillAsync("john");
await page.GetByLabel("Password").FillAsync("secret");
引数
-
要素を特定するためのテキスト。
-
options
LocatorGetByLabelOptions?
(オプション)
戻り値
GetByPlaceholder
追加: v1.27プレースホルダーテキストで入力要素を特定できます。
使用例
たとえば、次の DOM 構造を考えてみましょう。
<input type="email" placeholder="name@example.com" />
プレースホルダーテキストで特定した後、入力を入力できます。
await page
.GetByPlaceholder("name@example.com")
.FillAsync("playwright@microsoft.com");
引数
-
要素を特定するためのテキスト。
-
options
LocatorGetByPlaceholderOptions?
(オプション)
戻り値
GetByRole
追加: v1.27ARIA role、ARIA 属性、および アクセシブルネーム で要素を特定できます。
使用例
次の DOM 構造を考えてみましょう。
<h3>Sign up</h3>
<label>
<input type="checkbox" /> Subscribe
</label>
<br/>
<button>Submit</button>
各要素を暗黙的なロールで特定できます。
await Expect(Page
.GetByRole(AriaRole.Heading, new() { Name = "Sign up" }))
.ToBeVisibleAsync();
await page
.GetByRole(AriaRole.Checkbox, new() { Name = "Subscribe" })
.CheckAsync();
await page
.GetByRole(AriaRole.Button, new() {
NameRegex = new Regex("submit", RegexOptions.IgnoreCase)
})
.ClickAsync();
引数
-
role
enum AriaRole { Alert, Alertdialog, Application, Article, Banner, Blockquote, Button, Caption, Cell, Checkbox, Code, Columnheader, Combobox, Complementary, Contentinfo, Definition, Deletion, Dialog, Directory, Document, Emphasis, Feed, Figure, Form, Generic, Grid, Gridcell, Group, Heading, Img, Insertion, Link, List, Listbox, Listitem, Log, Main, Marquee, Math, Meter, Menu, Menubar, Menuitem, Menuitemcheckbox, Menuitemradio, Navigation, None, Note, Option, Paragraph, Presentation, Progressbar, Radio, Radiogroup, Region, Row, Rowgroup, Rowheader, Scrollbar, Search, Searchbox, Separator, Slider, Spinbutton, Status, Strong, Subscript, Superscript, Switch, Tab, Table, Tablist, Tabpanel, Term, Textbox, Time, Timer, Toolbar, Tooltip, Tree, Treegrid, Treeitem }
#必須の aria ロール。
-
options
LocatorGetByRoleOptions?
(オプション)-
通常、
aria-checked
またはネイティブ<input type=checkbox>
コントロールによって設定される属性。aria-checked
の詳細をご覧ください。 -
通常、
aria-disabled
またはdisabled
によって設定される属性。注記他のほとんどの属性とは異なり、
disabled
は DOM 階層全体で継承されます。aria-disabled
の詳細をご覧ください。 -
Name|NameRegex が完全に一致するかどうか: 大文字と小文字を区別し、文字列全体を比較します。デフォルトは false です。Name|NameRegex が正規表現の場合は無視されます。完全一致でも空白文字はトリミングされることに注意してください。
-
通常、
aria-expanded
によって設定される属性。aria-expanded
の詳細をご覧ください。 -
非表示要素を一致させるかどうかを制御するオプション。デフォルトでは、ARIA によって定義されている非表示でない要素のみがロールセレクターによって一致されます。
aria-hidden
の詳細をご覧ください。 -
通常、ロール
heading
、listitem
、row
、treeitem
に存在する数値属性で、<h1>-<h6>
要素のデフォルト値が設定されています。aria-level
の詳細をご覧ください。 -
Name|NameRegex
string? | Regex? (オプション)#アクセシブルネーム に一致させるためのオプション。デフォルトでは、大文字と小文字を区別せずに照合され、部分文字列を検索します。この動作を制御するには、Exact を使用してください。
アクセシブルネーム の詳細をご覧ください。
-
通常、
aria-pressed
によって設定される属性。aria-pressed
の詳細をご覧ください。 -
通常、
aria-selected
によって設定される属性。aria-selected
の詳細をご覧ください。
-
戻り値
詳細
ロールセレクターは、アクセシビリティ監査および適合性テストを置き換えるものではありませんが、ARIA ガイドラインに関する早期フィードバックを提供します。
多くの html 要素には、ロールセレクターによって認識される暗黙的に 定義されたロール があります。すべてのサポートされているロールはこちらで確認できます。ARIA ガイドラインは、デフォルト値に role
や aria-*
属性を設定して、暗黙的なロールと属性を複製することを推奨していません。
GetByTestId
追加: v1.27テスト ID で要素を特定します。
使用例
次の DOM 構造を考えてみましょう。
<button data-testid="directions">Itinéraire</button>
テスト ID で要素を特定できます。
await page.GetByTestId("directions").ClickAsync();
引数
戻り値
詳細
デフォルトでは、data-testid
属性がテスト ID として使用されます。必要に応じて別のテスト ID 属性を構成するには、Selectors.SetTestIdAttribute() を使用してください。
GetByText
追加: v1.27指定されたテキストを含む要素を特定できます。
アクセシブルロールなどの別の基準で一致させ、テキストコンテンツでフィルタリングできる Locator.Filter() も参照してください。
使用例
次の DOM 構造を考えてみましょう
<div>Hello <span>world</span></div>
<div>Hello</div>
テキスト部分文字列、完全一致文字列、または正規表現で特定できます。
// Matches <span>
page.GetByText("world");
// Matches first <div>
page.GetByText("Hello world");
// Matches second <div>
page.GetByText("Hello", new() { Exact = true });
// Matches both <div>s
page.GetByText(new Regex("Hello"));
// Matches second <div>
page.GetByText(new Regex("^hello$", RegexOptions.IgnoreCase));
引数
-
要素を特定するためのテキスト。
-
options
LocatorGetByTextOptions?
(オプション)
戻り値
詳細
テキストによるマッチングは、完全一致であっても常に空白文字を正規化します。たとえば、複数のスペースを1つにし、改行をスペースに変換し、先頭と末尾の空白文字を無視します。
button
および submit
タイプの入力要素は、テキストコンテンツの代わりに value
によって一致します。たとえば、テキスト "Log in"
で特定すると、<input type=button value="Log in">
に一致します。
GetByTitle
追加: v1.27title 属性で要素を特定できます。
使用例
次の DOM 構造を考えてみましょう。
<span title='Issues count'>25 issues</span>
タイトルテキストで特定した後、問題の数をチェックできます。
await Expect(Page.GetByTitle("Issues count")).toHaveText("25 issues");
引数
-
要素を特定するためのテキスト。
-
options
LocatorGetByTitleOptions?
(オプション)
戻り値
HighlightAsync
追加: v1.20画面上で対応する要素をハイライト表示します。デバッグに役立ちます。Locator.HighlightAsync() を使用するコードはコミットしないでください。
使用例
await Locator.HighlightAsync();
戻り値
HoverAsync
v1.14で追加一致する要素にホバーします。
使用例
await page.GetByRole(AriaRole.Link).HoverAsync();
引数
options
LocatorHoverOptions?
(オプション)-
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
Modifiers
IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }
> (オプション)#押すモディファイキー。操作中はこれらのモディファイキーのみが押されていることを保証し、現在のモディファイキーを元に戻します。指定しない場合、現在押されているモディファイキーが使用されます。"ControlOrMeta" は、WindowsとLinuxでは "Control" に、macOSでは "Meta" に解決されます。
-
NoWaitAfter
bool? (任意)v1.28で追加#非推奨このオプションは効果がありません。
このオプションは効果がありません。
-
Position
Position? (任意)#-
X
[float] -
Y
[float]
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視点を使用します。
-
-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。 -
設定すると、このメソッドは アクション可能性 チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。キーボードmodifiers
は、trial
に関係なく押され、これらのキーが押されたときにのみ表示される要素のテストを可能にすることに注意してください。
-
戻り値
詳細
このメソッドは、次の手順を実行して要素上にホバーします。
- 操作可能性チェックが要素に対して実行されるのを待ちます。ただし、Forceオプションが設定されている場合は除きます。
- 必要に応じて、要素をビューにスクロールします。
- Page.Mouse を使用して、要素の中心、または指定された Position 上にホバーします。
アクション中に要素がDOMから切り離された場合、このメソッドは例外をスローします。
指定された Timeout 時間内にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。タイムアウトをゼロにすると、この機能は無効になります。
InnerHTMLAsync
v1.14で追加element.innerHTML
を返します。
使用例
await Locator.InnerHTMLAsync(options);
引数
options
LocatorInnerHTMLOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
InnerTextAsync
v1.14で追加element.innerText
を返します。
ページ上のテキストをアサートする必要がある場合は、不安定さを避けるために、Expect(Locator).ToHaveTextAsync() を UseInnerText オプション付きで使用することを推奨します。詳細は アサーションガイド を参照してください。
使用例
await Locator.InnerTextAsync(options);
引数
options
LocatorInnerTextOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
InputValueAsync
v1.14で追加一致する <input>
、<textarea>
、または <select>
要素の値を返します。
入力値をアサートする必要がある場合は、不安定さを避けるために Expect(Locator).ToHaveValueAsync() を推奨します。詳細については、アサーションガイド を参照してください。
使用例
String value = await page.GetByRole(AriaRole.Textbox).InputValueAsync();
引数
options
LocatorInputValueOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
詳細
入力、textarea、または select ではない要素をスローします。ただし、要素が関連付けられた control を持つ <label>
要素内にある場合、コントロールの値を返します。
IsCheckedAsync
v1.14で追加要素がチェックされているかどうかを返します。要素がチェックボックスまたはラジオ入力でない場合は例外をスローします。
チェックボックスがチェックされていることをアサートする必要がある場合は、不安定さを避けるために Expect(Locator).ToBeCheckedAsync() を推奨します。詳細については、アサーションガイド を参照してください。
使用例
var isChecked = await page.GetByRole(AriaRole.Checkbox).IsCheckedAsync();
引数
options
LocatorIsCheckedOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
IsDisabledAsync
v1.14で追加要素が無効になっているかどうかを返します。有効 の反対です。
要素が無効になっていることをアサートする必要がある場合は、不安定さを避けるために Expect(Locator).ToBeDisabledAsync() を推奨します。詳細については、アサーションガイド を参照してください。
使用例
Boolean disabled = await page.GetByRole(AriaRole.Button).IsDisabledAsync();
引数
options
LocatorIsDisabledOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
IsEditableAsync
v1.14で追加要素が 編集可能 かどうかを返します。ターゲット要素が <input>
、<textarea>
、<select>
、[contenteditable]
でなく、[aria-readonly]
を許可するロールを持っていない場合、このメソッドはエラーをスローします。
要素が編集可能であることをアサートする必要がある場合は、不安定さを避けるために Expect(Locator).ToBeEditableAsync() を推奨します。詳細については、アサーションガイド を参照してください。
使用例
Boolean editable = await page.GetByRole(AriaRole.Textbox).IsEditableAsync();
引数
options
LocatorIsEditableOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
IsEnabledAsync
v1.14で追加要素が 有効 かどうかを返します。
要素が有効になっていることをアサートする必要がある場合は、不安定さを避けるために Expect(Locator).ToBeEnabledAsync() を推奨します。詳細については、アサーションガイド を参照してください。
使用例
Boolean enabled = await page.GetByRole(AriaRole.Button).IsEnabledAsync();
引数
options
LocatorIsEnabledOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
IsHiddenAsync
v1.14で追加要素が非表示になっているかどうかを返します。可視 の反対です。
要素が非表示になっていることをアサートする必要がある場合は、不安定さを避けるために Expect(Locator).ToBeHiddenAsync() を推奨します。詳細については、アサーションガイド を参照してください。
使用例
Boolean hidden = await page.GetByRole(AriaRole.Button).IsHiddenAsync();
引数
options
LocatorIsHiddenOptions?
(任意)-
Timeout
[float]? (任意)#非推奨このオプションは無視されます。Locator.IsHiddenAsync() は、要素が非表示になるのを待たずにすぐに返します。
-
戻り値
IsVisibleAsync
v1.14で追加要素が 可視 かどうかを返します。
要素が可視であることをアサートする必要がある場合は、不安定さを避けるために Expect(Locator).ToBeVisibleAsync() を推奨します。詳細については、アサーションガイド を参照してください。
使用例
Boolean visible = await page.GetByRole(AriaRole.Button).IsVisibleAsync();
引数
options
LocatorIsVisibleOptions?
(任意)-
Timeout
[float]? (任意)#非推奨このオプションは無視されます。Locator.IsVisibleAsync() は、要素が可視になるのを待たずにすぐに返します。
-
戻り値
Last
v1.14で追加最後に一致する要素へのロケーターを返します。
使用例
var banana = await page.GetByRole(AriaRole.Listitem).Last(1);
戻り値
Locator
v1.14で追加このメソッドは、ロケーターのサブツリー内で指定されたセレクターに一致する要素を見つけます。また、Locator.Filter() メソッドと同様のフィルターオプションも受け入れます。
使用例
Locator.Locator(selectorOrLocator, options);
引数
-
selectorOrLocator
string | Locator#DOM 要素の解決時に使用するセレクターまたはロケーター。
-
options
LocatorLocatorOptions?
(任意)-
この相対ロケーターに一致する要素を含むものに、メソッドの結果を絞り込みます。たとえば、
text=Playwright
を持つarticle
は、<article><div>Playwright</div></article>
に一致します。内部ロケーターは、外部ロケーターに対して相対的である必要があり、ドキュメントルートではなく、外部ロケーターの一致からクエリが開始されます。たとえば、
<article><content><div>Playwright</div></content></article>
内のdiv
を持つcontent
を見つけることができます。ただし、article div
を持つcontent
を探すことは失敗します。内部ロケーターは相対的でなければならず、content
の外部の要素を使用すべきではないためです。外部ロケーターと内部ロケーターは同じフレームに属している必要があることに注意してください。内部ロケーターは FrameLocator を含んではなりません。
-
HasNot
Locator? (オプション)追加: v1.33#内部ロケーターに一致する要素を含まない要素に一致します。内部ロケーターは外部ロケーターに対してクエリされます。たとえば、
div
を持たないarticle
は、<article><span>Playwright</span></article>
に一致します。外部ロケーターと内部ロケーターは同じフレームに属している必要があることに注意してください。内部ロケーターは FrameLocator を含んではなりません。
-
HasNotText|HasNotTextRegex
string? | Regex? (オプション)追加: v1.33#指定されたテキストを内部のどこか(子要素または子孫要素内にある可能性あり)に含まない要素に一致します。string が渡されると、大文字と小文字を区別せずに照合され、部分文字列を検索します。
-
HasText|HasTextRegex
string? | Regex? (任意)#指定されたテキストを内部のどこか(子要素または子孫要素内にある可能性あり)に含む要素に一致します。string が渡されると、大文字と小文字を区別せずに照合され、部分文字列を検索します。たとえば、
"Playwright"
は<article><div>Playwright</div></article>
に一致します。
-
戻り値
Nth
v1.14で追加n 番目に一致する要素へのロケーターを返します。ゼロベースであり、nth(0)
は最初の要素を選択します。
使用例
var banana = await page.GetByRole(AriaRole.Listitem).Nth(2);
引数
戻り値
Or
追加: v1.332 つのロケーターの一方または両方に一致するすべての要素に一致するロケーターを作成します。
両方のロケーターが何かに一致する場合、結果のロケーターは複数のマッチを持つ可能性があり、ロケーターストrictness 違反を引き起こす可能性があることに注意してください。
使用例
「新規メール」ボタンをクリックしたいが、代わりにセキュリティ設定ダイアログが表示される場合があるシナリオを考えてみましょう。この場合、「新規メール」ボタンまたはダイアログのいずれかを待機し、それに応じて対応できます。
「新規メール」ボタンとセキュリティダイアログの両方が画面に表示される場合、「or」ロケーターは両方に一致し、「strict モード違反」エラー がスローされる可能性があります。この場合、Locator.First を使用して、それらのうちの 1 つだけを一致させることができます。
var newEmail = page.GetByRole(AriaRole.Button, new() { Name = "New" });
var dialog = page.GetByText("Confirm security settings");
await Expect(newEmail.Or(dialog).First).ToBeVisibleAsync();
if (await dialog.IsVisibleAsync())
await page.GetByRole(AriaRole.Button, new() { Name = "Dismiss" }).ClickAsync();
await newEmail.ClickAsync();
引数
戻り値
Page
追加: v1.19このロケーターが属するページ。
使用例
Locator.Page
戻り値
PressAsync
v1.14で追加一致する要素にフォーカスし、キーの組み合わせを押します。
使用例
await page.GetByRole(AriaRole.Textbox).PressAsync("Backspace");
引数
-
押すキーの名前または生成する文字(
ArrowLeft
やa
など)。 -
options
LocatorPressOptions?
(任意)-
Delay
[float]? (任意)#keydown
とkeyup
の間の待ち時間(ミリ秒単位)。デフォルトは 0 です。 -
非推奨
このオプションは、将来的にデフォルトで
true
になります。ナビゲーションを開始するアクションは、これらのナビゲーションが発生し、ページのロードが開始されるのを待機します。このフラグを設定することで、待機をオプトアウトできます。このオプションが必要になるのは、アクセスできないページにナビゲートする場合などの例外的なケースのみです。デフォルトは
false
です。 -
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
詳細
要素にフォーカスし、Keyboard.DownAsync() および Keyboard.UpAsync() を使用します。
key は、目的の keyboardEvent.key 値、またはテキストを生成するための単一の文字を指定できます。key 値のスーパーセットは、こちら にあります。キーの例を以下に示します。
F1
- F12
、Digit0
- Digit9
、KeyA
- KeyZ
、Backquote
、Minus
、Equal
、Backslash
、Backspace
、Tab
、Delete
、Escape
、ArrowDown
、End
、Enter
、Home
、Insert
、PageDown
、PageUp
、ArrowRight
、ArrowUp
など。
次の修飾子ショートカットもサポートされています: Shift
、Control
、Alt
、Meta
、ShiftLeft
、ControlOrMeta
。ControlOrMeta
は、Windows および Linux では Control
に、macOS では Meta
に解決されます。
Shift
を押したままにすると、key に対応するテキストが大文字で入力されます。
key が単一の文字の場合、大文字と小文字が区別されるため、値 a
と A
はそれぞれ異なるテキストを生成します。
key: "Control+o"
、key: "Control++
、または key: "Control+Shift+T"
などのショートカットもサポートされています。修飾子とともに指定すると、修飾子が押され、後続のキーが押されている間、保持されます。
PressSequentiallyAsync
追加: v1.38ほとんどの場合、代わりに Locator.FillAsync() を使用する必要があります。ページに特別なキーボード処理がある場合にのみ、キーを 1 つずつ押す必要があります。
要素にフォーカスし、テキスト内の各文字に対して keydown
、keypress
/input
、および keyup
イベントを送信します。
Control
や ArrowDown
などの特殊キーを押すには、Locator.PressAsync() を使用してください。
使用例
await locator.PressSequentiallyAsync("Hello"); // Types instantly
await locator.PressSequentiallyAsync("World", new() { Delay = 100 }); // Types slower, like a user
テキストフィールドに入力してフォームを送信する例
var locator = page.GetByLabel("Password");
await locator.PressSequentiallyAsync("my password");
await locator.PressAsync("Enter");
引数
-
フォーカスされた要素に順番に押す文字の文字列。
-
options
LocatorPressSequentiallyOptions?
(任意)-
Delay
[float]? (任意)#キーを押す間の待ち時間(ミリ秒単位)。デフォルトは 0 です。
-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
ScreenshotAsync
v1.14で追加ロケーターに一致する要素のスクリーンショットを撮ります。
使用例
await page.GetByRole(AriaRole.Link).ScreenshotAsync();
アニメーションを無効にして、スクリーンショットをファイルに保存します
await page.GetByRole(AriaRole.Link).ScreenshotAsync(new() {
Animations = ScreenshotAnimations.Disabled,
Path = "link.png"
});
引数
options
LocatorScreenshotOptions?
(任意)-
Animations
enum ScreenshotAnimations { Disabled, Allow }?
(任意)#"disabled"
に設定すると、CSS アニメーション、CSS トランジション、および Web アニメーションを停止します。アニメーションは、その期間に応じて異なる扱いを受けます。- 有限のアニメーションは完了まで早送りされるため、
transitionend
イベントが発生します。 - 無限のアニメーションは初期状態にキャンセルされ、スクリーンショット後に再度再生されます。
デフォルトは、アニメーションをそのままにする
"allow"
です。 - 有限のアニメーションは完了まで早送りされるため、
-
Caret
enum ScreenshotCaret { Hide, Initial }?
(任意)#"hide"
に設定すると、スクリーンショットはテキストカーソルを非表示にします。"initial"
に設定すると、テキストカーソルの動作は変更されません。デフォルトは"hide"
です。 -
Mask
IEnumerable?<Locator> (任意)#スクリーンショットを撮るときにマスクする必要があるロケーターを指定します。マスクされた要素は、ピンク色のボックス
#FF00FF
(MaskColor でカスタマイズ) でオーバーレイされ、そのバウンディングボックスを完全に覆います。マスクは非表示の要素にも適用されます。可視要素のみをマッチング して、それを無効にしてください。 -
MaskColor
string? (任意)追加: v1.35#マスクされた要素のオーバーレイボックスの色を、CSS カラー形式 で指定します。デフォルトの色はピンク
#FF00FF
です。 -
デフォルトの白い背景を非表示にし、透明度のあるスクリーンショットのキャプチャを許可します。
jpeg
画像には適用されません。デフォルトはfalse
です。 -
イメージを保存するファイルパス。スクリーンショットのタイプは、ファイル拡張子から推測されます。Path が相対パスの場合、現在の作業ディレクトリからの相対パスとして解決されます。パスが指定されていない場合、イメージはディスクに保存されません。
-
画像の品質、0〜100 の範囲。
png
画像には適用されません。 -
Scale
enum ScreenshotScale { Css, Device }?
(任意)#"css"
に設定すると、スクリーンショットはページ上の CSS ピクセルごとに 1 ピクセルになります。高 DPI デバイスの場合、これによりスクリーンショットが小さくなります。"device"
オプションを使用すると、デバイスピクセルごとに 1 ピクセルが生成されるため、高 DPI デバイスのスクリーンショットは 2 倍以上に大きくなります。デフォルトは
"device"
です。 -
スクリーンショットを作成中に適用するスタイルシートのテキスト。これは、動的な要素を非表示にしたり、要素を非表示にしたり、プロパティを変更して、再現可能なスクリーンショットを作成するのに役立つ場所です。このスタイルシートは Shadow DOM を貫通し、内部フレームに適用されます。
-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。 -
Type
enum ScreenshotType { Png, Jpeg }?
(任意)#スクリーンショットのタイプを指定します。デフォルトは
png
です。
-
戻り値
詳細
このメソッドは、ロケーターに一致する特定の要素のサイズと位置にクリップされたページのスクリーンショットをキャプチャします。要素が他の要素で覆われている場合、スクリーンショットに実際に表示されるわけではありません。要素がスクロール可能なコンテナーである場合、現在スクロールされているコンテンツのみがスクリーンショットに表示されます。
このメソッドは、操作可能性 チェックを待ってから、スクリーンショットを撮る前に要素をビューにスクロールします。要素が DOM から切り離されている場合、メソッドはエラーをスローします。
キャプチャされたスクリーンショットを含むバッファーを返します。
ScrollIntoViewIfNeededAsync
v1.14で追加このメソッドは、操作可能性 チェックを待ってから、IntersectionObserver の ratio
で定義されているように、要素が完全に表示されていない限り、要素をビューにスクロールしようとします。
スクロールの代替方法については、スクロール を参照してください。
使用例
await Locator.ScrollIntoViewIfNeededAsync(options);
引数
options
LocatorScrollIntoViewIfNeededOptions?
(任意)-
Timeout
[float]? (任意)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
SelectOptionAsync
v1.14で追加<select>
でオプションを 1 つまたは複数選択します。
使用例
<select multiple>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
</select>
// single selection matching the value or label
await element.SelectOptionAsync(new[] { "blue" });
// single selection matching the label
await element.SelectOptionAsync(new[] { new SelectOptionValue() { Label = "blue" } });
// multiple selection for blue, red and second option
await element.SelectOptionAsync(new[] { "red", "green", "blue" });
引数
values
string | ElementHandle | IEnumerable |SelectOption
| IEnumerable | IEnumerable?#-
Value
string? (オプション)option.value
でマッチングします。オプションです。 -
Label
string? (オプション)option.label
でマッチングします。オプションです。 -
Index
int? (オプション)インデックスでマッチングします。オプションです。
<select>
がmultiple
属性を持つ場合、マッチするすべてのオプションが選択され、そうでない場合は、渡されたオプションのいずれかにマッチする最初のオプションのみが選択されます。文字列値は、値とラベルの両方にマッチングします。指定されたすべてのプロパティが一致する場合、オプションはマッチングしているとみなされます。-
options
LocatorSelectOptionOptions?
(オプション)-
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
詳細
このメソッドは、操作可能性のチェックを待ち、指定されたすべてのオプションが <select>
要素に存在することを待ってから、これらのオプションを選択します。
ターゲット要素が <select>
要素でない場合、このメソッドはエラーをスローします。ただし、要素が関連付けられた control を持つ <label>
要素内にある場合、代わりに control が使用されます。
正常に選択されたオプション値の配列を返します。
提供されたすべてのオプションが選択されると、change
および input
イベントをトリガーします。
SelectTextAsync
v1.14で追加このメソッドは、操作可能性のチェックを待ち、その後要素にフォーカスし、そのテキストコンテンツをすべて選択します。
要素が関連付けられた control を持つ <label>
要素内にある場合、代わりに control 内のテキストにフォーカスして選択します。
使用例
await Locator.SelectTextAsync(options);
引数
options
LocatorSelectTextOptions?
(オプション)-
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
SetCheckedAsync
追加: v1.15チェックボックスまたはラジオ要素の状態を設定します。
使用例
await page.GetByRole(AriaRole.Checkbox).SetCheckedAsync(true);
引数
-
チェックボックスをチェックするか、チェックを外すか。
-
options
LocatorSetCheckedOptions?
(オプション)-
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
Position
Position? (オプション)#-
X
[float] -
Y
[float]
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視点を使用します。
-
-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。 -
設定すると、このメソッドは アクション可能性 チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。
-
戻り値
詳細
このメソッドは、次の手順を実行して要素をチェックまたはチェック解除します。
- マッチした要素がチェックボックスまたはラジオ入力であることを確認します。そうでない場合、このメソッドは例外をスローします。
- 要素がすでに正しいチェック状態になっている場合、このメソッドはすぐに戻ります。
- Force オプションが設定されていない限り、マッチした要素に対する操作可能性チェックを待ちます。チェック中に要素がデタッチされた場合、アクション全体が再試行されます。
- 必要に応じて、要素をビューにスクロールします。
- Page.Mouse を使用して、要素の中心をクリックします。
- 要素がチェックまたはチェック解除されたことを確認します。そうでない場合、このメソッドは例外をスローします。
指定された Timeout 中にすべてのステップが完了しなかった場合、このメソッドは TimeoutError をスローします。ゼロのタイムアウトを渡すと、これは無効になります。
SetInputFilesAsync
v1.14で追加ファイルまたは複数のファイルを <input type=file>
にアップロードします。[webkitdirectory]
属性を持つ入力の場合、単一のディレクトリパスのみがサポートされます。
使用例
// Select one file
await page.GetByLabel("Upload file").SetInputFilesAsync("myfile.pdf");
// Select multiple files
await page.GetByLabel("Upload files").SetInputFilesAsync(new[] { "file1.txt", "file12.txt" });
// Select a directory
await page.GetByLabel("Upload directory").SetInputFilesAsync("mydir");
// Remove all the selected files
await page.GetByLabel("Upload file").SetInputFilesAsync(new[] {});
// Upload buffer from memory
await page.GetByLabel("Upload file").SetInputFilesAsync(new FilePayload
{
Name = "file.txt",
MimeType = "text/plain",
Buffer = System.Text.Encoding.UTF8.GetBytes("this is a test"),
});
引数
files
string | IEnumerable<string> |FilePayload
| IEnumerable<FilePayload
>#options
LocatorSetInputFilesOptions?
(オプション)-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
詳細
ファイル入力の値をこれらのファイルパスまたはファイルに設定します。filePaths
の一部が相対パスである場合、それらは現在の作業ディレクトリからの相対パスとして解決されます。空の配列の場合、選択されたファイルをクリアします。
このメソッドは、Locator が input 要素を指していることを期待しています。ただし、要素が関連付けられた control を持つ <label>
要素内にある場合、代わりに control をターゲットにします。
TapAsync
v1.14で追加locator にマッチする要素に対してタップジェスチャーを実行します。タッチイベントを手動でディスパッチして他のジェスチャーをエミュレートする例については、レガシーなタッチイベントのエミュレーションページを参照してください。
使用例
await Locator.TapAsync(options);
引数
options
LocatorTapOptions?
(オプション)-
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
Modifiers
IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }
> (オプション)#押すモディファイキー。操作中はこれらのモディファイキーのみが押されていることを保証し、現在のモディファイキーを元に戻します。指定しない場合、現在押されているモディファイキーが使用されます。"ControlOrMeta" は、WindowsとLinuxでは "Control" に、macOSでは "Meta" に解決されます。
-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
Position
Position? (オプション)#-
X
[float] -
Y
[float]
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視点を使用します。
-
-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。 -
設定すると、このメソッドは アクション可能性 チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。キーボードmodifiers
は、trial
に関係なく押され、これらのキーが押されたときにのみ表示される要素のテストを可能にすることに注意してください。
-
戻り値
詳細
このメソッドは、次の手順を実行して要素をタップします。
- Force オプションが設定されていない限り、要素に対する操作可能性チェックを待ちます。
- 必要に応じて、要素をビューにスクロールします。
- Page.Touchscreen を使用して、要素の中央、または指定された Position をタップします。
アクション中に要素がDOMから切り離された場合、このメソッドは例外をスローします。
指定された Timeout 中にすべてのステップが完了しなかった場合、このメソッドは TimeoutError をスローします。ゼロのタイムアウトを渡すと、これは無効になります。
element.tap()
は、ブラウザコンテキストの hasTouch
オプションが true に設定されている必要があります。
TextContentAsync
v1.14で追加node.textContent
を返します。
ページ上のテキストをアサートする必要がある場合は、不安定さを避けるために、Expect(Locator).ToHaveTextAsync() を使用することを推奨します。詳細は アサーションガイド を参照してください。
使用例
await Locator.TextContentAsync(options);
引数
options
LocatorTextContentOptions?
(オプション)-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
UncheckAsync
v1.14で追加チェックボックスまたはラジオ要素がチェックされていないことを確認します。
使用例
await page.GetByRole(AriaRole.Checkbox).UncheckAsync();
引数
options
LocatorUncheckOptions?
(オプション)-
アクション可能性 チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
Position
Position? (オプション)#-
X
[float] -
Y
[float]
要素のパディングボックスの左上隅を基準に使用するポイント。指定しない場合は、要素の可視点を使用します。
-
-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。 -
設定すると、このメソッドは アクション可能性 チェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。
-
戻り値
詳細
このメソッドは、次の手順を実行して要素をチェック解除します。
- 要素がチェックボックスまたはラジオ入力であることを確認します。そうでない場合、このメソッドは例外をスローします。要素がすでにチェックされていない場合、このメソッドはすぐに戻ります。
- Force オプションが設定されていない限り、要素に対する操作可能性チェックを待ちます。
- 必要に応じて、要素をビューにスクロールします。
- Page.Mouse を使用して、要素の中心をクリックします。
- 要素がチェック解除されたことを確認します。そうでない場合、このメソッドは例外をスローします。
アクション中に要素がDOMから切り離された場合、このメソッドは例外をスローします。
指定された Timeout 中にすべてのステップが完了しなかった場合、このメソッドは TimeoutError をスローします。ゼロのタイムアウトを渡すと、これは無効になります。
WaitForAsync
追加: v1.16locator で指定された要素が State オプションを満たすときに戻ります。
ターゲット要素がすでに条件を満たしている場合、メソッドはすぐに戻ります。それ以外の場合は、条件が満たされるまで最大 Timeout ミリ秒間待ちます。
使用例
var orderSent = page.Locator("#order-sent");
orderSent.WaitForAsync();
引数
options
LocatorWaitForOptions?
(オプション)-
State
enum WaitForSelectorState { Attached, Detached, Visible, Hidden }?
(オプション)#デフォルトは
'visible'
です。次のいずれかになります。'attached'
- 要素が DOM に存在するのを待ちます。'detached'
- 要素が DOM に存在しなくなるのを待ちます。'visible'
- 要素が空でないバウンディングボックスを持ち、visibility:hidden
がないのを待ちます。コンテンツがない要素やdisplay:none
が設定された要素は空のバウンディングボックスを持ち、visible とはみなされないことに注意してください。'hidden'
- 要素が DOM からデタッチされるか、空のバウンディングボックスを持つか、またはvisibility:hidden
になるのを待ちます。これは'visible'
オプションの反対です。
-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
非推奨
ElementHandleAsync
v1.14で追加後者は本質的に競争状態になりやすいため、常に ElementHandle よりも Locator とウェブアサーションを使用することを推奨します。
指定された locator を最初の一致する DOM 要素に解決します。一致する要素がない場合、1 つ現れるまで待ちます。複数の要素が locator に一致する場合、例外をスローします。
使用例
await Locator.ElementHandleAsync(options);
引数
options
LocatorElementHandleOptions?
(オプション)-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値
ElementHandlesAsync
v1.14で追加後者は本質的に競争状態になりやすいため、常に ElementHandle よりも Locator とウェブアサーションを使用することを推奨します。
指定された locator をすべての一致する DOM 要素に解決します。一致する要素がない場合、空のリストを返します。
使用例
await Locator.ElementHandlesAsync();
戻り値
TypeAsync
v1.14で追加ほとんどの場合、代わりに Locator.FillAsync() を使用する必要があります。ページ上に特別なキーボード処理がある場合にのみ、キーを 1 つずつ押す必要があります。この場合は、Locator.PressSequentiallyAsync() を使用してください。
要素にフォーカスし、テキスト内の各文字に対して keydown
、keypress
/input
、および keyup
イベントを送信します。
Control
や ArrowDown
などの特殊キーを押すには、Locator.PressAsync() を使用してください。
使用例
引数
-
フォーカスされた要素に入力するテキスト。
-
options
LocatorTypeOptions?
(オプション)-
Delay
[float]? (オプション)#キーを押す間の待ち時間(ミリ秒単位)。デフォルトは 0 です。
-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
Timeout
[float]? (オプション)#最大タイムアウト時間(ミリ秒単位)。デフォルトは
30000
(30秒) です。タイムアウトを無効にするには0
を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() または Page.SetDefaultTimeout() メソッドを使用して変更できます。
-
戻り値