Interface IElementHandle
- Namespace
- Microsoft.Playwright
- Assembly
- Microsoft.Playwright.dll
ElementHandle represents an in-page DOM element. ElementHandles can be created with the QuerySelectorAsync(string, PageQuerySelectorOptions?) method.
var handle = await page.QuerySelectorAsync("a");
await handle.ClickAsync();
ElementHandle prevents DOM element from garbage collection unless the handle is
disposed with
ElementHandle instances can be used as an argument in EvalOnSelectorAsync(string, string, object?) and EvaluateAsync(string, object?) methods.
The difference between the ILocator and ElementHandle is that the ElementHandle points to a particular element, while ILocator captures the logic of how to retrieve an element.
In the example below, handle points to a particular DOM element on page. If that element changes text or is used by React to render an entirely different component, handle is still pointing to that very DOM element. This can lead to unexpected behaviors.
var handle = await page.QuerySelectorAsync("text=Submit");
await handle.HoverAsync();
await handle.ClickAsync();
With the locator, every time the element
is used, up-to-date DOM element
is located in the page using the selector. So in the snippet below, underlying DOM
element is going to be located twice.
var locator = page.GetByText("Submit");
await locator.HoverAsync();
await locator.ClickAsync();
public interface IElementHandle : IJSHandle, IAsyncDisposable
- Inherited Members
Remarks
Inherits from IJSHandle
The use of ElementHandle is discouraged, use ILocator objects and web-first assertions instead.
Methods
BoundingBoxAsync()
This method returns the bounding box of the element, or null
if the element
is not visible. The bounding box is calculated relative to the main frame viewport
- which is usually the same as the browser window.
Scrolling affects the returned bounding box, similarly to Element.getBoundingClientRect.
That means x
and/or y
may be negative.
Elements from child frames return the bounding box relative to the main frame, unlike the Element.getBoundingClientRect.
Assuming the page is static, it is safe to use bounding box coordinates to perform input. For example, the following snippet should click the center of the element.
**Usage**
var box = await elementHandle.BoundingBoxAsync();
await page.Mouse.ClickAsync(box.X + box.Width / 2, box.Y + box.Height / 2);
Task<ElementHandleBoundingBoxResult?> BoundingBoxAsync()
Returns
CheckAsync(ElementHandleCheckOptions?)
Use locator-based CheckAsync(LocatorCheckOptions?) instead. Read more about locators.
This method checks the element by performing the following steps:
If the element is detached from the DOM at any moment during the action, this method throws.
When all steps combined have not finished during the specified timeout
,
this method throws a TimeoutException. Passing zero timeout disables
this.
Task CheckAsync(ElementHandleCheckOptions? options = null)
Parameters
options
ElementHandleCheckOptionsCall options
Returns
ClickAsync(ElementHandleClickOptions?)
Use locator-based ClickAsync(LocatorClickOptions?) instead. Read more about locators.
This method clicks the element by performing the following steps:
If the element is detached from the DOM at any moment during the action, this method throws.
When all steps combined have not finished during the specified timeout
,
this method throws a TimeoutException. Passing zero timeout disables
this.
Task ClickAsync(ElementHandleClickOptions? options = null)
Parameters
options
ElementHandleClickOptionsCall options
Returns
ContentFrameAsync()
Returns the content frame for element handles referencing iframe nodes, or null
otherwise
Task<IFrame?> ContentFrameAsync()
Returns
DblClickAsync(ElementHandleDblClickOptions?)
Use locator-based DblClickAsync(LocatorDblClickOptions?) instead. Read more about locators.
This method double clicks the element by performing the following steps:
If the element is detached from the DOM at any moment during the action, this method throws.
When all steps combined have not finished during the specified timeout
,
this method throws a TimeoutException. Passing zero timeout disables
this.
Task DblClickAsync(ElementHandleDblClickOptions? options = null)
Parameters
options
ElementHandleDblClickOptionsCall options
Returns
Remarks
elementHandle.dblclick()
dispatches two click
events and a single
dblclick
event.
DispatchEventAsync(string, object?)
Use locator-based DispatchEventAsync(string, object?, LocatorDispatchEventOptions?) instead. Read more about locators.
The snippet below dispatches the click
event on the element. Regardless of
the visibility state of the element, click
is dispatched. This is equivalent
to calling element.click().
**Usage**
await elementHandle.DispatchEventAsync("click");
Under the hood, it creates an instance of an event based on the given type
, initializes it with eventInit
properties and dispatches
it on the element. Events are composed
, cancelable
and bubble by default.
Since eventInit
is event-specific, please refer to the events
documentation for the lists of initial properties:
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
You can also specify JSHandle
as the property value if you want live objects
to be passed into the event:
var dataTransfer = await page.EvaluateHandleAsync("() => new DataTransfer()");
await elementHandle.DispatchEventAsync("dragstart", new Dictionary<string, object>
{
{ "dataTransfer", dataTransfer }
});
Task DispatchEventAsync(string type, object? eventInit = null)
Parameters
type
stringDOM event type:
"click"
,"dragstart"
, etc.eventInit
objectOptional event-specific initialization properties.
Returns
EvalOnSelectorAllAsync<T>(string, string, object?)
In most cases, EvaluateAllAsync<T>(string, object?), other ILocator helper methods and web-first assertions do a better job.
Returns the return value of expression
.
The method finds all elements matching the specified selector in the ElementHandle
's
subtree and passes an array of matched elements as a first argument to expression
.
If expression
returns a Task, then EvalOnSelectorAllAsync<T>(string, string, object?)
would wait for the promise to resolve and return its value.
**Usage**
var feedHandle = await page.QuerySelectorAsync(".feed");
Assert.AreEqual(new [] { "Hello!", "Hi!" }, await feedHandle.EvalOnSelectorAllAsync<string[]>(".tweet", "nodes => nodes.map(n => n.innerText)"));
Task<T> EvalOnSelectorAllAsync<T>(string selector, string expression, object? arg = null)
Parameters
selector
stringA selector to query for.
expression
stringJavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the function is automatically invoked.
arg
objectOptional argument to pass to
expression
.
Returns
- Task<T>
Type Parameters
T
EvalOnSelectorAsync(string, string, object)
Task<JsonElement?> EvalOnSelectorAsync(string selector, string expression, object arg = null)
Parameters
Returns
EvalOnSelectorAsync<T>(string, string, object?)
This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests. Use EvaluateAsync(string, object, LocatorEvaluateOptions), other ILocator helper methods or web-first assertions instead.
Returns the return value of expression
.
The method finds an element matching the specified selector in the ElementHandle
s
subtree and passes it as a first argument to expression
. If no
elements match the selector, the method throws an error.
If expression
returns a Task, then EvalOnSelectorAsync(string, string, object)
would wait for the promise to resolve and return its value.
**Usage**
var tweetHandle = await page.QuerySelectorAsync(".tweet");
Assert.AreEqual("100", await tweetHandle.EvalOnSelectorAsync(".like", "node => node.innerText"));
Assert.AreEqual("10", await tweetHandle.EvalOnSelectorAsync(".retweets", "node => node.innerText"));
Task<T> EvalOnSelectorAsync<T>(string selector, string expression, object? arg = null)
Parameters
selector
stringA selector to query for.
expression
stringJavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the function is automatically invoked.
arg
objectOptional argument to pass to
expression
.
Returns
- Task<T>
Type Parameters
T
FillAsync(string, ElementHandleFillOptions?)
Use locator-based FillAsync(string, LocatorFillOptions?) instead. Read more about locators.
This method waits for actionability
checks, focuses the element, fills it and triggers an input
event after filling.
Note that you can pass an empty string to clear the input field.
If the target element is not an <input>
, <textarea>
or
[contenteditable]
element, this method throws an error. However, if the element
is inside the <label>
element that has an associated control,
the control will be filled instead.
To send fine-grained keyboard events, use PressSequentiallyAsync(string, LocatorPressSequentiallyOptions?).
Task FillAsync(string value, ElementHandleFillOptions? options = null)
Parameters
value
stringValue to set for the
<input>
,<textarea>
or[contenteditable]
element.options
ElementHandleFillOptionsCall options
Returns
FocusAsync()
Use locator-based FocusAsync(LocatorFocusOptions?) instead. Read more about locators.
Calls focus on the element.
Task FocusAsync()
Returns
GetAttributeAsync(string)
Use locator-based GetAttributeAsync(string, LocatorGetAttributeOptions?) instead. Read more about locators.
Returns element attribute value.
Task<string?> GetAttributeAsync(string name)
Parameters
name
stringAttribute name to get the value for.
Returns
HoverAsync(ElementHandleHoverOptions?)
Use locator-based HoverAsync(LocatorHoverOptions?) instead. Read more about locators.
This method hovers over the element by performing the following steps:
If the element is detached from the DOM at any moment during the action, this method throws.
When all steps combined have not finished during the specified timeout
,
this method throws a TimeoutException. Passing zero timeout disables
this.
Task HoverAsync(ElementHandleHoverOptions? options = null)
Parameters
options
ElementHandleHoverOptionsCall options
Returns
InnerHTMLAsync()
Use locator-based InnerHTMLAsync(LocatorInnerHTMLOptions?) instead. Read more about locators.
Returns the element.innerHTML
.
Task<string> InnerHTMLAsync()
Returns
InnerTextAsync()
Use locator-based InnerTextAsync(LocatorInnerTextOptions?) instead. Read more about locators.
Returns the element.innerText
.
Task<string> InnerTextAsync()
Returns
InputValueAsync(ElementHandleInputValueOptions?)
Use locator-based InputValueAsync(LocatorInputValueOptions?) instead. Read more about locators.
Returns input.value
for the selected <input>
or <textarea>
or <select>
element.
Throws for non-input elements. However, if the element is inside the <label>
element that has an associated control,
returns the value of the control.
Task<string> InputValueAsync(ElementHandleInputValueOptions? options = null)
Parameters
options
ElementHandleInputValueOptionsCall options
Returns
IsCheckedAsync()
Use locator-based IsCheckedAsync(LocatorIsCheckedOptions?) instead. Read more about locators.
Returns whether the element is checked. Throws if the element is not a checkbox or radio input.
Task<bool> IsCheckedAsync()
Returns
IsDisabledAsync()
Use locator-based IsDisabledAsync(LocatorIsDisabledOptions?) instead. Read more about locators.
Returns whether the element is disabled, the opposite of enabled.
Task<bool> IsDisabledAsync()
Returns
IsEditableAsync()
Use locator-based IsEditableAsync(LocatorIsEditableOptions?) instead. Read more about locators.
Returns whether the element is editable.
Task<bool> IsEditableAsync()
Returns
IsEnabledAsync()
Use locator-based IsEnabledAsync(LocatorIsEnabledOptions?) instead. Read more about locators.
Returns whether the element is enabled.
Task<bool> IsEnabledAsync()
Returns
IsHiddenAsync()
Use locator-based IsHiddenAsync(LocatorIsHiddenOptions?) instead. Read more about locators.
Returns whether the element is hidden, the opposite of visible.
Task<bool> IsHiddenAsync()
Returns
IsVisibleAsync()
Use locator-based IsVisibleAsync(LocatorIsVisibleOptions?) instead. Read more about locators.
Returns whether the element is visible.
Task<bool> IsVisibleAsync()
Returns
OwnerFrameAsync()
Returns the frame containing the given element.
Task<IFrame?> OwnerFrameAsync()
Returns
PressAsync(string, ElementHandlePressOptions?)
Use locator-based PressAsync(string, LocatorPressOptions?) instead. Read more about locators.
Focuses the element, and then uses DownAsync(string) and UpAsync(string).
key
can specify the intended keyboardEvent.key
value or a single character to generate the text for. A superset of the key
values can be found here.
Examples of the keys are:
F1
- F12
, Digit0
- Digit9
, KeyA
- KeyZ
,
Backquote
, Minus
, Equal
, Backslash
, Backspace
,
Tab
, Delete
, Escape
, ArrowDown
, End
, Enter
,
Home
, Insert
, PageDown
, PageUp
, ArrowRight
, ArrowUp
,
etc.
Following modification shortcuts are also supported: Shift
, Control
,
Alt
, Meta
, ShiftLeft
, ControlOrMeta
.
Holding down Shift
will type the text that corresponds to the key
in the upper case.
If key
is a single character, it is case-sensitive, so the values
a
and A
will generate different respective texts.
Shortcuts such as key: "Control+o"
, key: "Control++
or key: "Control+Shift+T"
are supported as well. When specified with the modifier, modifier is pressed and
being held while the subsequent key is being pressed.
Task PressAsync(string key, ElementHandlePressOptions? options = null)
Parameters
key
stringName of the key to press or a character to generate, such as
ArrowLeft
ora
.options
ElementHandlePressOptionsCall options
Returns
QuerySelectorAllAsync(string)
Use locator-based Locator(string, PageLocatorOptions?) instead. Read more about locators.
The method finds all elements matching the specified selector in the ElementHandle
s
subtree. If no elements match the selector, returns empty array.
Task<IReadOnlyList<IElementHandle>> QuerySelectorAllAsync(string selector)
Parameters
selector
stringA selector to query for.
Returns
QuerySelectorAsync(string)
Use locator-based Locator(string, PageLocatorOptions?) instead. Read more about locators.
The method finds an element matching the specified selector in the ElementHandle
's
subtree. If no elements match the selector, returns null
.
Task<IElementHandle?> QuerySelectorAsync(string selector)
Parameters
selector
stringA selector to query for.
Returns
ScreenshotAsync(ElementHandleScreenshotOptions?)
Use locator-based ScreenshotAsync(LocatorScreenshotOptions?) instead. Read more about locators.
This method captures a screenshot of the page, clipped to the size and position of this particular element. If the element is covered by other elements, it will not be actually visible on the screenshot. If the element is a scrollable container, only the currently scrolled content will be visible on the screenshot.
This method waits for the actionability checks, then scrolls element into view before taking a screenshot. If the element is detached from DOM, the method throws an error.
Returns the buffer with the captured screenshot.
Task<byte[]> ScreenshotAsync(ElementHandleScreenshotOptions? options = null)
Parameters
options
ElementHandleScreenshotOptionsCall options
Returns
ScrollIntoViewIfNeededAsync(ElementHandleScrollIntoViewIfNeededOptions?)
Use locator-based ScrollIntoViewIfNeededAsync(LocatorScrollIntoViewIfNeededOptions?) instead. Read more about locators.
This method waits for actionability
checks, then tries to scroll element into view, unless it is completely visible
as defined by IntersectionObserver's
ratio
.
Throws when elementHandle
does not point to an element connected
to a Document or a ShadowRoot.
See scrolling for alternative ways to scroll.
Task ScrollIntoViewIfNeededAsync(ElementHandleScrollIntoViewIfNeededOptions? options = null)
Parameters
options
ElementHandleScrollIntoViewIfNeededOptionsCall options
Returns
SelectOptionAsync(IElementHandle, ElementHandleSelectOptionOptions?)
Use locator-based SelectOptionAsync(string, LocatorSelectOptionOptions?) instead. Read more about locators.
This method waits for actionability
checks, waits until all specified options are present in the <select>
element and selects these options.
If the target element is not a <select>
element, this method throws
an error. However, if the element is inside the <label>
element that
has an associated control,
the control will be used instead.
Returns the array of option values that have been successfully selected.
Triggers a change
and input
event once all the provided options have
been selected.
**Usage**
// Single selection matching the value or label
await handle.SelectOptionAsync(new[] { "blue" });
// single selection matching the label
await handle.SelectOptionAsync(new[] { new SelectOptionValue() { Label = "blue" } });
// multiple selection
await handle.SelectOptionAsync(new[] { "red", "green", "blue" });
// multiple selection for blue, red and second option
await handle.SelectOptionAsync(new[] {
new SelectOptionValue() { Label = "blue" },
new SelectOptionValue() { Index = 2 },
new SelectOptionValue() { Value = "red" }});
Task<IReadOnlyList<string>> SelectOptionAsync(IElementHandle values, ElementHandleSelectOptionOptions? options = null)
Parameters
values
IElementHandleOptions to select. If the
<select>
has themultiple
attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.options
ElementHandleSelectOptionOptionsCall options
Returns
SelectOptionAsync(SelectOptionValue, ElementHandleSelectOptionOptions?)
Use locator-based SelectOptionAsync(string, LocatorSelectOptionOptions?) instead. Read more about locators.
This method waits for actionability
checks, waits until all specified options are present in the <select>
element and selects these options.
If the target element is not a <select>
element, this method throws
an error. However, if the element is inside the <label>
element that
has an associated control,
the control will be used instead.
Returns the array of option values that have been successfully selected.
Triggers a change
and input
event once all the provided options have
been selected.
**Usage**
// Single selection matching the value or label
await handle.SelectOptionAsync(new[] { "blue" });
// single selection matching the label
await handle.SelectOptionAsync(new[] { new SelectOptionValue() { Label = "blue" } });
// multiple selection
await handle.SelectOptionAsync(new[] { "red", "green", "blue" });
// multiple selection for blue, red and second option
await handle.SelectOptionAsync(new[] {
new SelectOptionValue() { Label = "blue" },
new SelectOptionValue() { Index = 2 },
new SelectOptionValue() { Value = "red" }});
Task<IReadOnlyList<string>> SelectOptionAsync(SelectOptionValue values, ElementHandleSelectOptionOptions? options = null)
Parameters
values
SelectOptionValueOptions to select. If the
<select>
has themultiple
attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.options
ElementHandleSelectOptionOptionsCall options
Returns
SelectOptionAsync(IEnumerable<IElementHandle>, ElementHandleSelectOptionOptions?)
Use locator-based SelectOptionAsync(string, LocatorSelectOptionOptions?) instead. Read more about locators.
This method waits for actionability
checks, waits until all specified options are present in the <select>
element and selects these options.
If the target element is not a <select>
element, this method throws
an error. However, if the element is inside the <label>
element that
has an associated control,
the control will be used instead.
Returns the array of option values that have been successfully selected.
Triggers a change
and input
event once all the provided options have
been selected.
**Usage**
// Single selection matching the value or label
await handle.SelectOptionAsync(new[] { "blue" });
// single selection matching the label
await handle.SelectOptionAsync(new[] { new SelectOptionValue() { Label = "blue" } });
// multiple selection
await handle.SelectOptionAsync(new[] { "red", "green", "blue" });
// multiple selection for blue, red and second option
await handle.SelectOptionAsync(new[] {
new SelectOptionValue() { Label = "blue" },
new SelectOptionValue() { Index = 2 },
new SelectOptionValue() { Value = "red" }});
Task<IReadOnlyList<string>> SelectOptionAsync(IEnumerable<IElementHandle> values, ElementHandleSelectOptionOptions? options = null)
Parameters
values
IEnumerable<IElementHandle>Options to select. If the
<select>
has themultiple
attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.options
ElementHandleSelectOptionOptionsCall options
Returns
SelectOptionAsync(IEnumerable<SelectOptionValue>, ElementHandleSelectOptionOptions?)
Use locator-based SelectOptionAsync(string, LocatorSelectOptionOptions?) instead. Read more about locators.
This method waits for actionability
checks, waits until all specified options are present in the <select>
element and selects these options.
If the target element is not a <select>
element, this method throws
an error. However, if the element is inside the <label>
element that
has an associated control,
the control will be used instead.
Returns the array of option values that have been successfully selected.
Triggers a change
and input
event once all the provided options have
been selected.
**Usage**
// Single selection matching the value or label
await handle.SelectOptionAsync(new[] { "blue" });
// single selection matching the label
await handle.SelectOptionAsync(new[] { new SelectOptionValue() { Label = "blue" } });
// multiple selection
await handle.SelectOptionAsync(new[] { "red", "green", "blue" });
// multiple selection for blue, red and second option
await handle.SelectOptionAsync(new[] {
new SelectOptionValue() { Label = "blue" },
new SelectOptionValue() { Index = 2 },
new SelectOptionValue() { Value = "red" }});
Task<IReadOnlyList<string>> SelectOptionAsync(IEnumerable<SelectOptionValue> values, ElementHandleSelectOptionOptions? options = null)
Parameters
values
IEnumerable<SelectOptionValue>Options to select. If the
<select>
has themultiple
attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.options
ElementHandleSelectOptionOptionsCall options
Returns
SelectOptionAsync(IEnumerable<string>, ElementHandleSelectOptionOptions?)
Use locator-based SelectOptionAsync(string, LocatorSelectOptionOptions?) instead. Read more about locators.
This method waits for actionability
checks, waits until all specified options are present in the <select>
element and selects these options.
If the target element is not a <select>
element, this method throws
an error. However, if the element is inside the <label>
element that
has an associated control,
the control will be used instead.
Returns the array of option values that have been successfully selected.
Triggers a change
and input
event once all the provided options have
been selected.
**Usage**
// Single selection matching the value or label
await handle.SelectOptionAsync(new[] { "blue" });
// single selection matching the label
await handle.SelectOptionAsync(new[] { new SelectOptionValue() { Label = "blue" } });
// multiple selection
await handle.SelectOptionAsync(new[] { "red", "green", "blue" });
// multiple selection for blue, red and second option
await handle.SelectOptionAsync(new[] {
new SelectOptionValue() { Label = "blue" },
new SelectOptionValue() { Index = 2 },
new SelectOptionValue() { Value = "red" }});
Task<IReadOnlyList<string>> SelectOptionAsync(IEnumerable<string> values, ElementHandleSelectOptionOptions? options = null)
Parameters
values
IEnumerable<string>Options to select. If the
<select>
has themultiple
attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.options
ElementHandleSelectOptionOptionsCall options
Returns
SelectOptionAsync(string, ElementHandleSelectOptionOptions?)
Use locator-based SelectOptionAsync(string, LocatorSelectOptionOptions?) instead. Read more about locators.
This method waits for actionability
checks, waits until all specified options are present in the <select>
element and selects these options.
If the target element is not a <select>
element, this method throws
an error. However, if the element is inside the <label>
element that
has an associated control,
the control will be used instead.
Returns the array of option values that have been successfully selected.
Triggers a change
and input
event once all the provided options have
been selected.
**Usage**
// Single selection matching the value or label
await handle.SelectOptionAsync(new[] { "blue" });
// single selection matching the label
await handle.SelectOptionAsync(new[] { new SelectOptionValue() { Label = "blue" } });
// multiple selection
await handle.SelectOptionAsync(new[] { "red", "green", "blue" });
// multiple selection for blue, red and second option
await handle.SelectOptionAsync(new[] {
new SelectOptionValue() { Label = "blue" },
new SelectOptionValue() { Index = 2 },
new SelectOptionValue() { Value = "red" }});
Task<IReadOnlyList<string>> SelectOptionAsync(string values, ElementHandleSelectOptionOptions? options = null)
Parameters
values
stringOptions to select. If the
<select>
has themultiple
attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.options
ElementHandleSelectOptionOptionsCall options
Returns
SelectTextAsync(ElementHandleSelectTextOptions?)
Use locator-based SelectTextAsync(LocatorSelectTextOptions?) instead. Read more about locators.
This method waits for actionability checks, then focuses the element and selects all its text content.
If the element is inside the <label>
element that has an associated
control,
focuses and selects text in the control instead.
Task SelectTextAsync(ElementHandleSelectTextOptions? options = null)
Parameters
options
ElementHandleSelectTextOptionsCall options
Returns
SetCheckedAsync(bool, ElementHandleSetCheckedOptions?)
Use locator-based SetCheckedAsync(bool, LocatorSetCheckedOptions?) instead. Read more about locators.
This method checks or unchecks an element by performing the following steps:
When all steps combined have not finished during the specified timeout
,
this method throws a TimeoutException. Passing zero timeout disables
this.
Task SetCheckedAsync(bool checkedState, ElementHandleSetCheckedOptions? options = null)
Parameters
checkedState
boolWhether to check or uncheck the checkbox.
options
ElementHandleSetCheckedOptionsCall options
Returns
SetInputFilesAsync(FilePayload, ElementHandleSetInputFilesOptions?)
Use locator-based SetInputFilesAsync(string, LocatorSetInputFilesOptions?) instead. Read more about locators.
Sets the value of the file input to these file paths or files. If some of the filePaths
are relative paths, then they are resolved relative to the current working directory.
For empty array, clears the selected files. For inputs with a [webkitdirectory]
attribute, only a single directory path is supported.
This method expects IElementHandle to point to an input
element. However, if the element is inside the <label>
element
that has an associated control,
targets the control instead.
Task SetInputFilesAsync(FilePayload files, ElementHandleSetInputFilesOptions? options = null)
Parameters
files
FilePayloadoptions
ElementHandleSetInputFilesOptionsCall options
Returns
SetInputFilesAsync(IEnumerable<FilePayload>, ElementHandleSetInputFilesOptions?)
Use locator-based SetInputFilesAsync(string, LocatorSetInputFilesOptions?) instead. Read more about locators.
Sets the value of the file input to these file paths or files. If some of the filePaths
are relative paths, then they are resolved relative to the current working directory.
For empty array, clears the selected files. For inputs with a [webkitdirectory]
attribute, only a single directory path is supported.
This method expects IElementHandle to point to an input
element. However, if the element is inside the <label>
element
that has an associated control,
targets the control instead.
Task SetInputFilesAsync(IEnumerable<FilePayload> files, ElementHandleSetInputFilesOptions? options = null)
Parameters
files
IEnumerable<FilePayload>options
ElementHandleSetInputFilesOptionsCall options
Returns
SetInputFilesAsync(IEnumerable<string>, ElementHandleSetInputFilesOptions?)
Use locator-based SetInputFilesAsync(string, LocatorSetInputFilesOptions?) instead. Read more about locators.
Sets the value of the file input to these file paths or files. If some of the filePaths
are relative paths, then they are resolved relative to the current working directory.
For empty array, clears the selected files. For inputs with a [webkitdirectory]
attribute, only a single directory path is supported.
This method expects IElementHandle to point to an input
element. However, if the element is inside the <label>
element
that has an associated control,
targets the control instead.
Task SetInputFilesAsync(IEnumerable<string> files, ElementHandleSetInputFilesOptions? options = null)
Parameters
files
IEnumerable<string>options
ElementHandleSetInputFilesOptionsCall options
Returns
SetInputFilesAsync(string, ElementHandleSetInputFilesOptions?)
Use locator-based SetInputFilesAsync(string, LocatorSetInputFilesOptions?) instead. Read more about locators.
Sets the value of the file input to these file paths or files. If some of the filePaths
are relative paths, then they are resolved relative to the current working directory.
For empty array, clears the selected files. For inputs with a [webkitdirectory]
attribute, only a single directory path is supported.
This method expects IElementHandle to point to an input
element. However, if the element is inside the <label>
element
that has an associated control,
targets the control instead.
Task SetInputFilesAsync(string files, ElementHandleSetInputFilesOptions? options = null)
Parameters
files
stringoptions
ElementHandleSetInputFilesOptionsCall options
Returns
TapAsync(ElementHandleTapOptions?)
Use locator-based TapAsync(LocatorTapOptions?) instead. Read more about locators.
This method taps the element by performing the following steps:
If the element is detached from the DOM at any moment during the action, this method throws.
When all steps combined have not finished during the specified timeout
,
this method throws a TimeoutException. Passing zero timeout disables
this.
Task TapAsync(ElementHandleTapOptions? options = null)
Parameters
options
ElementHandleTapOptionsCall options
Returns
Remarks
elementHandle.tap()
requires that the hasTouch
option of the browser
context be set to true.
TextContentAsync()
Use locator-based TextContentAsync(LocatorTextContentOptions?) instead. Read more about locators.
Returns the node.textContent
.
Task<string?> TextContentAsync()
Returns
TypeAsync(string, ElementHandleTypeOptions?)
**DEPRECATED** In most cases, you should use FillAsync(string, LocatorFillOptions?) instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use PressSequentiallyAsync(string, LocatorPressSequentiallyOptions?).
Focuses the element, and then sends a keydown
, keypress
/input
,
and keyup
event for each character in the text.
To press a special key, like Control
or ArrowDown
, use PressAsync(string, ElementHandlePressOptions?).
**Usage**
[Obsolete]
Task TypeAsync(string text, ElementHandleTypeOptions? options = null)
Parameters
text
stringA text to type into a focused element.
options
ElementHandleTypeOptionsCall options
Returns
UncheckAsync(ElementHandleUncheckOptions?)
Use locator-based UncheckAsync(LocatorUncheckOptions?) instead. Read more about locators.
This method checks the element by performing the following steps:
If the element is detached from the DOM at any moment during the action, this method throws.
When all steps combined have not finished during the specified timeout
,
this method throws a TimeoutException. Passing zero timeout disables
this.
Task UncheckAsync(ElementHandleUncheckOptions? options = null)
Parameters
options
ElementHandleUncheckOptionsCall options
Returns
WaitForElementStateAsync(ElementState, ElementHandleWaitForElementStateOptions?)
Returns when the element satisfies the state
.
Depending on the state
parameter, this method waits for one of
the actionability
checks to pass. This method throws when the element is detached while waiting, unless
waiting for the "hidden"
state.
"visible"
Wait until the element is visible.-
"hidden"
Wait until the element is not visible or not attached. Note that waiting for hidden does not throw when the element detaches. -
"stable"
Wait until the element is both visible and stable. "enabled"
Wait until the element is enabled.-
"disabled"
Wait until the element is not enabled. "editable"
Wait until the element is editable.
If the element does not satisfy the condition for the timeout
milliseconds, this method will throw.
Task WaitForElementStateAsync(ElementState state, ElementHandleWaitForElementStateOptions? options = null)
Parameters
state
ElementStateA state to wait for, see below for more details.
options
ElementHandleWaitForElementStateOptionsCall options
Returns
WaitForSelectorAsync(string, ElementHandleWaitForSelectorOptions?)
Use web assertions that assert visibility or a locator-based WaitForAsync(LocatorWaitForOptions?) instead.
Returns element specified by selector when it satisfies state
option. Returns null
if waiting for hidden
or detached
.
Wait for the selector
relative to the element handle to satisfy
state
option (either appear/disappear from dom, or become visible/hidden).
If at the moment of calling the method selector
already satisfies
the condition, the method will return immediately. If the selector doesn't satisfy
the condition for the timeout
milliseconds, the function will
throw.
**Usage**
await page.SetContentAsync("<div><span></span></div>");
var div = await page.QuerySelectorAsync("div");
// Waiting for the "span" selector relative to the div.
var span = await page.WaitForSelectorAsync("span", WaitForSelectorState.Attached);
Task<IElementHandle?> WaitForSelectorAsync(string selector, ElementHandleWaitForSelectorOptions? options = null)
Parameters
selector
stringA selector to query for.
options
ElementHandleWaitForSelectorOptionsCall options
Returns
Remarks
This method does not work across navigations, use WaitForSelectorAsync(string, PageWaitForSelectorOptions?) instead.