addLocatorStrategy
Обзор
Зарегистрируйте переиспользуемый способ поиска элементов. Затем вызывайте стратегию через custom$ или custom$$ у браузера или элемента.
Использование
browser.addLocatorStrategy(name, strategy)
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
name | string | Обязателен | Уникальное имя стратегии в объекте браузера. |
strategy | Function | Обязателен | Браузерная функция, возвращающая DOM-элемент или массив DOM-элементов. Перед возвратом преобразуйте NodeList через Array.from. |
Результат
void. Регистрация синхронная и сама по себе не выполняет поиск.
Ограничения
Зарегистрируйте стратегию до первого использования. Повторная регистрация имени вызывает ошибку. Callback выполняется в браузере и не может читать замыкания Node.js. Для общего использования зарегистрируйте стратегию в prepareBrowser.
Пример
Настройте baseUrl на свой локальный тестовый HTTP-сайт, где / возвращает HTML-страницу. Пример выполняется внутри обычного файла тестов Testplane.
const assert = require("node:assert/strict");
it("addLocatorStrategy: find by data attribute", async ({ browser }) => {
await browser.url("/");
await browser.execute(() => {
document.body.innerHTML = '<button data-test="save">Save</button>';
});
browser.addLocatorStrategy("byTest", value => document.querySelector(`[data-test="${value}"]`));
const button = await browser.custom$("byTest", "save");
assert.equal(await button.getText(), "Save");
});