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

executeAsync

Обзор

Используйте команду executeAsync, чтобы выполнить асинхронно указанный JavaScript-код на странице текущего выбранного фрейма.

Последним аргументом команды должен быть колбэк, который будет вызван, как только скрипт завершит свою работу. В качестве входного параметра команда передает в колбэк результат выполнения скрипта.

Аргумент script определяет сценарий для выполнения в виде тела функции. Функция будет вызвана с предоставленным массивом args, и доступ к значениям может быть получен через объект arguments в указанном порядке. Последним аргументом всегда должна быть колбэк-функция, которая будет вызвана после того, как скрипт будет выполнен.

Аргументами могут быть любые JSON-примитивы, массивы или объекты JSON. Объекты JSON, которые определяют ссылку на WebElement, будут преобразованы в соответствующий элемент DOM. Аналогично, любые WebElements в результате скрипта будут возвращены клиенту в виде объектов WebElement JSON.

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

await browser.executeAsync(script, arguments);

Параметры команды

ИмяТипОписание
scriptString или FunctionСкрипт, который необходимо выполнить.
argumentsAnyАргументы для скрипта. Последним аргументом должна быть колбэк-функция, которая будет вызвана после того, как скрипт будет выполнен.

Примеры использования

it("should execute async JavaScript on the page", async ({ browser }) => {
await browser.setTimeout({ script: 5000 });

const result = await browser.executeAsync(
function (a, b, c, d, done) {
// здесь мы в browser-контексте: доступа к консоли и к клиенту у нас нет
setTimeout(() => {
done(a + b + c + d);
}, 3000);
},
1,
2,
3,
4,
);

// здесь мы в node.js-контексте: доступ к консоли и к клиенту у нас есть
console.log(result); // выведет: 10
});