ElementHandle
- 継承元: JSHandle
ElementHandleはページ内のDOM要素を表します。ElementHandleはPage.querySelector()メソッドで作成できます。
ElementHandleの使用は非推奨であり、代わりにLocatorオブジェクトとウェブファーストのアサーションを使用してください。
ElementHandle hrefElement = page.querySelector("a");
hrefElement.click();
JSHandle.dispose()でハンドルが破棄されない限り、ElementHandleはDOM要素がガベージコレクションされるのを防ぎます。ElementHandleは、その元となるフレームがナビゲートされると自動的に破棄されます。
ElementHandleインスタンスは、Page.evalOnSelector()およびPage.evaluate()メソッドの引数として使用できます。
LocatorとElementHandleの違いは、ElementHandleが特定の要素を指すのに対し、Locatorは要素を取得する方法のロジックを捉える点です。
以下の例では、ハンドルはページ上の特定のDOM要素を指しています。その要素のテキストが変更されたり、Reactによって全く異なるコンポーネントがレンダリングされたりしても、ハンドルは依然としてそのDOM要素を指しています。これは予期せぬ動作につながる可能性があります。
ElementHandle handle = page.querySelector("text=Submit");
handle.hover();
handle.click();
ロケーターを使用すると、`element`が使用されるたびに、セレクターを使用してページ内で最新のDOM要素が特定されます。したがって、以下のスニペットでは、基になるDOM要素は2回特定されることになります。
Locator locator = page.getByText("Submit");
locator.hover();
locator.click();
メソッド
boundingBox
v1.9より前に追加このメソッドは、要素の境界ボックスを返します。要素が非表示の場合はnull
を返します。境界ボックスはメインフレームのビューポート(通常はブラウザウィンドウと同じ)を基準に計算されます。
スクロールは返される境界ボックスに影響します。これはElement.getBoundingClientRectと同様です。つまり、x
やy
が負になることがあります。
子フレームの要素は、Element.getBoundingClientRectとは異なり、メインフレームを基準とした境界ボックスを返します。
ページが静的であると仮定すると、入力操作を実行するために境界ボックスの座標を使用することは安全です。たとえば、次のスニペットは要素の中心をクリックするはずです。
使用法
BoundingBox box = elementHandle.boundingBox();
page.mouse().click(box.x + box.width / 2, box.y + box.height / 2);
戻り値
contentFrame
v1.9より前に追加iframeノードを参照するElementHandleのコンテンツフレームを返します。それ以外の場合はnull
を返します。
使用法
ElementHandle.contentFrame();
戻り値
ownerFrame
v1.9より前に追加指定された要素を含むフレームを返します。
使用法
ElementHandle.ownerFrame();
戻り値
waitForElementState
v1.9より前に追加要素がstateを満たすと返ります。
stateパラメーターに応じて、このメソッドはactionabilityチェックのいずれかが通過するまで待機します。このメソッドは、`"hidden"`状態を待機している場合を除き、待機中に要素がデタッチされると例外をスローします。
"visible"
要素が表示されるまで待機します。"hidden"
要素が非表示になるか、アタッチされていない状態になるまで待機します。hidden状態を待機している場合、要素がデタッチされても例外はスローされません。"stable"
要素が表示され、かつ安定するまで待機します。"enabled"
要素が有効になるまで待機します。"disabled"
要素が無効になるまで待機します。"editable"
要素が編集可能になるまで待機します。
要素がsetTimeoutミリ秒内に条件を満たさない場合、このメソッドは例外をスローします。
使用法
ElementHandle.waitForElementState(state);
ElementHandle.waitForElementState(state, options);
引数
-
state
enum ElementState { VISIBLE, HIDDEN, STABLE, ENABLED, DISABLED, EDITABLE }
#待機する状態。詳細は以下を参照してください。
-
options
ElementHandle.WaitForElementStateOptions
(任意)-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
非推奨
check
v1.9より前に追加代わりにロケーターベースのLocator.check()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは以下の手順を実行して要素をチェックします。
- 要素がチェックボックスまたはラジオ入力であることを確認します。そうでない場合、このメソッドは例外をスローします。要素がすでにチェックされている場合、このメソッドは直ちに返ります。
- setForceオプションが設定されていない限り、要素に対するactionabilityチェックを待機します。
- 必要に応じて要素をビューにスクロールします。
- Page.mouse()を使用して要素の中心をクリックします。
- 要素がチェックされたことを確認します。そうでない場合、このメソッドは例外をスローします。
アクション中に要素がDOMからデタッチされた場合、このメソッドは例外をスローします。
すべてのステップの合計が指定されたsetTimeout内に完了しなかった場合、このメソッドはTimeoutErrorをスローします。タイムアウトに0を渡すと、これを無効にします。
使用法
ElementHandle.check();
ElementHandle.check(options);
引数
options
ElementHandle.CheckOptions
(任意)-
操作可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
setPosition
Position (任意)追加されたバージョン: v1.11#要素のパディングボックスの左上隅を基準に使用する点。指定されていない場合、要素の表示されているいずれかの点を使用します。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。 -
setTrial
boolean (任意)追加されたバージョン: v1.11#設定した場合、このメソッドは操作可能性チェックのみを実行し、アクションはスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機する場合に便利です。
-
戻り値
click
v1.9より前に追加代わりにロケーターベースのLocator.click()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは以下の手順を実行して要素をクリックします。
- setForceオプションが設定されていない限り、要素に対するactionabilityチェックを待機します。
- 必要に応じて要素をビューにスクロールします。
- Page.mouse()を使用して要素の中心、または指定されたsetPositionをクリックします。
- setNoWaitAfterオプションが設定されていない限り、開始されたナビゲーションが成功するか失敗するまで待機します。
アクション中に要素がDOMからデタッチされた場合、このメソッドは例外をスローします。
すべてのステップの合計が指定されたsetTimeout内に完了しなかった場合、このメソッドはTimeoutErrorをスローします。タイムアウトに0を渡すと、これを無効にします。
使用法
ElementHandle.click();
ElementHandle.click(options);
引数
options
ElementHandle.ClickOptions
(任意)-
setButton
enum MouseButton { LEFT, RIGHT, MIDDLE }
(任意)#デフォルトは
left
です。 -
デフォルトは1です。UIEvent.detailを参照してください。
-
mousedown
とmouseup
の間の待機時間(ミリ秒単位)。デフォルトは0です。 -
操作可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
setModifiers
List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }
> (任意)#押す修飾キー。操作中にこれらの修飾キーのみが押され、その後現在の修飾キーが元に戻されることを保証します。指定されていない場合、現在押されている修飾キーが使用されます。"ControlOrMeta"はWindowsおよびLinuxでは"Control"に、macOSでは"Meta"に解決されます。
-
非推奨
このオプションは将来的に
true
がデフォルトになります。ナビゲーションを開始するアクションは、これらのナビゲーションが発生し、ページの読み込みが開始されるまで待機します。このフラグを設定することで、待機をオプトアウトできます。このオプションは、アクセスできないページにナビゲートするなどの例外的な場合にのみ必要です。デフォルトは
false
です。 -
setPosition
Position (任意)#要素のパディングボックスの左上隅を基準に使用する点。指定されていない場合、要素の表示されているいずれかの点を使用します。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。 -
setTrial
boolean (任意)追加されたバージョン: v1.11#設定した場合、このメソッドは操作可能性チェックのみを実行し、アクションはスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機する場合に便利です。
-
戻り値
dblclick
v1.9より前に追加代わりにロケーターベースのLocator.dblclick()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは以下の手順を実行して要素をダブルクリックします。
- setForceオプションが設定されていない限り、要素に対するactionabilityチェックを待機します。
- 必要に応じて要素をビューにスクロールします。
- Page.mouse()を使用して要素の中心、または指定されたsetPositionをダブルクリックします。
アクション中に要素がDOMからデタッチされた場合、このメソッドは例外をスローします。
すべてのステップの合計が指定されたsetTimeout内に完了しなかった場合、このメソッドはTimeoutErrorをスローします。タイムアウトに0を渡すと、これを無効にします。
elementHandle.dblclick()
は、2つのclick
イベントと1つのdblclick
イベントをディスパッチします。
使用法
ElementHandle.dblclick();
ElementHandle.dblclick(options);
引数
options
ElementHandle.DblclickOptions
(任意)-
setButton
enum MouseButton { LEFT, RIGHT, MIDDLE }
(任意)#デフォルトは
left
です。 -
mousedown
とmouseup
の間の待機時間(ミリ秒単位)。デフォルトは0です。 -
操作可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
setModifiers
List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }
> (任意)#押す修飾キー。操作中にこれらの修飾キーのみが押され、その後現在の修飾キーが元に戻されることを保証します。指定されていない場合、現在押されている修飾キーが使用されます。"ControlOrMeta"はWindowsおよびLinuxでは"Control"に、macOSでは"Meta"に解決されます。
-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
setPosition
Position (任意)#要素のパディングボックスの左上隅を基準に使用する点。指定されていない場合、要素の表示されているいずれかの点を使用します。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。 -
setTrial
boolean (任意)追加されたバージョン: v1.11#設定した場合、このメソッドは操作可能性チェックのみを実行し、アクションはスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機する場合に便利です。
-
戻り値
dispatchEvent
v1.9より前に追加代わりにロケーターベースのLocator.dispatchEvent()を使用してください。ロケーターについて詳しくはこちら。
以下のスニペットは、要素に対してclick
イベントをディスパッチします。要素の表示状態に関係なく、click
がディスパッチされます。これはelement.click()を呼び出すことと同等です。
使用法
elementHandle.dispatchEvent("click");
内部的には、指定されたtypeに基づいてイベントのインスタンスを作成し、eventInitプロパティで初期化し、要素に対してディスパッチします。イベントはデフォルトでcomposed
、cancelable
、バブルします。
eventInitはイベント固有であるため、初期プロパティのリストについてはイベントのドキュメントを参照してください。
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
ライブオブジェクトをイベントに渡したい場合は、JSHandle
をプロパティ値として指定することもできます。
// Note you can only create DataTransfer in Chromium and Firefox
JSHandle dataTransfer = page.evaluateHandle("() => new DataTransfer()");
Map<String, Object> arg = new HashMap<>();
arg.put("dataTransfer", dataTransfer);
elementHandle.dispatchEvent("dragstart", arg);
引数
-
DOMイベントタイプ:
"click"
、"dragstart"
など。 -
eventInit
EvaluationArgument (任意)#任意のイベント固有の初期化プロパティ。
戻り値
evalOnSelector
追加されたバージョン: v1.9このメソッドは、要素が操作可能性チェックを通過するのを待たないため、不安定なテストにつながる可能性があります。代わりにLocator.evaluate()、その他のLocatorヘルパーメソッド、またはウェブファーストのアサーションを使用してください。
expressionの戻り値を返します。
このメソッドは、ElementHandle
のサブツリー内で指定されたセレクターに一致する要素を見つけ、それをexpressionの最初の引数として渡します。セレクターに一致する要素がない場合、このメソッドはエラーをスローします。
expressionがPromiseを返す場合、ElementHandle.evalOnSelector()はそのPromiseが解決されるのを待機し、その値を返します。
使用法
ElementHandle tweetHandle = page.querySelector(".tweet");
assertEquals("100", tweetHandle.evalOnSelector(".like", "node => node.innerText"));
assertEquals("10", tweetHandle.evalOnSelector(".retweets", "node => node.innerText"));
引数
-
クエリ対象のセレクター。
-
ブラウザコンテキストで評価されるJavaScript式。式が関数に評価される場合、その関数は自動的に呼び出されます。
-
arg
EvaluationArgument (任意)#expressionに渡す任意の引数。
戻り値
evalOnSelectorAll
追加されたバージョン: v1.9ほとんどの場合、Locator.evaluateAll()、その他のLocatorヘルパーメソッド、およびウェブファーストのアサーションの方が適しています。
expressionの戻り値を返します。
このメソッドは、ElementHandle
のサブツリー内で指定されたセレクターに一致するすべての要素を見つけ、一致した要素の配列をexpressionの最初の引数として渡します。
expressionがPromiseを返す場合、ElementHandle.evalOnSelectorAll()はそのPromiseが解決されるのを待機し、その値を返します。
使用法
<div class="feed">
<div class="tweet">Hello!</div>
<div class="tweet">Hi!</div>
</div>
ElementHandle feedHandle = page.querySelector(".feed");
assertEquals(Arrays.asList("Hello!", "Hi!"), feedHandle.evalOnSelectorAll(".tweet", "nodes => nodes.map(n => n.innerText)"));
引数
-
クエリ対象のセレクター。
-
ブラウザコンテキストで評価されるJavaScript式。式が関数に評価される場合、その関数は自動的に呼び出されます。
-
arg
EvaluationArgument (任意)#expressionに渡す任意の引数。
戻り値
fill
v1.9より前に追加代わりにロケーターベースのLocator.fill()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは、操作可能性チェックを待ち、要素にフォーカスし、要素を埋め、埋め終わった後にinput
イベントをトリガーします。入力フィールドをクリアするために空の文字列を渡すことができることに注意してください。
ターゲット要素が<input>
、<textarea>
、または[contenteditable]
要素でない場合、このメソッドはエラーをスローします。ただし、要素が関連付けられたコントロールを持つ<label>
要素内にある場合、代わりにそのコントロールが埋められます。
きめ細かなキーボードイベントを送信するには、Locator.pressSequentially()を使用してください。
使用法
ElementHandle.fill(value);
ElementHandle.fill(value, options);
引数
-
<input>
、<textarea>
、または[contenteditable]
要素に設定する値。 -
options
ElementHandle.FillOptions
(任意)-
setForce
boolean (任意)追加されたバージョン: v1.13#操作可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
focus
v1.9より前に追加代わりにロケーターベースのLocator.focus()を使用してください。ロケーターについて詳しくはこちら。
要素に対してfocusを呼び出します。
使用法
ElementHandle.focus();
戻り値
getAttribute
v1.9より前に追加代わりにロケーターベースのLocator.getAttribute()を使用してください。ロケーターについて詳しくはこちら。
要素の属性値を返します。
使用法
ElementHandle.getAttribute(name);
引数
戻り値
hover
v1.9より前に追加代わりにロケーターベースのLocator.hover()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは以下の手順を実行して要素にホバーします。
- setForceオプションが設定されていない限り、要素に対するactionabilityチェックを待機します。
- 必要に応じて要素をビューにスクロールします。
- Page.mouse()を使用して要素の中心、または指定されたsetPositionにホバーします。
アクション中に要素がDOMからデタッチされた場合、このメソッドは例外をスローします。
すべてのステップの合計が指定されたsetTimeout内に完了しなかった場合、このメソッドはTimeoutErrorをスローします。タイムアウトに0を渡すと、これを無効にします。
使用法
ElementHandle.hover();
ElementHandle.hover(options);
引数
options
ElementHandle.HoverOptions
(任意)-
操作可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
setModifiers
List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }
> (任意)#押す修飾キー。操作中にこれらの修飾キーのみが押され、その後現在の修飾キーが元に戻されることを保証します。指定されていない場合、現在押されている修飾キーが使用されます。"ControlOrMeta"はWindowsおよびLinuxでは"Control"に、macOSでは"Meta"に解決されます。
-
setNoWaitAfter
boolean (任意)追加されたバージョン: v1.28#非推奨このオプションは効果がありません。
このオプションは効果がありません。
-
setPosition
Position (任意)#要素のパディングボックスの左上隅を基準に使用する点。指定されていない場合、要素の表示されているいずれかの点を使用します。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。 -
setTrial
boolean (任意)追加されたバージョン: v1.11#設定した場合、このメソッドは操作可能性チェックのみを実行し、アクションはスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機する場合に便利です。
-
戻り値
innerHTML
v1.9より前に追加代わりにロケーターベースのLocator.innerHTML()を使用してください。ロケーターについて詳しくはこちら。
element.innerHTML
を返します。
使用法
ElementHandle.innerHTML();
戻り値
innerText
v1.9より前に追加代わりにロケーターベースのLocator.innerText()を使用してください。ロケーターについて詳しくはこちら。
element.innerText
を返します。
使用法
ElementHandle.innerText();
戻り値
inputValue
追加されたバージョン: v1.13代わりにロケーターベースのLocator.inputValue()を使用してください。ロケーターについて詳しくはこちら。
選択した<input>
、<textarea>
、または<select>
要素のinput.value
を返します。
非入力要素の場合は例外をスローします。ただし、要素が関連付けられたコントロールを持つ<label>
要素内にある場合、コントロールの値を返します。
使用法
ElementHandle.inputValue();
ElementHandle.inputValue(options);
引数
options
ElementHandle.InputValueOptions
(任意)-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
isChecked
v1.9より前に追加代わりにロケーターベースのLocator.isChecked()を使用してください。ロケーターについて詳しくはこちら。
要素がチェックされているかどうかを返します。要素がチェックボックスまたはラジオ入力でない場合、例外をスローします。
使用法
ElementHandle.isChecked();
戻り値
isDisabled
v1.9より前に追加代わりにロケーターベースのLocator.isDisabled()を使用してください。ロケーターについて詳しくはこちら。
要素が無効になっているかどうか、つまり有効の反対を返します。
使用法
ElementHandle.isDisabled();
戻り値
isEditable
v1.9より前に追加代わりにロケーターベースのLocator.isEditable()を使用してください。ロケーターについて詳しくはこちら。
要素が編集可能かどうかを返します。
使用法
ElementHandle.isEditable();
戻り値
isEnabled
v1.9より前に追加代わりにロケーターベースのLocator.isEnabled()を使用してください。ロケーターについて詳しくはこちら。
要素が有効かどうかを返します。
使用法
ElementHandle.isEnabled();
戻り値
isHidden
v1.9より前に追加代わりにロケーターベースのLocator.isHidden()を使用してください。ロケーターについて詳しくはこちら。
要素が非表示かどうか、つまり表示の反対を返します。
使用法
ElementHandle.isHidden();
戻り値
isVisible
v1.9より前に追加代わりにロケーターベースのLocator.isVisible()を使用してください。ロケーターについて詳しくはこちら。
要素が表示されているかどうかを返します。
使用法
ElementHandle.isVisible();
戻り値
press
v1.9より前に追加代わりにロケーターベースのLocator.press()を使用してください。ロケーターについて詳しくはこちら。
要素にフォーカスし、Keyboard.down()とKeyboard.up()を使用します。
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
。
Shift
を押したままにすると、keyに対応するテキストが大文字で入力されます。
keyが単一の文字の場合、大文字と小文字が区別されるため、a
とA
の値はそれぞれ異なるテキストを生成します。
key: "Control+o"
、key: "Control++
、またはkey: "Control+Shift+T"
などのショートカットもサポートされています。修飾キーを指定した場合、修飾キーが押されたまま、後続のキーが押されます。
使用法
ElementHandle.press(key);
ElementHandle.press(key, options);
引数
-
押すキーの名前、または生成する文字(例:
ArrowLeft
やa
)。 -
options
ElementHandle.PressOptions
(任意)-
keydown
とkeyup
の間の待機時間(ミリ秒単位)。デフォルトは0です。 -
非推奨
このオプションは将来的に
true
がデフォルトになります。ナビゲーションを開始するアクションは、これらのナビゲーションが発生し、ページの読み込みが開始されるまで待機します。このフラグを設定することで、待機をオプトアウトできます。このオプションは、アクセスできないページにナビゲートするなどの例外的な場合にのみ必要です。デフォルトは
false
です。 -
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
querySelector
追加されたバージョン: v1.9代わりにロケーターベースのPage.locator()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは、ElementHandle
のサブツリー内で指定されたセレクターに一致する要素を見つけます。セレクターに一致する要素がない場合、null
を返します。
使用法
ElementHandle.querySelector(selector);
引数
戻り値
querySelectorAll
追加されたバージョン: v1.9代わりにロケーターベースのPage.locator()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは、ElementHandle
のサブツリー内で指定されたセレクターに一致するすべての要素を見つけます。セレクターに一致する要素がない場合、空の配列を返します。
使用法
ElementHandle.querySelectorAll(selector);
引数
戻り値
screenshot
v1.9より前に追加代わりにロケーターベースのLocator.screenshot()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは、ページ全体のスクリーンショットを、この特定の要素のサイズと位置にクリップしてキャプチャします。要素が他の要素に覆われている場合、スクリーンショットには実際には表示されません。要素がスクロール可能なコンテナである場合、スクリーンショットには現在スクロールされているコンテンツのみが表示されます。
このメソッドは、操作可能性チェックを待ち、スクリーンショットを撮る前に要素をビューにスクロールします。要素がDOMからデタッチされている場合、このメソッドはエラーをスローします。
キャプチャされたスクリーンショットを含むバッファを返します。
使用法
ElementHandle.screenshot();
ElementHandle.screenshot(options);
引数
options
ElementHandle.ScreenshotOptions
(任意)-
setAnimations
enum ScreenshotAnimations { DISABLED, ALLOW }
(任意)#"disabled"
に設定すると、CSSアニメーション、CSSトランジション、Webアニメーションが停止します。アニメーションは継続時間に応じて異なる処理を受けます。- 有限アニメーションは完了まで高速化され、
transitionend
イベントが発火します。 - 無限アニメーションは初期状態にキャンセルされ、スクリーンショットの後に再生されます。
デフォルトは
"allow"
で、アニメーションはそのまま残されます。 - 有限アニメーションは完了まで高速化され、
-
setCaret
enum ScreenshotCaret { HIDE, INITIAL }
(任意)#"hide"
に設定すると、スクリーンショットはテキストキャレットを隠します。"initial"
に設定すると、テキストキャレットの動作は変更されません。デフォルトは"hide"
です。 -
スクリーンショットを撮る際にマスクするロケーターを指定します。マスクされた要素は、その境界ボックスを完全に覆うピンク色のボックス
#FF00FF
(setMaskColorでカスタマイズ可能)でオーバーレイされます。マスクは非表示の要素にも適用されます。表示されている要素のみを一致させるを参照して、これを無効にすることができます。 -
setMaskColor
String (任意)追加されたバージョン: v1.35#マスクされた要素のオーバーレイボックスの色をCSSカラー形式で指定します。デフォルトの色はピンク
#FF00FF
です。 -
setOmitBackground
boolean (任意)#デフォルトの白い背景を隠し、透明なスクリーンショットをキャプチャできるようにします。
jpeg
画像には適用されません。デフォルトはfalse
です。 -
画像を保存するファイルパス。スクリーンショットのタイプはファイル拡張子から推測されます。setPathが相対パスの場合、現在の作業ディレクトリを基準に解決されます。パスが指定されていない場合、画像はディスクに保存されません。
-
画像の品質(0〜100)。
png
画像には適用されません。 -
setScale
enum ScreenshotScale { CSS, DEVICE }
(任意)#"css"
に設定すると、スクリーンショットはページの各CSSピクセルにつき1ピクセルを持ちます。高DPIデバイスの場合、これによりスクリーンショットが小さく保たれます。"device"
オプションを使用すると、各デバイスピクセルにつき1ピクセルが生成されるため、高DPIデバイスのスクリーンショットは2倍以上大きくなる可能性があります。デフォルトは
"device"
です。 -
setStyle
String (任意)追加されたバージョン: v1.41#スクリーンショットを作成する際に適用するスタイルシートのテキスト。これにより、動的な要素を隠したり、要素を非表示にしたり、そのプロパティを変更したりして、再現可能なスクリーンショットの作成に役立てることができます。このスタイルシートはShadow DOMを貫通し、内部フレームにも適用されます。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。 -
setType
enum ScreenshotType { PNG, JPEG }
(任意)#スクリーンショットのタイプを指定します。デフォルトは
png
です。
-
戻り値
scrollIntoViewIfNeeded
v1.9より前に追加代わりにロケーターベースのLocator.scrollIntoViewIfNeeded()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは操作可能性チェックを待ち、その後、IntersectionObserverのratio
で定義されるように、要素が完全に表示されている場合を除き、要素をビューにスクロールしようとします。
elementHandle
がDocumentまたはShadowRootに接続されていない要素を指している場合、例外をスローします。
スクロールの代替方法については、スクロールを参照してください。
使用法
ElementHandle.scrollIntoViewIfNeeded();
ElementHandle.scrollIntoViewIfNeeded(options);
引数
options
ElementHandle.ScrollIntoViewIfNeededOptions
(任意)-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
selectOption
v1.9より前に追加代わりにロケーターベースのLocator.selectOption()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは、操作可能性チェックを待ち、指定されたすべてのオプションが<select>
要素内に存在し、それらのオプションが選択されるまで待機します。
ターゲット要素が<select>
要素でない場合、このメソッドはエラーをスローします。ただし、要素が関連付けられたコントロールを持つ<label>
要素内にある場合、代わりにそのコントロールが使用されます。
正常に選択されたオプション値の配列を返します。
提供されたすべてのオプションが選択されると、change
イベントとinput
イベントをトリガーします。
使用法
// Single selection matching the value or label
handle.selectOption("blue");
// single selection matching the label
handle.selectOption(new SelectOption().setLabel("Blue"));
// multiple selection
handle.selectOption(new String[] {"red", "green", "blue"});
引数
values
null | String | ElementHandle | String[] |SelectOption
| ElementHandle[] |SelectOption
[]#-
setValue
String (任意)option.value
によるマッチング。任意。 -
setLabel
String (任意)option.label
によるマッチング。任意。 -
setIndex
int (任意)インデックスによるマッチング。任意。
<select>
がmultiple
属性を持つ場合、すべての一致するオプションが選択され、そうでない場合は、渡されたオプションのいずれかに一致する最初のオプションのみが選択されます。文字列値は値とラベルの両方に一致します。指定されたすべてのプロパティが一致する場合、オプションは一致と見なされます。-
options
ElementHandle.SelectOptionOptions
(任意)-
setForce
boolean (任意)追加されたバージョン: v1.13#操作可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
selectText
v1.9より前に追加代わりにロケーターベースのLocator.selectText()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは操作可能性チェックを待ち、その後要素にフォーカスし、そのテキストコンテンツ全体を選択します。
要素が関連付けられたコントロールを持つ<label>
要素内にある場合、代わりにそのコントロールにフォーカスし、テキストを選択します。
使用法
ElementHandle.selectText();
ElementHandle.selectText(options);
引数
options
ElementHandle.SelectTextOptions
(任意)-
setForce
boolean (任意)追加されたバージョン: v1.13#操作可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
setChecked
追加されたバージョン: v1.15代わりにロケーターベースのLocator.setChecked()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは以下の手順を実行して要素をチェックまたはアンチェックします。
- 要素がチェックボックスまたはラジオ入力であることを確認します。そうでない場合、このメソッドは例外をスローします。
- 要素がすでに正しいチェック状態にある場合、このメソッドは直ちに返ります。
- setForceオプションが設定されていない限り、一致した要素に対するactionabilityチェックを待機します。チェック中に要素がデタッチされた場合、アクション全体が再試行されます。
- 必要に応じて要素をビューにスクロールします。
- Page.mouse()を使用して要素の中心をクリックします。
- 要素がチェックまたはアンチェックされていることを確認します。そうでない場合、このメソッドは例外をスローします。
すべてのステップの合計が指定されたsetTimeout内に完了しなかった場合、このメソッドはTimeoutErrorをスローします。タイムアウトに0を渡すと、これを無効にします。
使用法
ElementHandle.setChecked(checked);
ElementHandle.setChecked(checked, options);
引数
-
チェックボックスをチェックするか、アンチェックするか。
-
options
ElementHandle.SetCheckedOptions
(任意)-
操作可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
setPosition
Position (任意)#要素のパディングボックスの左上隅を基準に使用する点。指定されていない場合、要素の表示されているいずれかの点を使用します。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。 -
設定した場合、このメソッドは操作可能性チェックのみを実行し、アクションはスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機する場合に便利です。
-
戻り値
setInputFiles
v1.9より前に追加代わりにロケーターベースのLocator.setInputFiles()を使用してください。ロケーターについて詳しくはこちら。
ファイル入力の値をこれらのファイルパスまたはファイルに設定します。filePaths
の一部が相対パスの場合、現在の作業ディレクトリを基準に解決されます。空の配列の場合、選択されたファイルをクリアします。[webkitdirectory]
属性を持つ入力の場合、単一のディレクトリパスのみがサポートされます。
このメソッドは、ElementHandleが入力要素を指していることを期待します。ただし、要素が関連付けられたコントロールを持つ<label>
要素内にある場合、代わりにそのコントロールをターゲットにします。
使用法
ElementHandle.setInputFiles(files);
ElementHandle.setInputFiles(files, options);
引数
files
Path | Path[] |FilePayload
|FilePayload
[]#options
ElementHandle.SetInputFilesOptions
(任意)-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
tap
v1.9より前に追加代わりにロケーターベースのLocator.tap()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは以下の手順を実行して要素をタップします。
- setForceオプションが設定されていない限り、要素に対するactionabilityチェックを待機します。
- 必要に応じて要素をビューにスクロールします。
- Page.touchscreen()を使用して要素の中心、または指定されたsetPositionをタップします。
アクション中に要素がDOMからデタッチされた場合、このメソッドは例外をスローします。
すべてのステップの合計が指定されたsetTimeout内に完了しなかった場合、このメソッドはTimeoutErrorをスローします。タイムアウトに0を渡すと、これを無効にします。
elementHandle.tap()
は、ブラウザコンテキストのhasTouch
オプションがtrueに設定されている必要があります。
使用法
ElementHandle.tap();
ElementHandle.tap(options);
引数
options
ElementHandle.TapOptions
(任意)-
操作可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
setModifiers
List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }
> (任意)#押す修飾キー。操作中にこれらの修飾キーのみが押され、その後現在の修飾キーが元に戻されることを保証します。指定されていない場合、現在押されている修飾キーが使用されます。"ControlOrMeta"はWindowsおよびLinuxでは"Control"に、macOSでは"Meta"に解決されます。
-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
setPosition
Position (任意)#要素のパディングボックスの左上隅を基準に使用する点。指定されていない場合、要素の表示されているいずれかの点を使用します。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。 -
setTrial
boolean (任意)追加されたバージョン: v1.11#設定した場合、このメソッドは操作可能性チェックのみを実行し、アクションはスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機する場合に便利です。
-
戻り値
textContent
v1.9より前に追加代わりにロケーターベースのLocator.textContent()を使用してください。ロケーターについて詳しくはこちら。
node.textContent
を返します。
使用法
ElementHandle.textContent();
戻り値
type
v1.9より前に追加ほとんどの場合、代わりにLocator.fill()を使用する必要があります。ページに特別なキーボード処理がある場合にのみ、キーを1つずつ押す必要があります。その場合はLocator.pressSequentially()を使用してください。
要素にフォーカスし、その後、テキスト内の各文字に対してkeydown
、keypress
/input
、およびkeyup
イベントを送信します。
Control
やArrowDown
のような特殊キーを押すには、ElementHandle.press()を使用してください。
使用法
引数
-
フォーカスされた要素に入力するテキスト。
-
options
ElementHandle.TypeOptions
(任意)-
キー押下間の待機時間(ミリ秒単位)。デフォルトは0です。
-
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。
-
戻り値
uncheck
v1.9より前に追加代わりにロケーターベースのLocator.uncheck()を使用してください。ロケーターについて詳しくはこちら。
このメソッドは以下の手順を実行して要素をチェックします。
- 要素がチェックボックスまたはラジオ入力であることを確認します。そうでない場合、このメソッドは例外をスローします。要素がすでにアンチェックされている場合、このメソッドは直ちに返ります。
- 操作可能性チェックが要素に対して行われるのを待機します。ただし、setForceオプションが設定されている場合は除きます。
- 必要に応じて要素をビューにスクロールします。
- Page.mouse()を使用して要素の中心をクリックします。
- 要素がチェックされていない状態であることを確認します。そうでない場合、このメソッドは例外をスローします。
アクション中に要素がDOMからデタッチされた場合、このメソッドは例外をスローします。
指定されたsetTimeout期間中にすべてのステップが完了しなかった場合、このメソッドはTimeoutErrorをスローします。タイムアウトにゼロを渡すと、これを無効にできます。
使用法
ElementHandle.uncheck();
ElementHandle.uncheck(options);
引数
options
ElementHandle.UncheckOptions
(任意)-
操作可能性チェックをバイパスするかどうか。デフォルトは
false
です。 -
非推奨
このオプションは効果がありません。
このオプションは効果がありません。
-
setPosition
Position (任意)追加されたバージョン: v1.11#要素のパディングボックスの左上隅を基準に使用する点。指定されていない場合、要素の表示されているいずれかの点を使用します。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。 -
setTrial
boolean (任意)追加されたバージョン: v1.11#設定した場合、このメソッドは操作可能性チェックのみを実行し、アクションはスキップします。デフォルトは
false
です。アクションを実行せずに、要素がアクションの準備ができるまで待機する場合に便利です。
-
戻り値
waitForSelector
v1.9より前に追加可視性をアサートするウェブアサーション、またはロケーターベースのLocator.waitFor()を使用してください。
セレクターによって指定された要素がsetStateオプションを満たしたときに要素を返します。hidden
またはdetached
を待機している場合はnull
を返します。
要素ハンドルに対するセレクターがsetStateオプション(DOMに表示/非表示になる、または可視/非可視になる)を満たすのを待機します。メソッド呼び出し時にセレクターがすでに条件を満たしている場合、メソッドは直ちに返します。セレクターが指定されたsetTimeoutミリ秒間条件を満たさない場合、関数は例外をスローします。
使用法
page.setContent("<div><span></span></div>");
ElementHandle div = page.querySelector("div");
// Waiting for the "span" selector relative to the div.
ElementHandle span = div.waitForSelector("span", new ElementHandle.WaitForSelectorOptions()
.setState(WaitForSelectorState.ATTACHED));
このメソッドはナビゲーションをまたいで機能しません。代わりにPage.waitForSelector()を使用してください。
引数
-
クエリ対象のセレクター。
-
options
ElementHandle.WaitForSelectorOptions
(任意)-
setState
enum WaitForSelectorState { ATTACHED, DETACHED, VISIBLE, HIDDEN }
(任意)#デフォルトは
'visible'
です。次のいずれかになります。'attached'
- 要素がDOMに存在することを待機します。'detached'
- 要素がDOMに存在しないことを待機します。'visible'
- 要素が空でないバウンディングボックスを持ち、visibility:hidden
ではないことを待機します。コンテンツがない要素やdisplay:none
が設定されている要素は、空のバウンディングボックスを持ち、可視とは見なされないことに注意してください。'hidden'
- 要素がDOMからデタッチされている、または空のバウンディングボックスを持つ、またはvisibility:hidden
であることを待機します。これは'visible'
オプションとは逆です。
-
setStrict
boolean (任意)追加されたバージョン: v1.15#trueの場合、呼び出しはセレクターが単一の要素に解決されることを要求します。指定されたセレクターが複数の要素に解決される場合、呼び出しは例外をスローします。
-
最大ミリ秒単位の時間。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値はBrowserContext.setDefaultTimeout()またはPage.setDefaultTimeout()メソッドを使用して変更できます。
-
戻り値