Перейти к основному содержимому

action

Команда action представляет собой низкоуровневый интерфейс для предоставления виртуализированных действий устройства ввода в веб-браузере.

В дополнение к высокоуровневым командам, таким как scrollIntoView, doubleClick, API действий предоставляет детальный контроль над тем, что именно могут делать назначенные устройства ввода. WebdriverIO предоставляет интерфейс для 3 типов источников ввода:

  • клавишный ввод для клавиатурных устройств
  • указательный ввод для мыши, пера или сенсорных устройств
  • и колесиковый ввод для устройств с колесом прокрутки

Каждая цепочка команд действий должна завершаться вызовом perform, чтобы запустить набор действий. Это вызывает освобождение действий и запуск событий. Вы можете пропустить это, передав true (например, browser.actions(...).perform(true)).

информация

Поддержка этой команды и определенных действий может отличаться в зависимости от среды. За прогрессом разработки можно следить на wpt.fyi. Для мобильных устройств вы можете использовать специфичные для Appium команды жестов на iOS и Android.

Источник клавишного ввода

Источник клавишного ввода - это источник ввода, связанный с устройством типа клавиатуры. Его можно вызвать используя параметр типа key. Например:

browser.action('key')

Он возвращает объект KeyAction, который поддерживает следующие действия:

  • down(value: string): генерирует действие нажатия клавиши
  • up(value: string): генерирует действие отпускания клавиши
  • pause(ms: number): указывает, что источник ввода ничего не делает в течение определенного тика

Специальные символы

Если вы хотите использовать специальные символы, такие как Control, Page Up или Shift, убедитесь, что импортировали объект Key из пакета webdriverio следующим образом:

import { Key } from 'webdriverio'

Этот объект позволяет получить доступ к юникод-представлению нужного специального символа.

Источник указательного ввода

Источник указательного ввода - это источник ввода, связанный с устройством типа указателя. Тип может быть указан при вызове команды action, например:

browser.action('pointer', {
parameters: { pointerType: 'mouse' } // "mouse" - значение по умолчанию, также возможны: "pen" или "touch"
})

Он возвращает объект PointerAction, который поддерживает следующие действия:

  • down (button: 'left' | 'middle' | 'right'): создает действие для нажатия одной кнопки
  • down (params: PointerActionParams): создает действие для нажатия одной кнопки с детальными параметрами
  • move (x: number, y: number): Создает действие для перемещения указателя на x и y пикселей от области просмотра
  • move (params: PointerActionMoveParams): Создает действие для перемещения указателя на x и y пикселей от указанного origin. origin может быть определен как текущее положение указателя (например, "pointer"), область просмотра (например, "viewport") или центр определенного элемента.
  • up (button: 'left' | 'middle' | 'right'): создает действие для отпускания одной кнопки
  • up (params: PointerActionUpParams): создает действие для отпускания одной кнопки с детальными параметрами
  • cancel(): Действие, отменяющее текущий ввод этого указателя.
  • pause(ms: number): указывает, что источник ввода ничего не делает в течение определенного тика

Вы можете найти подробную информацию о типах параметров PointerActionParams, PointerActionMoveParams и PointerActionUpParams в определении типов проекта.

Источник колесикового ввода

Источник колесикового ввода - это источник ввода, связанный с устройством типа колесика.

browser.action('wheel')

Он возвращает объект WheelAction, который поддерживает следующие действия:

  • scroll (params: ScrollParams): прокручивает страницу к заданным координатам или точке отсчета
  • pause(ms: number): указывает, что источник ввода ничего не делает в течение определенного тика

Вы можете найти подробную информацию о типе параметра ScrollParams в определении типов проекта.

Использование
browser.action()
Примеры
pointer-action.js
it('drag and drop using pointer action command', async () => {
const origin = await $('#source')
const targetOrigin = await $('#target')

return browser.action('pointer')
.move({ duration: 0, origin, x: 0, y: 0 })
.down({ button: 0 }) // left button
.pause(10)
.move({ duration: 0, origin: targetOrigin })
.up({ button: 0 })
.perform()
});
key-action.js
import { Key } from 'webdriverio'

it('should emit key events using key action commands', async () => {
const elem = await $('input')
await elem.click() // make element active

await browser.action('key')
.down('f')
.down('o')
.down('o')
.up('f')
.up('o')
.up('o')
.perform()

console.log(await elem.getValue()) // returns "foo"

// copy value out of input element
await browser.action('key')
.down(Key.Ctrl).down('c')
.pause(10)
.up(Key.Ctrl).up('c')
.perform()
})
wheel-action.js
it('should scroll using wheel action commands', async () => {
console.log(await browser.execute(() => window.scrollY)) // returns 0
await browser.action('wheel').scroll({
deltaX: 0,
deltaY: 500,
duration: 200
}).perform()
console.log(await browser.execute(() => window.scrollY)) // returns 500
})

Welcome! How can I help?

WebdriverIO AI Copilot