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

url

Обзор​

Открывает URL. В Testplane вызов без аргумента или с пустой строкой возвращает текущий URL и не выполняет переход. Повторный переход на тот же адрес перезагружает страницу.

Если задан baseUrl, адрес разрешается через url.resolve(baseUrl, url). Например, при baseUrl равном http://example.com/site/ адрес relative откроет /site/relative, а /rootRelative — /rootRelative. Полный URL не зависит от baseUrl. Завершающий / в базовом адресе влияет на разрешение относительного пути.

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

await browser.url(url, options); await browser.url()

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

ПараметрОписание
urlСтрока с полным или относительным адресом. Без аргумента — чтение текущего адреса.
options.waitBiDi: none, interactive, complete или networkIdle. Без значения используется стратегия загрузки сессии; для обычной стратегии — complete. Ограничение networkIdle описано ниже.
options.timeoutBiDi: тайм-аут только ожидания networkIdle, по умолчанию 5000 мс. Не заменяет тайм-ауты Testplane и загрузки страницы.
options.headersBiDi: объект заголовков для запроса навигации. Не задает постоянные заголовки для всех ресурсов страницы.
options.authBiDi: объект { user, pass } для HTTP Basic Auth. Заменяет Authorization из headers. Используйте HTTPS и не сохраняйте секреты в тестах.
options.onBeforeLoadBiDi: функция, выполняемая до скриптов нового документа. Функция сериализуется и не имеет доступа к замыканию Node.js.

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

Опции применяются только к HTTP(S)-переходам в BiDi. В Classic обертка Testplane игнорирует второй аргумент. После успешного перехода временный init-скрипт удаляется; его изменения в загруженной странице остаются до следующей навигации.

В проверенной связке Testplane 9.3.2 / WDIO 9.6.2 / Chrome 150 режим networkIdle падает с Couldn't find request for navigation with id ...: реализация ищет запрос навигации по идентификатору контекста. Используйте complete и затем явно ожидайте нужное состояние приложения. complete само по себе не означает завершения фоновых запросов приложения.

Результат​

Вызов без адреса возвращает строку текущего URL. Переход в Classic возвращает undefined; в BiDi может вернуть данные запроса навигации или undefined. Для чтения адреса используйте getUrl() или url() без аргумента.

Пример​

Пример использует Chrome/BiDi и тестовый HTTP-сервер в baseUrl. На /navigation скрипт страницы записывает window.initialSeed = window.navigationSeed ?? null, а сервер встраивает значение заголовка x-example в window.receivedHeader. Корневой путь отдает обычную HTML-страницу.

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

it("url: navigate with BiDi options and read the current URL", async ({ browser }) => {
await browser.url("/");
const target = new URL("/navigation", await browser.getUrl()).href;
await browser.sessionSubscribe({
events: ["network.beforeRequestSent", "network.responseStarted"],
});
await browser.url(target, {
wait: "complete",
headers: { "x-example": "navigation" },
onBeforeLoad: () => {
window.navigationSeed = 42;
},
});
assert.equal(await browser.url(), target);
assert.deepEqual(await browser.execute(() => [window.initialSeed, window.receivedHeader]), [
42,
"navigation",
]);
await browser.execute(() => {
window.unsavedValue = "temporary";
});
await browser.url(target);
assert.equal(await browser.execute(() => typeof window.unsavedValue), "undefined");
assert.equal(await browser.execute(() => window.initialSeed), null);
});

Источники​

Материал учитывает исходную статью WebdriverIO.