execute
Обзор
Выполняет JavaScript в браузере и передает выбранный DOM-элемент первым аргументом. Используйте метод для чтения или изменения свойств DOM, для которых нет отдельной команды.
Использование
element.execute(script, ...args)
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
script | Function | string | Обязательный | Функция или тело функции для выполнения в браузере. |
args | unknown[] | [] | Дополнительные аргументы после DOM-элемента. |
Результат
Промис с сериализованным результатом функции. В режиме BiDi выполнение также ожидает промис, возвращенный функцией.
Ограничения
Перед выполнением команда вызывает waitForExist. Код браузера не имеет доступа к переменным и импортам Node.js через замыкание; передавайте данные аргументами. Ожидание существования не гарантирует видимость или кликабельность. Асинхронный пример ниже использует WebDriver BiDi.
Пример
Настройте baseUrl на локальный HTTP-сайт, где / возвращает HTML-страницу. Запустите пример в файле тестов Testplane.
const assert = require("node:assert/strict");
it("element.execute: pass the DOM element to a browser function", async ({ browser }) => {
await browser.url("/");
await browser.execute(() => {
document.body.innerHTML = '<div id="counter" data-count="4"></div>';
});
const result = await browser.$("#counter").execute(async (element, increment) => {
const count = Number(element.dataset.count) + increment;
element.dataset.count = String(count);
return { count, id: element.id };
}, 3);
assert.deepEqual(result, { count: 7, id: "counter" });
assert.equal(await browser.$("#counter").getAttribute("data-count"), "7");
});