Locator
Locatorは、Playwrightの自動待機と再試行機能の中心的な要素です。簡単に言うと、Locatorは、任意の時点でページ上の要素を見つける方法を表します。Page.Locator()メソッドを使用してLocatorを作成できます。
メソッド
AllAsync
追加: v1.29locatorが要素のリストを指している場合、これはそれらの要素をそれぞれ指す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?
(オプション)-
各要素のシンボリック参照を生成します。スナップショットをキャプチャした直後に
aria-ref=<ref>
locatorを使用して、要素に対してアクションを実行できます。 -
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]
要素でない場合、このメソッドはエラーをスローします。ただし、要素が、関連付けられたコントロールを持つ<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()メソッドを使用して変更できます。 -
設定すると、このメソッドはactionabilityチェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。キーボードのmodifiers
は、それらのキーが押された場合にのみ表示される要素をテストできるように、trial
に関係なく押されることに注意してください。
-
戻り値
詳細
このメソッドは、次の手順を実行して要素をクリックします。
- Forceオプションが設定されていない限り、要素のactionabilityチェックを待機します。
- 必要に応じて、要素をビューにスクロールします。
- Page.Mouseを使用して、要素の中心または指定されたPositionをクリックします。
- NoWaitAfterオプションが設定されていない限り、開始されたナビゲーションが成功または失敗するのを待ちます。
アクション中に要素がDOMからデタッチされた場合、このメソッドは例外をスローします。
指定されたTimeout中にすべての手順が完了しなかった場合、このメソッドはTimeoutErrorをスローします。ゼロタイムアウトを渡すと、これが無効になります。
ContentFrame
追加: v1.43このロケーターと同じ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ロケーターに一致する要素の数を返します。
ページ上の要素の数をアサートする必要がある場合は、不安定さを避けるために、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()メソッドを使用して変更できます。 -
設定すると、このメソッドはactionabilityチェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。キーボードのmodifiers
は、それらのキーが押された場合にのみ表示される要素をテストできるように、trial
に関係なく押されることに注意してください。
-
戻り値
詳細
このメソッドは、次の手順を実行して要素をダブルクリックします。
- Forceオプションが設定されていない限り、要素のactionabilityチェックを待機します。
- 必要に応じて、要素をビューにスクロールします。
- 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 },
});
引数
-
ドラッグ先の要素のロケーター。
-
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
です。アクションを実行せずに要素がアクションの準備ができるまで待機するのに役立ちます。
-
戻り値
詳細
このメソッドは、ロケーターを別のターゲットロケーターまたはターゲット位置にドラッグします。最初にソース要素に移動し、mousedown
を実行し、次にターゲット要素または位置に移動してmouseup
を実行します。
EvaluateAsync
追加: v1.14ページ内でJavaScriptコードを実行し、一致する要素を引数として取得します。
使い方
引数
-
ブラウザコンテキストで評価されるJavaScript式。式が関数として評価される場合、関数は自動的に呼び出されます。
-
arg
EvaluationArgument? (オプション)#expressionに渡すオプションの引数。
-
options
LocatorEvaluateOptions?
(オプション)-
Timeout
[float]? (オプション)#評価前にロケーターを待機する最大時間(ミリ秒単位)。ロケーターが解決された後、評価自体はタイムアウトによって制限されないことに注意してください。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。
-
戻り値
- [object]#
詳細
expressionの戻り値を返します。これは、一致する要素を最初の引数として、argを2番目の引数として呼び出されます。
expressionが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]#
詳細
expressionの戻り値を返します。これは、一致するすべての要素の配列を最初の引数として、argを2番目の引数として呼び出されます。
expressionがPromiseを返す場合、このメソッドはプロミスが解決されるのを待機し、その値を返します。
expressionがスローまたは拒否された場合、このメソッドはスローします。
EvaluateHandleAsync
追加: v1.14ページ内でJavaScriptコードを実行し、一致する要素を引数として取得し、結果を含むJSHandleを返します。
使い方
await Locator.EvaluateHandleAsync(expression, arg, options);
引数
-
ブラウザコンテキストで評価されるJavaScript式。式が関数として評価される場合、関数は自動的に呼び出されます。
-
arg
EvaluationArgument? (オプション)#expressionに渡すオプションの引数。
-
options
LocatorEvaluateHandleOptions?
(オプション)-
Timeout
[float]? (オプション)#評価前にロケーターを待機する最大時間(ミリ秒単位)。ロケーターが解決された後、評価自体はタイムアウトによって制限されないことに注意してください。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。
-
戻り値
詳細
expressionの戻り値をJSHandleとして返します。これは、一致する要素を最初の引数として、argを2番目の引数として呼び出されます。
Locator.EvaluateAsync()とLocator.EvaluateHandleAsync()の唯一の違いは、Locator.EvaluateHandleAsync()がJSHandleを返すことです。
expressionが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 ロール、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>
titleテキストで検索した後、問題の数をチェックできます。
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()メソッドを使用して変更できます。 -
設定すると、このメソッドはactionabilityチェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。キーボードのmodifiers
は、それらのキーが押された場合にのみ表示される要素をテストできるように、trial
に関係なく押されることに注意してください。
-
戻り値
詳細
このメソッドは、次の手順を実行して要素にマウスオーバーします。
- 操作性のチェックが要素に対して完了するまで待機します。ただし、Forceオプションが設定されている場合は除きます。
- 必要に応じて、要素をビューにスクロールします。
- Page.Mouseを使用して、要素の中心、または指定されたPositionにマウスオーバーします。
アクション中に要素がDOMからデタッチされた場合、このメソッドは例外をスローします。
指定されたTimeout中にすべての手順が完了しなかった場合、このメソッドはTimeoutErrorをスローします。タイムアウトをゼロにすると、これは無効になります。
InnerHTMLAsync
追加: v1.14element.innerHTML
を返します。
使い方
await Locator.InnerHTMLAsync(options);
引数
options
LocatorInnerHTMLOptions?
(省略可能)-
Timeout
[float]? (省略可能)#最大時間(ミリ秒)。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、BrowserContext.SetDefaultTimeout()またはPage.SetDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
InnerTextAsync
追加: v1.14element.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()メソッドを使用して変更できます。
-
戻り値
詳細
入力、テキストエリア、またはセレクトではない要素をスローします。ただし、要素が関連付けられたコントロールを持つ<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.14n番目に一致する要素へのロケーターを返します。ゼロベースで、nth(0)
は最初の要素を選択します。
使い方
var banana = await page.GetByRole(AriaRole.Listitem).Nth(2);
引数
戻り値
Or
追加: v1.332つのロケーターのいずれか、または両方に一致するすべての要素に一致するロケーターを作成します。
両方のロケーターが何かに一致する場合、結果のロケーターには複数のマッチが存在する可能性があり、ロケーターの厳密性に違反する可能性があることに注意してください。
使い方
「新しいメール」ボタンをクリックしたいが、セキュリティ設定ダイアログが代わりに表示されることがあるシナリオを考えてみましょう。この場合、「新しいメール」ボタンまたはダイアログのいずれかを待ち、それに応じて対応できます。
「新しいメール」ボタンとセキュリティダイアログの両方が画面に表示される場合、「or」ロケーターは両方に一致し、「厳密モード違反」エラーが発生する可能性があります。この場合、Locator.First を使用して、どちらか一方のみに一致させることができます。
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 が1つの文字である場合、大文字と小文字が区別されるため、値 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"
です。 -
Style
string? (オプション)追加: v1.41#スクリーンショットの作成時に適用するスタイルシートのテキスト。これは、動的な要素を非表示にしたり、要素を非表示にしたり、要素のプロパティを変更して、繰り返し可能なスクリーンショットを作成するのに役立ちます。このスタイルシートは 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>
でオプションを選択します。
使い方
<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>
要素でない場合、このメソッドはエラーをスローします。ただし、要素が、関連付けられた コントロールを持つ <label>
要素内にある場合は、代わりにコントロールが使用されます。
正常に選択されたオプション値の配列を返します。
指定されたすべてのオプションが選択されると、change
および input
イベントをトリガーします。
SelectTextAsync
追加: v1.14このメソッドは、操作可能性のチェックを待機し、要素にフォーカスを当てて、そのすべてのテキストコンテンツを選択します。
要素が、関連付けられた コントロールを持つ <label>
要素内にある場合は、代わりにコントロールにフォーカスを当ててテキストを選択します。
使い方
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 要素を指していることを想定しています。ただし、要素が、関連付けられた コントロールを持つ <label>
要素内にある場合は、代わりにコントロールをターゲットにします。
TapAsync
追加: v1.14ロケーターに一致する要素に対してタップジェスチャを実行します。タッチイベントを手動でディスパッチして他のジェスチャをエミュレートする例については、従来のタッチイベントのエミュレートページを参照してください。
使い方
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()メソッドを使用して変更できます。 -
設定すると、このメソッドはactionabilityチェックのみを実行し、アクションをスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機するのに役立ちます。キーボードのmodifiers
は、それらのキーが押された場合にのみ表示される要素をテストできるように、trial
に関係なく押されることに注意してください。
-
戻り値
詳細
このメソッドは、次の手順を実行して要素をタップします。
- Force オプションが設定されていない限り、要素の操作可能性チェックを待機します。
- 必要に応じて、要素をビューにスクロールします。
- Page.Touchscreen を使用して、要素の中心、または指定された Position をタップします。
アクション中に要素がDOMからデタッチされた場合、このメソッドは例外をスローします。
指定された Timeout 中にすべての手順が完了しなかった場合、このメソッドは TimeoutError をスローします。ゼロのタイムアウトを渡すと、これは無効になります。
element.tap()
には、ブラウザコンテキストの hasTouch
オプションが true に設定されている必要があります。
TextContentAsync
追加: v1.14node.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.16ロケーターで指定された要素が 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
の要素には空の境界ボックスがあり、表示されているとは見なされません。'hidden'
- 要素が DOM からデタッチされているか、空の境界ボックスがあるか、visibility:hidden
であることを待ちます。これは'visible'
オプションの反対です。
-
Timeout
[float]? (省略可能)#最大時間(ミリ秒)。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、BrowserContext.SetDefaultTimeout()またはPage.SetDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
非推奨
ElementHandleAsync
追加: v1.14ElementHandles は本質的に競争状態になりやすいため、常に Locators と Web アサーションを使用することを優先してください。
指定されたロケーターを最初に一致する DOM 要素に解決します。 一致する要素がない場合は、1 つ待ちます。 複数の要素がロケーターに一致する場合は、例外をスローします。
使い方
await Locator.ElementHandleAsync(options);
引数
options
LocatorElementHandleOptions?
(省略可能)-
Timeout
[float]? (省略可能)#最大時間(ミリ秒)。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには、0
を渡します。デフォルト値は、BrowserContext.SetDefaultTimeout()またはPage.SetDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
ElementHandlesAsync
追加: v1.14ElementHandles は本質的に競争状態になりやすいため、常に Locators と Web アサーションを使用することを優先してください。
指定されたロケーターを、一致するすべての 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()メソッドを使用して変更できます。
-
戻り値