action
Обзор
Используйте команду action, чтобы выполнить действия ввода в одном из виртуализируемых устройств в веб-браузере.
В отличие от высокоуровневых команд scrollIntoView и doubleClick, Actions API обеспечивает более гранулярное управление устройствами ввода. Доступны следующие источники ввода:
- ввод текста с клавиатуры для клавиатурных устройств;
- управление мышью, пером или сенсорным устройством;
- управление скроллом для устройств с колесом прокрутки.
Каждая цепочка вызовов action команд должна завершаться вызовом команды perform, чтобы начать выполнение указанного набора действий. Также это приводит к высвобождению всех нажатых клавиш, кнопок и т.д. на виртуальных устройствах ввода и запускает необходимые события. Высвобождение можно пропустить, передав аргумент true в команду perform. Пример:
await browser.action(...).perform(true);
Управление клавиатурой
Используется при указании key в качестве аргумента команды action. Пример:
await browser.action("key");
Возвращает объект KeyAction, который поддерживает следующие действия:
down(value: string)— создает действие нажатия клавиши;up(value: string)— создает действие отпускания клавиши;pause(ms: number)— указывает, что источник ввода ничего не делает указанное количество времени.
Специальные символы
Для использования специальных символов (Control, Page Up, Shift и т.д.) можно использовать объект Key из пакета webdriverio. В нем содержатся unicode представления всех нужных специальных символов. Пример:
import { Key } from "webdriverio";
await browser.action("key").down(Key.Ctrl).perform();
Примеры использования
import { Key } from "webdriverio";
it("should emit key events using key action commands", async ({ browser }) => {
const elem = await browser.$("input");
await elem.click(); // сделать элемент активным
await browser.action("key").down("f").down("o").down("o").up("f").up("o").up("o").perform();
console.log(await elem.getValue()); // возвращает "foo"
// скопировать значение из элемента input
await browser.action("key").down(Key.Ctrl).down("c").pause(10).up(Key.Ctrl).up("c").perform();
});
Вместо серии down/up событий лучше использовать команду setValue. Пример исключительно для демонстрации принципов работы команды action.
Управление указателем
Используется при указании pointer в качестве аргумента команды action, также можно указать тип указателя. Пример:
await browser.action("pointer", {
parameters: { pointerType: "mouse" }, // "mouse" значение по умолчанию, также доступны: "pen" or "touch"
});
Возвращает объект PointerAction, который поддерживает следующие действия:
down(button: 'left' | 'middle' | 'right')— создает действие для нажатия одной клавиши;down(params: PointerActionParams)— создает действие для нажатия одной клавиши с подробными пар аметрами;move(x: number, y: number)— создает действие для перемещения указателя наxиyпикселей относительно вьюпорта;move(params: PointerActionMoveParams)— создает действие для перемещения указателя наxиyпикселей из указанного начала координат. Начало координат может быть определено как текущая позиция указателя, вьюпорта или центр определенного элемента;up(button: 'left' | 'middle' | 'right')— создает действие для отпускания одной клавиши;up(params: PointerActionUpParams)— создает действие для отпускания одной клавиши с подробными параметрами;cancel()— создает действие, которое отменяет текущее положение указателя;pause(ms: number)— указывает, что источник ввода ничего не делает указанное количество времени.
Подробную информацию о типах параметров PointerActionParams, PointerActionMoveParams и PointerActionUpParams можно найти в исходном коде webdriverio.
Примеры использования
it("drag and drop using pointer action command", async ({ browser }) => {
const origin = await browser.$("#source");
const targetOrigin = await browser.$("#target");
await browser
.action("pointer")
.move({ duration: 0, origin, x: 0, y: 0 })
.down({ button: 0 }) // левая кнопка
.pause(10)
.move({ duration: 0, origin: targetOrigin })
.up({ button: 0 })
.perform();
});
Управление колесом прокрутки
Используется при указании wheel в качестве аргумента команды action. Пример:
await browser.action("wheel");
Возвращает объект WheelAction, который поддерживает следующие действия:
scroll(params: ScrollParams)— прокручивает страницу до указанных координат или до начала координат;pause(ms: number)— указывает, что источник ввода ничего не делает указанное количество времени.
Подробную информацию о типе параметра ScrollParams можно найти в исходном коде webdriverio.
Примеры использования
it("should scroll using wheel action commands", async ({ browser }) => {
console.log(await browser.execute(() => window.scrollY)); // возвращает 0
await browser
.action("wheel")
.scroll({
deltaX: 0,
deltaY: 500,
duration: 200,
})
.perform();
console.log(await browser.execute(() => window.scrollY)); // возвращает 500
});