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

addInitScript

Обзор​

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

Скрипт регистрируется для вкладки или окна, текущих в момент вызова addInitScript. Он не распространяется автоматически на другие вкладки и окна, в том числе открытые позже. Чтобы использовать его там, переключитесь на нужную вкладку или окно и зарегистрируйте скрипт отдельно до перехода на страницу.

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

browser.addInitScript(script, ...args)

Параметры​

ПараметрТипПо умолчаниюОписание
scriptFunctionОбязателенФункция для выполнения в браузере, без доступа к переменным Node.js.
argsunknown[][]Аргументы, сериализуемые в JSON и передаваемые функции.

Результат​

Promise<InitScript>: объект с асинхронным методом remove() и подпиской on("data", listener). Для передачи данных в Node.js вызовите callback emit, который добавляется последним аргументом функции.

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

Требуется сессия WebDriver BiDi (webSocketUrl: true). Вызовите команду до перехода на страницу. remove() отменяет последующее внедрение, но не откатывает изменения текущего документа. Удаляйте скрипт в том же тесте, даже если проверка завершилась ошибкой. Реализация этой версии принимает функцию, а не строку.

Пример​

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

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

it("addInitScript: set a value before page scripts", async ({ browser }) => {
const script = await browser.addInitScript(value => {
window.exampleSeed = value;
}, 42);

try {
await browser.url("/");
assert.equal(await browser.execute(() => window.exampleSeed), 42);
} finally {
await script.remove();
}

await browser.url("/");
assert.equal(await browser.execute(() => typeof window.exampleSeed), "undefined");
});

См. также​