Skip to main content

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 elementHandle.boundingBox

Этот метод возвращает ограничивающий прямоугольник элемента или 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 elementHandle.contentFrame

Возвращает контентный фрейм для дескрипторов элементов, ссылающихся на узлы iframe, или null в противном случае.

Использование

await elementHandle.contentFrame();

Возвращает

  • [Promise]<[null] | [Frame]>#

ownerFrame

Добавлено до v1.9 elementHandle.ownerFrame

Возвращает фрейм, содержащий данный элемент.

Использование

await elementHandle.ownerFrame();

Возвращает

  • [Promise]<[null] | [Frame]>#

waitForElementState

Добавлено до v1.9 elementHandle.waitForElementState

Возвращает, когда элемент удовлетворяет 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 elementHandle.$
Не рекомендуется

Используйте основанный на локаторе page.locator() вместо этого. Узнайте больше о локаторах.

Метод находит элемент, соответствующий указанному селектору, в поддереве ElementHandle. Если ни один элемент не соответствует селектору, возвращает null.

Использование

await elementHandle.$(selector);

Аргументы

  • selector [string]#

    Селектор для запроса.

Возвращает

  • [Promise]<[null] | [ElementHandle]>#

$$

Добавлено в: v1.9 elementHandle.$$
Не рекомендуется

Используйте основанный на локаторе page.locator() вместо этого. Узнайте больше о локаторах.

Метод находит все элементы, соответствующие указанному селектору, в поддереве ElementHandle. Если ни один элемент не соответствует селектору, возвращает пустой массив.

Использование

await elementHandle.$$(selector);

Аргументы

  • selector [string]#

    Селектор для запроса.

Возвращает

  • [Promise]<[Array]<[ElementHandle]>>#

$eval

Добавлено в: v1.9 elementHandle.$eval
Не рекомендуется

Этот метод не ждет, пока элемент пройдет проверки на возможность действия, и поэтому может привести к ненадежным тестам. Используйте 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 elementHandle.$$eval
Не рекомендуется

В большинстве случаев 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 elementHandle.check
Не рекомендуется

Используйте основанный на локаторе locator.check() вместо этого. Узнайте больше о локаторах.

Этот метод отмечает элемент, выполняя следующие шаги:

  1. Убедитесь, что элемент является флажком или радио-вводом. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, этот метод возвращает сразу.
  2. Ожидать проверки actionability на элементе, если не установлена опция force.
  3. Прокрутить элемент в видимость, если это необходимо.
  4. Использовать page.mouse, чтобы кликнуть в центре элемента.
  5. Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.

Если элемент будет отсоединен от 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 elementHandle.click
Не рекомендуется

Используйте основанный на локаторе locator.click() вместо этого. Узнайте больше о локаторах.

Этот метод кликает по элементу, выполняя следующие шаги:

  1. Ожидать проверки actionability на элементе, если не установлена опция force.
  2. Прокрутить элемент в видимость, если это необходимо.
  3. Использовать page.mouse, чтобы кликнуть в центре элемента или в указанной позиции.
  4. Ожидать, пока инициированные навигации либо не завершатся успешно, либо не потерпят неудачу, если не установлена опция 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 elementHandle.dblclick
Не рекомендуется

Используйте основанный на локаторе locator.dblclick() вместо этого. Узнайте больше о локаторах.

Этот метод выполняет двойной клик по элементу, выполняя следующие шаги:

  1. Ожидать проверки actionability на элементе, если не установлена опция force.
  2. Прокрутить элемент в видимость, если это необходимо.
  3. Использовать page.mouse, чтобы дважды кликнуть в центре элемента или в указанной позиции.

Если элемент будет отсоединен от DOM в любой момент во время действия, этот метод выбрасывает исключение.

Когда все шаги в совокупности не завершились в течение указанного timeout, этот метод выбрасывает [TimeoutError]. Передача нулевого таймаута отключает это.

note

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 elementHandle.dispatchEvent
Не рекомендуется

Используйте основанный на локаторе locator.dispatchEvent() вместо этого. Узнайте больше о локаторах.

Приведенный ниже фрагмент вызывает событие click на элементе. Независимо от состояния видимости элемента, click вызывается. Это эквивалентно вызову element.click().

Использование

await elementHandle.dispatchEvent('click');

Под капотом он создает экземпляр события на основе данного type, инициализирует его свойствами eventInit и вызывает его на элементе. События по умолчанию являются composed, cancelable и всплывают.

