ElementHandle
- расширяет: JSHandle
ElementHandle представляет собой элемент DOM на странице. ElementHandles могут быть созданы с помощью метода Page.QuerySelectorAsync().
Использование ElementHandle не рекомендуется, вместо этого используйте объекты Locator и утверждения, ориентированные на веб.
var handle = await page.QuerySelectorAsync("a");
await handle.ClickAsync();
ElementHandle предотвращает сборку мусора для DOM-элемента, если только дескриптор не будет удален с помощью JsHandle.DisposeAsync(). ElementHandles автоматически удаляются, когда их исходный фрейм переходит на другую страницу.
Экземпляры ElementHandle могут использоваться в качестве аргумента в методах Page.EvalOnSelectorAsync() и Page.EvaluateAsync().
Разница между Locator и ElementHandle заключается в том, что ElementHandle указывает на конкретный элемент, в то время как Locator захватывает логику того, как получить элемент.
В примере ниже handle указывает на конкретный DOM-элемент на странице. Если этот элемент изменяет текст или используется React для рендеринга совершенно другого компонента, handle все равно указывает на этот самый DOM-элемент. Это может привести к неожиданным поведениям.
var handle = await page.QuerySelectorAsync("text=Submit");
await handle.HoverAsync();
await handle.ClickAsync();
С локатором каждый раз, когда используется element
, актуальный DOM-элемент находится на странице с использованием селектора. Таким образом, в приведенном ниже фрагменте кода базовый DOM-элемент будет найден дважды.
var locator = page.GetByText("Submit");
await locator.HoverAsync();
await locator.ClickAsync();
Методы
BoundingBoxAsync
Добавлено до v1.9Этот метод возвращает ограничивающий прямоугольник элемента или null
, если элемент не виден. Ограничивающий прямоугольник рассчитывается относительно области просмотра основного фрейма, которая обычно совпадает с окном браузера.
Прокрутка влияет на возвращаемый ограничивающий прямоугольник, аналогично Element.getBoundingClientRect. Это означает, что x
и/или y
могут быть отрицательными.
Элементы из дочерних фреймов возвращают ограничивающий прямоугольник относительно основного фрейма, в отличие от Element.getBoundingClientRect.
Предполагая, что страница статична, безопасно использовать координаты ограничивающего прямоугольника для выполнения ввода. Например, следующий фрагмент должен кликнуть в центр элемента.
Использование
var box = await elementHandle.BoundingBoxAsync();
await page.Mouse.ClickAsync(box.X + box.Width / 2, box.Y + box.Height / 2);
Возвращает
- BoundingBox?#
-
x
[float]координата x элемента в пикселях.
-
y
[float]координата y элемента в пикселях.
-
width
[float]ширина элемента в пикселях.
-
height
[float]высота элемента в пикселях.
-
ContentFrameAsync
Добавлено до v1.9Возвращает фрейм содержимого для дескрипторов элементов, ссылающихся на узлы iframe, или null
в противном случае.
Использование
await ElementHandle.ContentFrameAsync();
Возвращает
OwnerFrameAsync
Добавлено до v1.9Возвращает фрейм, содержащий данный элемент.
Использование
await ElementHandle.OwnerFrameAsync();
Возвращает
WaitForElementStateAsync
Добавлено до v1.9Возвращает, когда элемент удовлетворяет state.
В зависимости от параметра state, этот метод ожидает, пока один из проверок actionability не пройдет. Этот метод выбрасывает исключение, когда элемент отсоединяется во время ожидания, если только не ожидается состояние "hidden"
.
"visible"
Ожидание, пока элемент не станет видимым."hidden"
Ожидание, пока элемент не станет невидимым или не будет отсоединен. Обратите внимание, что ожидание скрытия не выбрасывает исключение, когда элемент отсоединяется."stable"
Ожидание, пока элемент не станет одновременно видимым и стабильным."enabled"
Ожидание, пока элемент не станет включенным."disabled"
Ожидание, пока элемент не станет не включенным."editable"
Ожидание, пока элемент не станет редактируемым.
Если элемент не удовлетворяет условию в течение Timeout миллисекунд, этот метод выбрасывает исключение.
Использование
await ElementHandle.WaitForElementStateAsync(state, options);
Аргументы
-
state
enum ElementState { Visible, Hidden, Stable, Enabled, Disabled, Editable }
#Состояние, которое нужно ожидать, см. ниже для более подробной информации.
-
options
ElementHandleWaitForElementStateOptions?
(опционально)-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
Устаревшие
CheckAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.CheckAsync() вместо этого. Подробнее о локаторах.
Этот метод проверяет элемент, выполняя следующие шаги:
- Убедитесь, что элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, этот метод возвращается немедленно.
- Ожидание проверок actionability на элементе, если только не установлен параметр Force.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте Page.Mouse для клика в центр элемента.
- Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.
Если элемент отсоединяется от DOM в любой момент во время действия, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершены в течение указанного Timeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
await ElementHandle.CheckAsync(options);
Аргументы
options
ElementHandleCheckOptions?
(опционально)-
Нужно ли обходить проверки actionability. По умолчанию
false
. -
NoWaitAfter
bool? (опционально)#УстарелоЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
Position
Position? (опционально) Добавлено в: v1.11#-
X
[float] -
Y
[float]
Точка, используемая относительно верхнего левого угла элемента. Если не указано, используется видимая точка элемента.
-
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout(). -
Trial
bool? (опционально) Добавлено в: v1.11#Когда установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
ClickAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.ClickAsync() вместо этого. Подробнее о локаторах.
Этот метод кликает по элементу, выполняя следующие шаги:
- Ожидание проверок actionability на элементе, если только не установлен параметр Force.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте Page.Mouse для клика в центр элемента или указанную Position.
- Ожидание, пока инициированные навигации либо завершатся успешно, либо неудачно, если только не установлен параметр NoWaitAfter.
Если элемент отсоединяется от DOM в любой момент во время действия, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершены в течение указанного Timeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
await ElementHandle.ClickAsync(options);
Аргументы
options
ElementHandleClickOptions?
(опционально)-
Button
enum MouseButton { Left, Right, Middle }?
(опционально)#По умолчанию
left
. -
ClickCount
int? (опционально)#по умолчанию 1. См. UIEvent.detail.
-
Delay
[float]? (опционально)#Время ожидания между
mousedown
иmouseup
в миллисекундах. По умолчанию 0. -
Нужно ли обходить проверки actionability. По умолчанию
false
. -
Modifiers
IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }
> (опционально)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы обратно. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
NoWaitAfter
bool? (опционально)#УстарелоЭтот параметр по умолчанию будет
true
в будущем.Действия, инициирующие навигации, ожидают, пока эти навигации произойдут и страницы начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Вам понадобится этот параметр только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false
. -
Position
Position? (опционально)#-
X
[float] -
Y
[float]
Точка, используемая относительно верхнего левого угла элемента. Если не указано, используется видимая точка элемента.
-
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout(). -
Trial
bool? (опционально) Добавлено в: v1.11#Когда установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
DblClickAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.DblClickAsync() вместо этого. Подробнее о локаторах.
Этот метод выполняет двойной клик по элементу, выполняя следующие шаги:
- Ожидание проверок actionability на элементе, если только не установлен параметр Force.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте Page.Mouse для двойного клика в центр элемента или указанную Position.
Если элемент отсоединяется от DOM в любой момент во время действия, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершены в течение указанного Timeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
elementHandle.dblclick()
генерирует два события click
и одно событие dblclick
.
Использование
await ElementHandle.DblClickAsync(options);
Аргументы
options
ElementHandleDblClickOptions?
(опционально)-
Button
enum MouseButton { Left, Right, Middle }?
(опционально)#По умолчанию
left
. -
Delay
[float]? (опционально)#Время ожидания между
mousedown
иmouseup
в миллисекундах. По умолчанию 0. -
Нужно ли обходить проверки actionability. По умолчанию
false
. -
Modifiers
IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }
> (опционально)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы обратно. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
NoWaitAfter
bool? (опционально)#УстарелоЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
Position
Position? (опционально)#-
X
[float] -
Y
[float]
Точка, используемая относительно верхнего левого угла элемента. Если не указано, используется видимая точка элемента.
-
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout(). -
Trial
bool? (опционально) Добавлено в: v1.11#Когда установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
DispatchEventAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.DispatchEventAsync() вместо этого. Подробнее о локаторах.
Приведенный ниже фрагмент кода генерирует событие click
на элементе. Независимо от состояния видимости элемента, click
генерируется. Это эквивалентно вызову element.click().
Использование
await elementHandle.DispatchEventAsync("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 elementHandle.DispatchEventAsync("dragstart", new Dictionary<string, object>
{
{ "dataTransfer", dataTransfer }
});
Аргументы
-
Тип DOM-события:
"click"
,"dragstart"
, и т.д. -
eventInit
EvaluationArgument? (опционально)#Опциональные специфичные для события свойства инициализации.
Возвращает
EvalOnSelectorAsync
Добавлено в: v1.9Этот метод не ожидает, пока элемент пройдет проверки actionability, и поэтому может привести к нестабильным тестам. Используйте Locator.EvaluateAsync(), другие вспомогательные методы Locator или утверждения, ориентированные на веб.
Возвращает возвращаемое значение expression.
Метод находит элемент, соответствующий указанному селектору в поддереве ElementHandle
, и передает его в качестве первого аргумента в expression. Если ни один элемент не соответствует селектору, метод выбрасывает ошибку.
Если expression возвращает Promise, то ElementHandle.EvalOnSelectorAsync() будет ожидать разрешения промиса и возвращать его значение.
Использование
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"));
Аргументы
-
Селектор для запроса.
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Опциональный аргумент для передачи в expression.
Возвращает
- [object]#
EvalOnSelectorAllAsync
Добавлено в: v1.9В большинстве случаев Locator.EvaluateAllAsync(), другие вспомогательные методы Locator и утверждения, ориентированные на веб, выполняют работу лучше.
Возвращает возвращаемое значение expression.
Метод находит все элементы, соответствующие указанному селектору в поддереве ElementHandle
, и передает массив найденных элементов в качестве первого аргумента в expression.
Если expression возвращает Promise, то ElementHandle.EvalOnSelectorAllAsync() будет ожидать разрешения промиса и возвращать его значение.
Использование
<div class="feed">
<div class="tweet">Hello!</div>
<div class="tweet">Hi!</div>
</div>
var feedHandle = await page.QuerySelectorAsync(".feed");
Assert.AreEqual(new [] { "Hello!", "Hi!" }, await feedHandle.EvalOnSelectorAllAsync<string[]>(".tweet", "nodes => nodes.map(n => n.innerText)"));
Аргументы
-
Селектор для запроса.
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Опциональный аргумент для передачи в expression.
Возвращает
- [object]#
FillAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.FillAsync() вместо этого. Подробнее о локаторах.
Этот метод ожидает проверок actionability, фокусируется на элементе, заполняет его и генерирует событие input
после заполнения. Обратите внимание, что вы можете передать пустую строку, чтобы очистить поле ввода.
Если целевой элемент не является элементом <input>
, <textarea>
или [contenteditable]
, этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>
, который имеет связанный control, будет заполнен именно этот элемент управления.
Для отправки более детализированных событий клавиатуры используйте Locator.PressSequentiallyAsync().
Использование
await ElementHandle.FillAsync(value, options);
Аргументы
-
Значение для установки для элемента
<input>
,<textarea>
или[contenteditable]
. -
options
ElementHandleFillOptions?
(опционально)-
Force
bool? (опционально) Добавлено в: v1.13#Нужно ли обходить проверки actionability. По умолчанию
false
. -
NoWaitAfter
bool? (опционально)#УстарелоЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout() методы.
-
Возвращает
FocusAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.FocusAsync() вместо этого. Подробнее о локаторах.
Вызывает focus на элементе.
Использование
await ElementHandle.FocusAsync();
Возвращает
GetAttributeAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.GetAttributeAsync() вместо этого. Подробнее о локаторах.
Возвращает значение атрибута элемента.
Использование
await ElementHandle.GetAttributeAsync(name);
Аргументы
Возвращает
HoverAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.HoverAsync() вместо этого. Подробнее о локаторах.
Этот метод наводит курсор на элемент, выполняя следующие шаги:
- Ожидание проверки действительности элемента, если не установлена опция Force.
- Прокрутка элемента в видимую область, если это необходимо.
- Использование Page.Mouse для наведения курсора на центр элемента или указанную позицию.
Если элемент отсоединяется от DOM в любой момент во время действия, этот метод выбрасывает исключение.
Если все шаги не завершены в течение указанного времени ожидания, этот метод выбрасывает TimeoutError. Установка времени ожидания в ноль отключает его.
Использование
await ElementHandle.HoverAsync(options);
Аргументы
options
ElementHandleHoverOptions?
(опционально)-
Пропускать ли проверки действительности. По умолчанию
false
. -
Modifiers
IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }
> (опционально)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается как "Control" на Windows и Linux и как "Meta" на macOS.
-
NoWaitAfter
bool? (опционально) Добавлено в: v1.28#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Position
Position? (опционально)#-
X
[float] -
Y
[float]
Точка, используемая относительно верхнего левого угла области отступов элемента. Если не указано, используется видимая точка элемента.
-
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Установите0
, чтобы отключить время ожидания. Значение по умолчанию можно изменить с помощью методов BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout(). -
Trial
bool? (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
InnerHTMLAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.InnerHTMLAsync() вместо этого. Подробнее о локаторах.
Возвращает element.innerHTML
.
Использование
await ElementHandle.InnerHTMLAsync();
Возвращает
InnerTextAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.InnerTextAsync() вместо этого. Подробнее о локаторах.
Возвращает element.innerText
.
Использование
await ElementHandle.InnerTextAsync();
Возвращает
InputValueAsync
Добавлено в: v1.13Используйте основанный на локаторах метод Locator.InputValueAsync() вместо этого. Подробнее о локаторах.
Возвращает input.value
для выбранного элемента <input>
, <textarea>
или <select>
.
Выбрасывает исключение для элементов, не являющихся вводом. Однако, если элемент находится внутри элемента <label>
, который имеет ассоциированный контрол, возвращает значение контрола.
Использование
await ElementHandle.InputValueAsync(options);
Аргументы
options
ElementHandleInputValueOptions?
(опционально)-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Установите0
, чтобы отключить время ожидания. Значение по умолчанию можно изменить с помощью методов BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
IsCheckedAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.IsCheckedAsync() вместо этого. Подробнее о локаторах.
Возвращает, отмечен ли элемент. Выбрасывает исключение, если элемент не является флажком или радиокнопкой.
Использование
await ElementHandle.IsCheckedAsync();
Возвращает
IsDisabledAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.IsDisabledAsync() вместо этого. Подробнее о локаторах.
Возвращает, отключен ли элемент, противоположность включенному.
Использование
await ElementHandle.IsDisabledAsync();
Возвращает
IsEditableAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.IsEditableAsync() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент редактируемым.
Использование
await ElementHandle.IsEditableAsync();
Возвращает
IsEnabledAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.IsEnabledAsync() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент включенным.
Использование
await ElementHandle.IsEnabledAsync();
Возвращает
IsHiddenAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.IsHiddenAsync() вместо этого. Подробнее о локаторах.
Возвращает, скрыт ли элемент, противоположность видимому.
Использование
await ElementHandle.IsHiddenAsync();
Возвращает
IsVisibleAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.IsVisibleAsync() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент видимым.
Использование
await ElementHandle.IsVisibleAsync();
Возвращает
PressAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.PressAsync() вместо этого. Подробнее о локаторах.
Фокусирует элемент, а затем использует 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
.
Удержание Shift
будет вводить текст, соответствующий key в верхнем регистре.
Если key является одним символом, он чувствителен к регистру, поэтому значения a
и A
будут генерировать разные соответствующие тексты.
Также поддерживаются сочетания клавиш, такие как key: "Control+o"
, key: "Control++
или key: "Control+Shift+T"
. При указании с модификатором, модификатор нажимается и удерживается, пока не будет нажата последующая клавиша.
Использование
await ElementHandle.PressAsync(key, options);
Аргументы
-
Имя клавиши для нажатия или символ для генерации, например,
ArrowLeft
илиa
. -
options
ElementHandlePressOptions?
(опционально)-
Delay
[float]? (опционально)#Время ожидания между
keydown
иkeyup
в миллисекундах. По умолчанию 0. -
NoWaitAfter
bool? (опционально)#УстарелоЭта опция по умолчанию будет
true
в будущем.Действия, инициирующие навигацию, ожидают, пока эти навигации не произойдут и страницы не начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Вам понадобится эта опция только в исключительных случаях, таких как переход на недоступные страницы. По умолчанию
false
. -
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Установите0
, чтобы отключить время ожидания. Значение по умолчанию можно изменить с помощью методов BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
QuerySelectorAsync
Добавлено в: v1.9Используйте основанный на локаторах метод Page.Locator() вместо этого. Подробнее о локаторах.
Метод находит элемент, соответствующий указанному селектору в поддереве ElementHandle
. Если элементы, соответствующие селектору, не найдены, возвращает null
.
Использование
await ElementHandle.QuerySelectorAsync(selector);
Аргументы
Возвращает
QuerySelectorAllAsync
Добавлено в: v1.9Используйте основанный на локаторах метод Page.Locator() вместо этого. Подробнее о локаторах.
Метод находит все элементы, соответствующие указанному селектору в поддереве ElementHandle
. Если элементы, соответствующие селектору, не найдены, возвращает пустой массив.
Использование
await ElementHandle.QuerySelectorAllAsync(selector);
Аргументы
Возвращает
ScreenshotAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.ScreenshotAsync() вместо этого. Подробнее о локаторах.
Этот метод делает снимок экрана страницы, обрезанный до размера и положения этого конкретного элемента. Если элемент закрыт другими элементами, он не будет фактически виден на снимке экрана. Если элемент является прокручиваемым контейнером, на снимке экрана будет виден только текущий прокручиваемый контент.
Этот метод ожидает проверки действительности, затем прокручивает элемент в видимую область перед созданием снимка экрана. Если элемент отсоединен от DOM, метод выбрасывает ошибку.
Возвращает буфер с захваченным снимком экрана.
Использование
await ElementHandle.ScreenshotAsync(options);
Аргументы
options
ElementHandleScreenshotOptions?
(опционально)-
Animations
enum ScreenshotAnimations { Disabled, Allow }?
(опционально)#Если установлено значение
"disabled"
, останавливает CSS-анимации, CSS-переходы и веб-анимации. Анимации получают различное обращение в зависимости от их продолжительности:- конечные анимации быстро перематываются до завершения, чтобы они вызвали событие
transitionend
. - бесконечные анимации отменяются до начального состояния, а затем воспроизводятся снова после создания снимка экрана.
По умолчанию
"allow"
, что оставляет анимации нетронутыми. - конечные анимации быстро перематываются до завершения, чтобы они вызвали событие
-
Caret
enum ScreenshotCaret { Hide, Initial }?
(опционально)#Если установлено значение
"hide"
, снимок экрана скроет текстовый курсор. Если установлено значение"initial"
, поведение текстового курсора не будет изменено. По умолчанию"hide"
. -
Mask
IEnumerable?<Locator> (опционально)#Укажите локаторы, которые должны быть замаскированы при создании снимка экрана. Замаскированные элементы будут перекрыты розовым прямоугольником
#FF00FF
(настраивается с помощью MaskColor), который полностью покрывает их ограничивающий прямоугольник. Маска также применяется к невидимым элементам, см. Соответствие только видимым элементам, чтобы отключить это. -
MaskColor
string? (опционально) Добавлено в: v1.35#Укажите цвет перекрывающего прямоугольника для замаскированных элементов в формате цвета CSS. Цвет по умолчанию - розовый
#FF00FF
. -
OmitBackground
bool? (опционально)#Скрывает белый фон по умолчанию и позволяет захватывать снимки экрана с прозрачностью. Не применимо к изображениям
jpeg
. По умолчаниюfalse
. -
Путь к файлу для сохранения изображения. Тип снимка экрана будет определен по расширению файла. Если Path является относительным путем, то он разрешается относительно текущей рабочей директории. Если путь не указан, изображение не будет сохранено на диск.
-
Качество изображения, от 0 до 100. Не применимо к изображениям
png
. -
Scale
enum ScreenshotScale { Css, Device }?
(опционально)#Если установлено значение
"css"
, снимок экрана будет иметь один пиксель на каждый css-пиксель на странице. Для устройств с высоким разрешением это позволит сохранить снимки экрана небольшими. Использование опции"device"
создаст один пиксель на каждый пиксель устройства, так что снимки экрана устройств с высоким разрешением будут в два раза больше или даже больше.По умолчанию
"device"
. -
Style
string? (опционально) Добавлено в: v1.41#Текст таблицы стилей для применения при создании снимка экрана. Здесь вы можете скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы помочь вам создать повторяемые снимки экрана. Эта таблица стилей проникает в Shadow DOM и применяется к внутренним фреймам.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Установите0
, чтобы отключить время ожидания. Значение по умолчанию можно изменить с помощью методов BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout(). -
Type
enum ScreenshotType { Png, Jpeg }?
(опционально)#Укажите тип снимка экрана, по умолчанию
png
.
-
Возвращает
ScrollIntoViewIfNeededAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.ScrollIntoViewIfNeededAsync() вместо этого. Подробнее о локаторах.
Этот метод ожидает проверки действительности, затем пытается прокрутить элемент в видимую область, если он не полностью виден, как это определено ratio
в IntersectionObserver.
Вызывает ошибку, если elementHandle
не указывает на элемент, подключенный к Document или ShadowRoot.
Смотрите прокрутка для альтернативных способов прокрутки.
Использование
await ElementHandle.ScrollIntoViewIfNeededAsync(options);
Аргументы
options
ElementHandleScrollIntoViewIfNeededOptions?
(необязательно)-
Timeout
[float]? (необязательно)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
SelectOptionAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.SelectOptionAsync() вместо этого. Подробнее о локаторах.
Этот метод ожидает проверки действительности, ждет, пока все указанные опции будут присутствовать в элементе <select>
, и выбирает эти опции.
Если целевой элемент не является элементом <select>
, этот метод вызывает ошибку. Однако, если элемент находится внутри элемента <label>
, который имеет связанную управляющую часть, будет использована управляющая часть.
Возвращает массив значений опций, которые были успешно выбраны.
Вызывает события change
и input
, как только все предоставленные опции были выбраны.
Использование
// Одиночный выбор, соответствующий значению или метке
await handle.SelectOptionAsync(new[] { "blue" });
// одиночный выбор, соответствующий метке
await handle.SelectOptionAsync(new[] { new SelectOptionValue() { Label = "blue" } });
// множественный выбор
await handle.SelectOptionAsync(new[] { "red", "green", "blue" });
// множественный выбор для blue, red и второй опции
await handle.SelectOptionAsync(new[] {
new SelectOptionValue() { Label = "blue" },
new SelectOptionValue() { Index = 2 },
new SelectOptionValue() { Value = "red" }});
Аргументы
values
string | ElementHandle | IEnumerable |SelectOption
| IEnumerable | IEnumerable?#-
Value
string? (необязательно)Соответствует
option.value
. Необязательно. -
Label
string? (необязательно)Соответствует
option.label
. Необязательно. -
Index
int? (необязательно)Соответствует индексу. Необязательно.
<select>
есть атрибутmultiple
, все соответствующие опции выбираются, в противном случае выбирается только первая опция, соответствующая одной из переданных опций. Строковые значения соответствуют как значениям, так и меткам. Опция считается соответствующей, если все указанные свойства совпадают.-
options
ElementHandleSelectOptionOptions?
(необязательно)-
Force
bool? (необязательно) Добавлено в: v1.13#Нужно ли обходить проверки действительности. По умолчанию
false
. -
NoWaitAfter
bool? (необязательно)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Timeout
[float]? (необязательно)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
SelectTextAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.SelectTextAsync() вместо этого. Подробнее о локаторах.
Этот метод ожидает проверки действительности, затем фокусируется на элементе и выделяет весь его текстовый контент.
Если элемент находится внутри элемента <label>
, который имеет связанную управляющую часть, фокусируется и выделяет текст в управляющей части.
Использование
await ElementHandle.SelectTextAsync(options);
Аргументы
options
ElementHandleSelectTextOptions?
(необязательно)-
Force
bool? (необязательно) Добавлено в: v1.13#Нужно ли обходить проверки действительности. По умолчанию
false
. -
Timeout
[float]? (необязательно)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout() методы.
-
Возвращает
SetCheckedAsync
Добавлено в: v1.15Используйте основанный на локаторах метод Locator.SetCheckedAsync() вместо этого. Подробнее о локаторах.
Этот метод отмечает или снимает отметку с элемента, выполняя следующие шаги:
- Убедитесь, что элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку.
- Если элемент уже имеет правильное состояние отметки, этот метод возвращается немедленно.
- Ожидайте проверки действительности на совпадающем элементе, если только не установлена опция Force. Если элемент отсоединен во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.Mouse для нажатия в центре элемента.
- Убедитесь, что элемент теперь отмечен или снята отметка. Если нет, этот метод вызывает ошибку.
Если все шаги вместе не завершились в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
await ElementHandle.SetCheckedAsync(checked, options);
Аргументы
-
Нужно ли отметить или снять отметку с флажка.
-
options
ElementHandleSetCheckedOptions?
(необязательно)-
Нужно ли обходить проверки действительности. По умолчанию
false
. -
NoWaitAfter
bool? (необязательно)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Position
Position? (необязательно)#-
X
[float] -
Y
[float]
Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
-
Timeout
[float]? (необязательно)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout() методы. -
Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
SetInputFilesAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.SetInputFilesAsync() вместо этого. Подробнее о локаторах.
Устанавливает значение файлового ввода в эти пути к файлам или файлы. Если некоторые из filePaths
являются относительными путями, они разрешаются относительно текущего рабочего каталога. Для пустого массива очищает выбранные файлы. Для входных данных с атрибутом [webkitdirectory]
поддерживается только один путь к каталогу.
Этот метод ожидает, что ElementHandle указывает на элемент ввода. Однако, если элемент находится внутри элемента <label>
, который имеет связанную управляющую часть, нацеливается на управляющую часть.
Использование
await ElementHandle.SetInputFilesAsync(files, options);
Аргументы
files
string | IEnumerable<string> |FilePayload
| IEnumerable<FilePayload
>#options
ElementHandleSetInputFilesOptions?
(необязательно)-
NoWaitAfter
bool? (необязательно)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Timeout
[float]? (необязательно)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout() методы.
-
Возвращает
TapAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.TapAsync() вместо этого. Подробнее о локаторах.
Этот метод выполняет нажатие на элемент, выполняя следующие шаги:
- Ожидайте проверки действительности на элементе, если только не установлена опция Force.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.Touchscreen для нажатия в центре элемента или в указанной Position.
Если элемент отсоединен от DOM в любой момент во время действия, этот метод вызывает ошибку.
Если все шаги вместе не завершились в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
elementHandle.tap()
требует, чтобы опция hasTouch
контекста браузера была установлена в true.
Использование
await ElementHandle.TapAsync(options);
Аргументы
options
ElementHandleTapOptions?
(необязательно)-
Нужно ли обходить проверки действительности. По умолчанию
false
. -
Modifiers
IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }
> (необязательно)#Модификаторные клавиши для нажатия. Обеспечивает, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы обратно. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
NoWaitAfter
bool? (необязательно)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Position
Position? (необязательно)#-
X
[float] -
Y
[float]
Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
-
Timeout
[float]? (необязательно)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout() методы. -
Trial
bool? (необязательно) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
TextContentAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.TextContentAsync() вместо этого. Подробнее о локаторах.
Возвращает node.textContent
.
Использование
await ElementHandle.TextContentAsync();
Возвращает
TypeAsync
Добавлено до версии v1.9В большинстве случаев вам следует использовать Locator.FillAsync() вместо этого. Вам нужно нажимать клавиши одну за другой, только если на странице есть специальная обработка клавиатуры - в этом случае используйте Locator.PressSequentiallyAsync().
Фокусируется на элементе, а затем отправляет события keydown
, keypress
/input
и keyup
для каждого символа в тексте.
Чтобы нажать специальную клавишу, такую как Control
или ArrowDown
, используйте ElementHandle.PressAsync().
Использование
Аргументы
-
Текст для ввода в сфокусированный элемент.
-
options
ElementHandleTypeOptions?
(необязательно)-
Delay
[float]? (необязательно)#Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию 0.
-
NoWaitAfter
bool? (необязательно)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Timeout
[float]? (необязательно)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout() методы.
-
Возвращает
UncheckAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.UncheckAsync() вместо этого. Подробнее о локаторах.
Этот метод снимает отметку с элемента, выполняя следующие шаги:
- Убедитесь, что элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку. Если элемент уже снят с отметки, этот метод возвращается немедленно.
- Ожидайте проверки действительности на элементе, если только не установлена опция Force.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.Mouse для нажатия в центре элемента.
- Убедитесь, что элемент теперь снят с отметки. Если нет, этот метод вызывает ошибку.
Если элемент отсоединен от DOM в любой момент во время действия, этот метод вызывает ошибку.
Если все шаги вместе не завершились в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
await ElementHandle.UncheckAsync(options);
Аргументы
options
ElementHandleUncheckOptions?
(необязательно)-
Нужно ли обходить проверки действительности. По умолчанию
false
. -
NoWaitAfter
bool? (необязательно)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Position
Position? (необязательно) Добавлено в: v1.11#-
X
[float] -
Y
[float]
Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
-
Timeout
[float]? (необязательно)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout() методы. -
Trial
bool? (необязательно) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
WaitForSelectorAsync
Добавлено до версии v1.9Используйте веб-утверждения, которые утверждают видимость, или основанный на локаторах метод Locator.WaitForAsync() вместо этого.
Возвращает элемент, указанный селектором, когда он удовлетворяет опции State. Возвращает null
, если ожидается hidden
или detached
.
Ожидает, пока селектор относительно элемента handle удовлетворит опции State (либо появится/исчезнет из DOM, либо станет видимым/скрытым). Если в момент вызова метода селектор уже удовлетворяет условию, метод вернется немедленно. Если селектор не удовлетворяет условию в течение Timeout миллисекунд, функция вызовет ошибку.
Использование
await page.SetContentAsync("<div><span></span></div>");
var div = await page.QuerySelectorAsync("div");
// Ожидание селектора "span" относительно div.
var span = await page.WaitForSelectorAsync("span", WaitForSelectorState.Attached);
Этот метод не работает через навигации, используйте Page.WaitForSelectorAsync() вместо этого.
Аргументы
-
Селектор для запроса.
-
options
ElementHandleWaitForSelectorOptions?
(необязательно)-
State
enum WaitForSelectorState { Attached, Detached, Visible, Hidden }?
(необязательно)#По умолчанию
'visible'
. Может быть:'attached'
- ожидание, пока элемент будет присутствовать в DOM.'detached'
- ожидание, пока элемент не будет присутствовать в DOM.'visible'
- ожидание, пока элемент не будет иметь пустую рамку и не будетvisibility:hidden
. Обратите внимание, что элемент без какого-либо контента или сdisplay:none
имеет пустую рамку и не считается видимым.'hidden'
- ожидание, пока элемент будет либо отсоединен от DOM, либо иметь пустую рамку илиvisibility:hidden
. Это противоположно опции'visible'
.
-
Strict
bool? (необязательно) Добавлено в: v1.15#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Timeout
[float]? (необязательно)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout() методы.
-
Возвращает