executeAsync
Обзор
Выполняет JavaScript в текущем фрейме и возвращает значение, переданное в callback. Команда устарела: для нового кода используйте execute с асинхронной функцией.
Callback добавляет сама команда как последний аргумент браузерной функции. Его не нужно передавать отдельным аргументом browser.executeAsync. Вызовите callback, чтобы завершить команду.
Использование
await browser.executeAsync(script, ...args)
Параметры команды
script— функция или строка с телом функции. Код выполняется в браузере, без Node.js API и локальных замыканий.args— сериализуемые аргументы, передаваемые перед callback; ссылки WebElement преобразуются в DOM-элементы.
Результат — Promise со значением, переданным в callback. В Classic настройте тайм-аут script через setTimeout. В BiDi-реализации нет отдельного таймера ожидания callback; всегда вызывайте его и ограничивайте тест через testTimeout.
Пример
Укажите в baseUrl адрес тестовой HTML-страницы.
const assert = require("node:assert/strict");
it("browser.executeAsync: return a result through the injected callback", async ({ browser }) => {
await browser.url("/");
await browser.setTimeout({ script: 5000 });
const result = await browser.executeAsync(
(a, b, done) => {
setTimeout(() => done(a + b), 20);
},
4,
6,
);
assert.equal(result, 10);
});
Связанные команды
Источники
Материал учитывает исходную статью WebdriverIO.