Поскольку eventInit является специфичным для события, пожалуйста, обратитесь к документации по событиям для списков начальных свойств:

Вы также можете указать 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 elementHandle.fill
Не рекомендуется

Используйте основанный на локаторе 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 elementHandle.focus
Не рекомендуется

Используйте основанный на локаторе locator.focus() вместо этого. Узнайте больше о локаторах.

Вызывает focus на элементе.

Использование

await elementHandle.focus();

Возвращает

  • [Promise]<[void]>#

getAttribute

Добавлено до v1.9 elementHandle.getAttribute
Не рекомендуется

Используйте основанный на локаторе locator.getAttribute() вместо этого. Узнайте больше о локаторах.

Возвращает значение атрибута элемента.

Использование

await elementHandle.getAttribute(name);

Аргументы

  • name [string]#

    Имя атрибута, для которого нужно получить значение.

Возвращает

  • [Promise]<[null] | [string]>#

hover

Добавлено до v1.9 elementHandle.hover
Не рекомендуется

Используйте основанный на локаторе locator.hover() вместо этого. Узнайте больше о локаторах.

Этот метод наводит курсор на элемент, выполняя следующие шаги:

  1. Ожидать проверки actionability на элементе, если не установлена опция force.
  2. Прокрутить элемент в видимость, если это необходимо.
  3. Использовать 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 elementHandle.innerHTML
Не рекомендуется

Используйте основанный на локаторе locator.innerHTML() вместо этого. Узнайте больше о локаторах.

Возвращает element.innerHTML.

Использование

await elementHandle.innerHTML();

Возвращает

  • [Promise]<[string]>#

innerText

Добавлено до v1.9 elementHandle.innerText
Не рекомендуется

Используйте основанный на локаторе locator.innerText() вместо этого. Узнайте больше о локаторах.

Возвращает element.innerText.

Использование

await elementHandle.innerText();

Возвращает

  • [Promise]<[string]>#

inputValue

Добавлено в: v1.13 elementHandle.inputValue
Не рекомендуется

Используйте основанный на локаторе 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 elementHandle.isChecked
Не рекомендуется

Используйте основанный на локаторе locator.isChecked() вместо этого. Узнайте больше о локаторах.

Возвращает, отмечен ли элемент. Выбрасывает исключение, если элемент не является флажком или радио-вводом.

Использование

await elementHandle.isChecked();

Возвращает

  • [Promise]<[boolean]>#

isDisabled

Добавлено до v1.9 elementHandle.isDisabled
Не рекомендуется

Используйте основанный на локаторе locator.isDisabled() вместо этого. Узнайте больше о локаторах.

Возвращает, отключен ли элемент, противоположный enabled.

Использование

await elementHandle.isDisabled();

Возвращает

  • [Promise]<[boolean]>#

isEditable

Добавлено до v1.9 elementHandle.isEditable
Не рекомендуется

Используйте основанный на локаторе locator.isEditable() вместо этого. Узнайте больше о локаторах.

Возвращает, является ли элемент редактируемым.

Использование

await elementHandle.isEditable();

Возвращает

  • [Promise]<[boolean]>#

isEnabled

Добавлено до v1.9 elementHandle.isEnabled
Не рекомендуется

Используйте основанный на локаторе locator.isEnabled() вместо этого. Узнайте больше о локаторах.

Возвращает, включен ли элемент enabled.

Использование

await elementHandle.isEnabled();

Возвращает

  • [Promise]<[boolean]>#

isHidden

Добавлено до v1.9 elementHandle.isHidden
Не рекомендуется

Используйте основанный на локаторе locator.isHidden() вместо этого. Узнайте больше о локаторах.

Возвращает, скрыт ли элемент, противоположный visible.

Использование

await elementHandle.isHidden();

Возвращает

  • [Promise]<[boolean]>#

isVisible

Добавлено до v1.9 elementHandle.isVisible
Не рекомендуется

Используйте основанный на локаторе locator.isVisible() вместо этого. Узнайте больше о локаторах.

Возвращает, виден ли элемент visible.

Использование

await elementHandle.isVisible();

Возвращает

  • [Promise]<[boolean]>#

press

Добавлено до v1.9 elementHandle.press
Не рекомендуется

Используйте основанный на локаторе 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 elementHandle.screenshot
Не рекомендуется

Используйте основанный на локаторе 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 elementHandle.scrollIntoViewIfNeeded
Не рекомендуется

Используйте основанный