ElementHandle
- extends: [JSHandle]
ElementHandle представляет собой элемент DOM на странице. ElementHandles могут быть созданы с помощью метода page.$().
Использование ElementHandle не рекомендуется, вместо этого используйте объекты [Locator] и утверждения, ориентированные на веб.
const hrefElement = await page.$('a');
await hrefElement.click();
ElementHandle предотвращает сборку мусора для элемента DOM, если дескриптор не был освобожден с помощью jsHandle.dispose(). ElementHandles автоматически освобождаются, когда их родительский фрейм переходит по ссылке.
Экземпляры ElementHandle могут использоваться в качестве аргумента в методах page.$eval() и page.evaluate().
Разница между [Locator] и ElementHandle заключается в том, что ElementHandle указывает на конкретный элемент, в то время как [Locator] захватывает логику получения элемента.
В приведенном ниже примере дескриптор указывает на конкретный элемент DOM на странице. Если этот элемент изменит текст или будет использован React для рендеринга совершенно другого компонента, дескриптор все равно будет указывать на тот самый элемент DOM. Это может привести к неожиданному поведению.
const handle = await page.$('text=Submit');
// ...
await handle.hover();
await handle.click();
С помощью локатора каждый раз, когда используется element
, актуальный элемент DOM находится на странице с использованием селектора. Таким образом, в приведенном ниже фрагменте базовый элемент DOM будет найден дважды.
const locator = page.getByText('Submit');
// ...
await locator.hover();
await locator.click();
Методы
boundingBox
Добавлено до v1.9Этот метод возвращает ограничивающий прямоугольник элемента или null
, если элемент не виден. Ограничивающий прямоугольник рассчитывается относительно основного фрейма - что обычно совпадает с окном браузера.
Прокрутка влияет на возвращаемый ограничивающий прямоугольник, аналогично Element.getBoundingClientRect. Это означает, что x
и/или y
могут быть отрицательными.
Элементы из дочерних фреймов возвращают ограничивающий прямоугольник относительно основного фрейма, в отличие от Element.getBoundingClientRect.
Предполагая, что страница статична, безопасно использовать координаты ограничивающего прямоугольника для выполнения ввода. Например, следующий фрагмент должен кликнуть в центре элемента.
Использование
const box = await elementHandle.boundingBox();
await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2);
Возвращает
- [Promise]<[null] | [Object]>#
-
x
[number]координата x элемента в пикселях.
-
y
[number]координата y элемента в пикселях.
-
width
[number]ширина элемента в пикселях.
-
height
[number]высота элемента в пикселях.
-
contentFrame
Добавлено до v1.9Возвращает контентный фрейм для дескрипторов элементов, ссылающихся на узлы iframe, или null
в противном случае.
Использование
await elementHandle.contentFrame();
Возвращает
- [Promise]<[null] | [Frame]>#
ownerFrame
Добавлено до v1.9Возвращает фрейм, содержащий данный элемент.
Использование
await elementHandle.ownerFrame();
Возвращает
- [Promise]<[null] | [Frame]>#
waitForElementState
Добавлено до v1.9Возвращает, когда элемент удовлетворяет state.
В зависимости от параметра state этот метод ожидает, пока не пройдет одна из проверок actionability. Этот метод выбрасывает исключение, когда элемент отсоединяется во время ожидания, если не ожидается состояние "hidden"
.
"visible"
Ожидать, пока элемент не станет видимым."hidden"
Ожидать, пока элемент не станет невидимым или не будет отсоединен. Обратите внимание, что ожидание скрытия не выбрасывает исключение, когда элемент отсоединяется."stable"
Ожидать, пока элемент не станет как видимым, так и стабильным."enabled"
Ожидать, пока элемент не станет включенным."disabled"
Ожидать, пока элемент не станет выключенным."editable"
Ожидать, пока элемент не станет редактируемым.
Если элемент не удовлетворяет условию в течение timeout миллисекунд, этот метод выбрасывает исключение.
Использование
await elementHandle.waitForElementState(state);
await elementHandle.waitForElementState(state, options);
Аргументы
-
state
"visible" | "hidden" | "stable" | "enabled" | "disabled" | "editable"#Состояние, которое нужно ожидать, см. ниже для получения дополнительных сведений.
-
options
[Object] (необязательно)-
timeout
[number] (необязательно)#Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
- [Promise]<[void]>#
Устарело
$
Добавлено в: v1.9Используйте основанный на локаторе page.locator() вместо этого. Узнайте больше о локаторах.
Метод находит элемент, соответствующий указанному селектору, в поддереве ElementHandle
. Если ни один элемент не соответствует селектору, возвращает null
.
Использование
await elementHandle.$(selector);
Аргументы
-
selector
[string]#Селектор для запроса.
Возвращает
- [Promise]<[null] | [ElementHandle]>#
$$
Добавлено в: v1.9Используйте основанный на локаторе page.locator() вместо этого. Узнайте больше о локаторах.
Метод находит все элементы, соответствующие указанному селектору, в поддереве ElementHandle
. Если ни один элемент не соответствует селектору, возвращает пустой массив.
Использование
await elementHandle.$$(selector);
Аргументы
-
selector
[string]#Селектор для запроса.
Возвращает
- [Promise]<[Array]<[ElementHandle]>>#
$eval
Добавлено в: v1.9Этот метод не ждет, пока элемент пройдет проверки на возможность действия, и поэтому может привести к ненадежным тестам. Используйте locator.evaluate(), другие методы помощников [Locator] или утверждения, ориентированные на веб.
Возвращает значение, возвращаемое pageFunction.
Метод находит элемент, соответствующий указанному селектору, в поддереве ElementHandle
и передает его в качестве первого аргумента в pageFunction. Если ни один элемент не соответствует селектору, метод выбрасывает ошибку.
Если pageFunction возвращает [Promise], то elementHandle.$eval() будет ждать разрешения промиса и вернет его значение.
Использование
const tweetHandle = await page.$('.tweet');
expect(await tweetHandle.$eval('.like', node => node.innerText)).toBe('100');
expect(await tweetHandle.$eval('.retweets', node => node.innerText)).toBe('10');
Аргументы
-
selector
[string]#Селектор для запроса.
-
pageFunction
[function]([Element]) | [string]#Функция, которая будет оценена в контексте страницы.
-
arg
[EvaluationArgument] (необязательно)#Необязательный аргумент для передачи в pageFunction.
Возвращает
- [Promise]<[Serializable]>#
$$eval
Добавлено в: v1.9В большинстве случаев locator.evaluateAll(), другие методы помощников [Locator] и утверждения, ориентированные на веб, выполняют свою работу лучше.
Возвращает значение, возвращаемое pageFunction.
Метод находит все элементы, соответствующие указанному селектору, в поддереве ElementHandle
и передает массив найденных элементов в качестве первого аргумента в pageFunction.
Если pageFunction возвращает [Promise], то elementHandle.$$eval() будет ждать разрешения промиса и вернет его значение.
Использование
<div class="feed">
<div class="tweet">Hello!</div>
<div class="tweet">Hi!</div>
</div>
const feedHandle = await page.$('.feed');
expect(await feedHandle.$$eval('.tweet', nodes =>
nodes.map(n => n.innerText))).toEqual(['Hello!', 'Hi!'],
);
Аргументы
-
selector
[string]#Селектор для запроса.
-
pageFunction
[function]([Array]<[Element]>) | [string]#Функция, которая будет оценена в контексте страницы.
-
arg
[EvaluationArgument] (необязательно)#Необязательный аргумент для передачи в pageFunction.
Возвращает
- [Promise]<[Serializable]>#
check
Добавлено до v1.9Используйте основанный на локаторе locator.check() вместо этого. Узнайте больше о локаторах.
Этот метод отмечает элемент, выполняя следующие шаги:
- Убедитесь, что элемент является флажком или радио-вводом. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, этот метод возвращает сразу.
- Ожидать проверки actionability на элементе, если не установлена опция force.
- Прокрутить элемент в видимость, если это необходимо.
- Использовать page.mouse, чтобы кликнуть в центре элемента.
- Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.
Если элемент будет отсоединен от DOM в любой момент во время действия, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершились в течение указанного timeout, этот метод выбрасывает [TimeoutError]. Передача нулевого таймаута отключает это.
Использование
await elementHandle.check();
await elementHandle.check(options);
Аргументы
options
[Object] (необязательно)-
force
[boolean] (необязательно)#Нужно ли обойти проверки actionability. По умолчанию
false
. -
noWaitAfter
[boolean] (необязательно)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
position
[Object] (необязательно) Добавлено в: v1.11#-
x
[number] -
y
[number]
Точка, используемая относительно верхнего левого угла области заполнения элемента. Если не указано, используется какая-то видимая точка элемента.
-
-
timeout
[number] (необязательно)#Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout() методов. -
trial
[boolean] (необязательно) Добавлено в: v1.11#Когда установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно, чтобы дождаться, пока элемент будет готов к действию, не выполняя его.
-
Возвращает
- [Promise]<[void]>#
click
Добавлено до v1.9Используйте основанный на локаторе locator.click() вместо этого. Узнайте больше о локаторах.
Этот метод кликает по элементу, выполняя следующие шаги:
- Ожидать проверки actionability на элементе, если не установлена опция force.
- Прокрутить элемент в видимость, если это необходимо.
- Использовать page.mouse, чтобы кликнуть в центре элемента или в указанной позиции.
- Ожидать, пока инициированные навигации либо не завершатся успешно, либо не потерпят неудачу, если не установлена опция noWaitAfter.
Если элемент будет отсоединен от DOM в любой момент во время действия, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершились в течение указанного timeout, этот метод выбрасывает [TimeoutError]. Передача нулевого таймаута отключает это.
Использование
await elementHandle.click();
await elementHandle.click(options);
Аргументы
options
[Object] (необязательно)-
button
"left" | "right" | "middle" (необязательно)#По умолчанию
left
. -
clickCount
[number] (необязательно)#по умолчанию 1. См. [UIEvent.detail].
-
delay
[number] (необязательно)#Время ожидания между
mousedown
иmouseup
в миллисекундах. По умолчанию 0. -
force
[boolean] (необязательно)#Нужно ли обойти проверки actionability. По умолчанию
false
. -
modifiers
[Array]<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)#Модификаторы клавиш для нажатия. Обеспечивает, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
noWaitAfter
[boolean] (необязательно)#УстарелоЭта опция в будущем будет по умолчанию
true
.Действия, инициирующие навигацию, ожидают, пока эти навигации произойдут и страницы начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Вам потребуется эта опция только в исключительных случаях, таких как навигация к недоступным страницам. По умолчанию
false
. -
position
[Object] (необязательно)#-
x
[number] -
y
[number]
Точка, используемая относительно верхнего левого угла области заполнения элемента. Если не указано, используется какая-то видимая точка элемента.
-
-
timeout
[number] (необязательно)#Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout() методов. -
trial
[boolean] (необязательно) Добавлено в: v1.11#Когда установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно, чтобы дождаться, пока элемент будет готов к действию, не выполняя его.
-
Возвращает
- [Promise]<[void]>#
dblclick
Добавлено до v1.9Используйте основанный на локаторе locator.dblclick() вместо этого. Узнайте больше о локаторах.
Этот метод выполняет двойной клик по элементу, выполняя следующие шаги:
- Ожидать проверки actionability на элементе, если не установлена опция force.
- Прокрутить элемент в видимость, если это необходимо.
- Использовать page.mouse, чтобы дважды кликнуть в центре элемента или в указанной позиции.
Если элемент будет отсоединен от DOM в любой момент во время действия, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершились в течение указанного timeout, этот метод выбрасывает [TimeoutError]. Передача нулевого таймаута отключает это.
elementHandle.dblclick()
вызывает два события click
и одно событие dblclick
.
Использование
await elementHandle.dblclick();
await elementHandle.dblclick(options);
Аргументы
options
[Object] (необязательно)-
button
"left" | "right" | "middle" (необязательно)#По умолчанию
left
. -
delay
[number] (необязательно)#Время ожидания между
mousedown
иmouseup
в миллисекундах. По умолчанию 0. -
force
[boolean] (необязательно)#Нужно ли обойти проверки actionability. По умолчанию
false
. -
modifiers
[Array]<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)#Модификаторы клавиш для нажатия. Обеспечивает, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
noWaitAfter
[boolean] (необязательно)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
position
[Object] (необязательно)#-
x
[number] -
y
[number]
Точка, используемая относительно верхнего левого угла области заполнения элемента. Если не указано, используется какая-то видимая точка элемента.
-
-
timeout
[number] (необязательно)#Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout() методов. -
trial
[boolean] (необязательно) Добавлено в: v1.11#Когда установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно, чтобы дождаться, пока элемент будет готов к действию, не выполняя его.
-
Возвращает
- [Promise]<[void]>#
dispatchEvent
Добавлено до v1.9Используйте основанный на локаторе locator.dispatchEvent() вместо этого. Узнайте больше о локаторах.
Приведенный ниже фрагмент вызывает событие click
на элементе. Независимо от состояния видимости элемента, click
вызывается. Это эквивалентно вызову element.click().
Использование
await elementHandle.dispatchEvent('click');
Под капотом он создает экземпляр события на основе данного type, инициализирует его свойствами eventInit и вызывает его на элементе. События по умолчанию являются composed
, cancelable
и всплывают.
Поскольку eventInit является специфичным для события, пожалуйста, обратитесь к документации по событиям для списков начальных свойств:
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
Вы также можете указать JSHandle
в качестве значения свойства, если хотите, чтобы живые объекты были переданы в событие:
// Обратите внимание, что вы можете создать DataTransfer только в Chromium и Firefox
const dataTransfer = await page.evaluateHandle(() => new DataTransfer());
await elementHandle.dispatchEvent('dragstart', { dataTransfer });
Аргументы
-
type
[string]#Тип DOM-события:
"click"
,"dragstart"
и т.д. -
eventInit
[EvaluationArgument] (необязательно)#Необязательные свойства инициализации, специфичные для события.
Возвращает
- [Promise]<[void]>#
fill
Добавлено до v1.9Используйте основанный на локаторе locator.fill() вместо этого. Узнайте больше о локаторах.
Этот метод ожидает проверки actionability, фокусирует элемент, заполняет его и вызывает событие input
после заполнения. Обратите внимание, что вы можете передать пустую строку, чтобы очистить поле ввода.
Если целевой элемент не является элементом <input>
, <textarea>
или [contenteditable]
, этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>
, который имеет связанный контроль, будет заполнен именно контроль.
Чтобы отправить детализированные события клавиатуры, используйте locator.pressSequentially().
Использование
await elementHandle.fill(value);
await elementHandle.fill(value, options);
Аргументы
-
value
[string]#Значение, которое нужно установить для элемента
<input>
,<textarea>
или[contenteditable]
. -
options
[Object] (необязательно)-
force
[boolean] (необязательно) Добавлено в: v1.13#Нужно ли обойти проверки actionability. По умолчанию
false
. -
noWaitAfter
[boolean] (необязательно)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
timeout
[number] (необязательно)#Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout() методов.
-
Возвращает
- [Promise]<[void]>#
focus
Добавлено до v1.9Используйте основанный на локаторе locator.focus() вместо этого. Узнайте больше о локаторах.
Вызывает focus на элементе.
Использование
await elementHandle.focus();
Возвращает
- [Promise]<[void]>#
getAttribute
Добавлено до v1.9Используйте основанный на локаторе locator.getAttribute() вместо этого. Узнайте больше о локаторах.
Возвращает значение атрибута элемента.
Использование
await elementHandle.getAttribute(name);
Аргументы
-
name
[string]#Имя атрибута, для которого нужно получить значение.
Возвращает
- [Promise]<[null] | [string]>#
hover
Добавлено до v1.9Используйте основанный на локаторе locator.hover() вместо этого. Узнайте больше о локаторах.
Этот метод наводит курсор на элемент, выполняя следующие шаги:
- Ожидать проверки actionability на элементе, если не установлена опция force.
- Прокрутить элемент в видимость, если это необходимо.
- Использовать page.mouse, чтобы навести курсор на центр элемента или в указанной позиции.
Если элемент будет отсоединен от DOM в любой момент во время действия, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершились в течение указанного timeout, этот метод выбрасывает [TimeoutError]. Передача нулевого таймаута отключает это.
Использование
await elementHandle.hover();
await elementHandle.hover(options);
Аргументы
options
[Object] (необязательно)-
force
[boolean] (необязательно)#Нужно ли обойти проверки actionability. По умолчанию
false
. -
modifiers
[Array]<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)#Модификаторы клавиш для нажатия. Обеспечивает, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
noWaitAfter
[boolean] (необязательно) Добавлено в: v1.28#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
position
[Object] (необязательно)#-
x
[number] -
y
[number]
Точка, используемая относительно верхнего левого угла области заполнения элемента. Если не указано, используется какая-то видимая точка элемента.
-
-
timeout
[number] (необязательно)#Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout() методов. -
trial
[boolean] (необязательно) Добавлено в: v1.11#Когда установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно, чтобы дождаться, пока элемент будет готов к действию, не выполняя его.
-
Возвращает
- [Promise]<[void]>#
innerHTML
Добавлено до v1.9Используйте основанный на локаторе locator.innerHTML() вместо этого. Узнайте больше о локаторах.
Возвращает element.innerHTML
.
Использование
await elementHandle.innerHTML();
Возвращает
- [Promise]<[string]>#
innerText
Добавлено до v1.9Используйте основанный на локаторе locator.innerText() вместо этого. Узнайте больше о локаторах.
Возвращает element.innerText
.
Использование
await elementHandle.innerText();
Возвращает
- [Promise]<[string]>#
inputValue
Добавлено в: v1.13Используйте основанный на локаторе locator.inputValue() вместо этого. Узнайте больше о локаторах.
Возвращает input.value
для выбранного элемента <input>
, <textarea>
или <select>
.
Выбрасывает исключение для не входных элементов. Однако, если элемент находится внутри элемента <label>
, который имеет связанный контроль, возвращает значение контроля.
Использование
await elementHandle.inputValue();
await elementHandle.inputValue(options);
Аргументы
options
[Object] (необязательно)-
timeout
[number] (необязательно)#Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout() методов.
-
Возвращает
- [Promise]<[string]>#
isChecked
Добавлено до v1.9Используйте основанный на локаторе locator.isChecked() вместо этого. Узнайте больше о локаторах.
Возвращает, отмечен ли элемент. Выбрасывает исключение, если элемент не является флажком или радио-вводом.
Использование
await elementHandle.isChecked();
Возвращает
- [Promise]<[boolean]>#
isDisabled
Добавлено до v1.9Используйте основанный на локаторе locator.isDisabled() вместо этого. Узнайте больше о локаторах.
Возвращает, отключен ли элемент, противоположный enabled.
Использование
await elementHandle.isDisabled();
Возвращает
- [Promise]<[boolean]>#
isEditable
Добавлено до v1.9Используйте основанный на локаторе locator.isEditable() вместо этого. Узнайте больше о локаторах.
Возвращает, является ли элемент редактируемым.
Использование
await elementHandle.isEditable();
Возвращает
- [Promise]<[boolean]>#
isEnabled
Добавлено до v1.9Используйте основанный на локаторе locator.isEnabled() вместо этого. Узнайте больше о локаторах.
Возвращает, включен ли элемент enabled.
Использование
await elementHandle.isEnabled();
Возвращает
- [Promise]<[boolean]>#
isHidden
Добавлено до v1.9Используйте основанный на локаторе locator.isHidden() вместо этого. Узнайте больше о локаторах.
Возвращает, скрыт ли элемент, противоположный visible.
Использование
await elementHandle.isHidden();
Возвращает
- [Promise]<[boolean]>#
isVisible
Добавлено до v1.9Используйте основанный на локаторе locator.isVisible() вместо этого. Узнайте больше о локаторах.
Возвращает, виден ли элемент visible.
Использование
await elementHandle.isVisible();
Возвращает
- [Promise]<[boolean]>#
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"
также поддерживаются. Когда указано с модификатором, модификатор удерживается и нажимается во время нажатия последующей клавиши.
Использование
await elementHandle.press(key);
await elementHandle.press(key, options);
Аргументы
-
key
[string]#Имя клавиши для нажатия или символ для генерации, например
ArrowLeft
илиa
. -
options
[Object] (необязательно)-
delay
[number] (необязательно)#Время ожидания между
keydown
иkeyup
в миллисекундах. По умолчанию 0. -
noWaitAfter
[boolean] (необязательно)#УстарелоЭта опция будет по умолчанию
true
в будущем.Действия, инициирующие навигации, ожидают, пока эти навигации произойдут и страницы начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Вам потребуется эта опция только в исключительных случаях, таких как навигация к недоступным страницам. По умолчанию
false
. -
timeout
[number] (необязательно)#Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout() методов.
-
Возвращает
- [Promise]<[void]>#
screenshot
Добавлено до v1.9Используйте основанный на локаторе locator.screenshot() вместо этого. Узнайте больше о локаторах.
Этот метод захватывает скриншот страницы, обрезанный по размеру и положению этого конкретного элемента. Если элемент перекрыт другими элементами, он не будет фактически виден на скриншоте. Если элемент является прокручиваемым контейнером, только текущий прокрученный контент будет виден на скриншоте.
Этот метод ожидает проверки actionability, затем прокручивает элемент в видимость перед тем, как сделать скриншот. Если элемент отсоединен от DOM, метод выбрасывает ошибку.
Возвращает буфер с захваченным скриншотом.
Использование
await elementHandle.screenshot();
await elementHandle.screenshot(options);
Аргументы
options
[Object] (необязательно)-
animations
"disabled" | "allow" (необязательно)#Когда установлено в
"disabled"
, останавливает CSS-анимации, CSS-переходы и веб-анимации. Анимации обрабатываются по-разному в зависимости от их продолжительности:- конечные анимации быстро завершаются, чтобы сработало событие
transitionend
. - бесконечные анимации отменяются до начального состояния, а затем воспроизводятся после скриншота.
По умолчанию
"allow"
, что оставляет анимации нетронутыми. - конечные анимации быстро завершаются, чтобы сработало событие
-
caret
"hide" | "initial" (необязательно)#Когда установлено в
"hide"
, скриншот скроет текстовый курсор. Когда установлено в"initial"
, поведение текстового курсора не изменится. По умолчанию"hide"
. -
mask
[Array]<[Locator]> (необязательно)#Укажите локаторы, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут перекрыты розовым квадратом
#FF00FF
(настраиваемым с помощью maskColor), который полностью покрывает его ограничивающий прямоугольник. Маска также применяется к невидимым элементам, см. Сопоставление только видимых элементов, чтобы отключить это. -
maskColor
[string] (необязательно) Добавлено в: v1.35#Укажите цвет наложенного квадрата для замаскированных элементов в формате цвета CSS. Цвет по умолчанию - розовый
#FF00FF
. -
omitBackground
[boolean] (необязательно)#Скрывает белый фон по умолчанию и позволяет захватывать скриншоты с прозрачностью. Не применяется к изображениям
jpeg
. По умолчаниюfalse
. -
path
[string] (необязательно)#Путь к файлу для сохранения изображения. Тип скриншота будет определен по расширению файла. Если path является относительным путем, то он разрешается относительно текущего рабочего каталога. Если путь не указан, изображение не будет сохранено на диск.
-
quality
[number] (необязательно)#Качество изображения от 0 до 100. Не применяется к изображениям
png
. -
scale
"css" | "device" (необязательно)#Когда установлено в
"css"
, скриншот будет иметь один пиксель на каждый CSS-пиксель на странице. Для устройств с высоким разрешением это позволит сохранить скриншоты небольшими. Использование опции"device"
приведет к тому, что скриншоты будут иметь один пиксель на каждый пиксель устройства, поэтому скриншоты для устройств с высоким разрешением будут в два раза больше или даже больше.По умолчанию
"device"
. -
style
[string] (необязательно) Добавлено в: v1.41#Текст таблицы стилей, который будет применен при создании скриншота. Здесь вы можете скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы помочь вам создавать повторяемые скриншоты. Эта таблица стилей проникает в Shadow DOM и применяется к внутренним фреймам.
-
timeout
[number] (необязательно)#Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout() методов. -
type
"png" | "jpeg" (необязательно)#Укажите тип скриншота, по умолчанию
png
.
-
Возвращает
- [Promise]<[Buffer]>#
scrollIntoViewIfNeeded
Добавлено до v1.9Используйте основанный