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

custom$$

Обзор​

Находит элементы пользовательской стратегией поиска. Родительский элемент передается последним аргументом стратегии. Чтобы ограничить область поиска, используйте его внутри стратегии.

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

element.custom$$(strategyName, ...strategyArguments)

Параметры​

ПараметрТипПо умолчаниюОписание
strategyNamestringОбязательныйИмя, зарегистрированное через browser.addLocatorStrategy.
strategyArgumentsunknown[][]Аргументы, передаваемые перед родительским DOM-элементом.

Результат​

Массив объектов элементов, получаемый через await. Если стратегия ничего не нашла, массив пуст.

Ограничения​

Зарегистрируйте стратегию у того же объекта браузера. Родитель должен существовать; неизвестная стратегия или отсутствие родителя вызывают ошибку. Функция выполняется в браузере и возвращает DOM-элемент или массив DOM-элементов. Преобразуйте NodeList через Array.from. Область поиска определяет сама функция: document.querySelector продолжает искать по всему документу. Команда не ожидает заданного количества дочерних элементов или их видимости.

Пример​

Настройте baseUrl на локальный HTTP-сайт, где / возвращает HTML-страницу. Запустите пример в файле тестов Testplane.

const assert = require("node:assert/strict");

it("element.custom$$: find children with a custom strategy", async ({ browser }) => {
await browser.url("/");
await browser.execute(() => {
document.body.innerHTML =
'<p data-test="item">Outside</p><section id="panel"><p data-test="item">First</p><p data-test="item">Second</p></section>';
});
browser.addLocatorStrategy("byTestWithin", (value, root) =>
Array.from(root.querySelectorAll(`[data-test="${value}"]`)),
);
const items = await browser.$("#panel").custom$$("byTestWithin", "item");
assert.equal(items.length, 2);
assert.equal(await items[1].getText(), "Second");
});

См. также​