Кастомные команды
Для удобства тестирования Testplane позволяет расширять интерфейс браузера и элементов пользовательскими командами. Эти команды могут упростить повторяющиеся задачи, инкапсулировать сложные действия и повысить читаемость кода.
- Как добавлять пользовательские команды в объект браузера.
- Как добавлять пользовательские команды в элементы.
- Способы переопределения существующих команд.
- Как использовать кастомные команды вместе с TypeScript.
Добавление пользовательских команд в объект браузера
Отличное место для добавления всех ваших пользовательских команд — хук
prepareBrowser
.
Чтобы добавить пользовательскую команду в объект browser
, используйте метод addCommand
. Так можно определить команду, которая получает URL и заголовок текущей страницы:
browser.addCommand("getUrlAndTitle", async function () {
// this в контексте кастомных команд указывает на объект браузера
return {
url: await this.getUrl(),
title: await this.getTitle(),
};
});
Затем вы можете использовать эту пользовательскую команду в своих тестах:
it("should fetch URL and title", async function () {
const result = await browser.getUrlAndTitle();
console.log(result); // { url: 'https://example.com', title: 'Example Domain' }
});
Добавление пользовательских команд к элемент ам
Пользовательские команды также можно добавлять к экземплярам элементов. Например, для создания команды, которая получает позицию элемента:
import type { ConfigInput } from "testplane";
export default {
// ...
prepareBrowser: function (browser) {
browser.addCommand(
"getCoords",
async function () {
const { x, y } = await this.getLocation();
const { width, height } = await this.getSize();
return {
left: x,
top: y,
right: x + width,
bottom: y + height,
};
},
true, // true = element command, false = browser command
);
},
} satisfies ConfigInput;
Обратите внимание, что третий параметр установлен в true
— это означает, что команда должна быть добавлена к экземплярам элементов.
Переопределение существующих команд
В некоторых случаях может потребоваться изменить поведение существующих команд. Testplane позволяет переопределять эти команды с помощью метода overwriteCommand
. Например, так можно добавить логирование к команде click
:
browser.overwriteCommand("click", async function (this: WebdriverIO.Element, origClick, options) {
console.log("Element clicked:", this.selector);
await origClick(options);
});
В этом примере перед выполнением оригинальной функции click
в консоль выводится сообщение.