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

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.