Playwright — это мощная библиотека для автоматизации браузеров, которая позволяет тестировать веб-приложения. Одна из самых часто используемых операций в тестировании — это переход по URL. Playwright предоставляет гибкие и эффективные инструменты для выполнения переходов по веб-страницам и взаимодействия с ними.
Для начала работы с переходом по URL в Playwright необходимо создать
экземпляр браузера, открыть страницу и выполнить переход. Операция
перехода по URL выполняется с помощью метода
page.goto(url). Этот метод ожидает строку с URL и выполняет
переход на указанную страницу.
Пример кода для перехода по URL:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close();
})();
Когда тестируемый веб-сайт загружается, необходимо учитывать время на
загрузку ресурсов и выполнение JavaScript-кода. Метод
page.goto(url) по умолчанию ожидает завершения загрузки
страницы. Однако можно настроить поведение с помощью параметров метода,
чтобы контролировать, какие события должны завершиться до того, как тест
будет продолжен.
Метод goto имеет несколько опций, которые могут помочь в
таких случаях:
waitUntil — позволяет задать, когда переход по URL считается завершённым:
load (по умолчанию) — ожидает, пока страница не будет
полностью загружена.domcontentloaded — ожидает, пока DOM-дерево страницы
будет полностью построено.networkidle — ожидает, пока не будет активного сетевого
трафика в течение заданного времени.Пример использования опции waitUntil:
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
Метод goto также принимает другие параметры, такие
как:
Referer, который
может быть использован для подмены исходного источника перехода.Пример с дополнительными параметрами:
await page.goto('https://example.com', {
timeout: 5000,
referer: 'https://another-example.com',
headers: {
'X-Custom-Header': 'CustomValue'
}
});
Иногда важно, чтобы тест не продолжался до тех пор, пока не будет загружен конкретный элемент на странице. В таких случаях после перехода по URL можно использовать методы для ожидания появления элемента.
Пример:
await page.goto('https://example.com');
await page.waitForSelector('.main-content');
Здесь тест будет ожидать появления элемента с классом
.main-content на странице.
Playwright позволяет сохранять состояние страницы, чтобы продолжить тестирование с той же точки. Это может быть полезно, если на сайте есть необходимость авторизации или выполнения других операций, которые должны быть сохранены между переходами.
Для этого можно использовать методы
context.storageState() и context.addCookies()
для сохранения состояния или сохранённых cookies.
Пример сохранения состояния:
const storage = await context.storageState();
await page.goto('https://example.com');
При необходимости можно настроить браузер так, чтобы он имитировал действия пользователя, такие как использование прокси-серверов, управление геолокацией или разрешение всплывающих окон. Для этих целей Playwright предоставляет дополнительные опции при запуске браузера.
Пример использования прокси-сервера:
const browser = await chromium.launch({
proxy: { server: 'http://myproxy.com' }
});
const page = await browser.newPage();
await page.goto('https://example.com');
Редиректы — важный аспект при тестировании веб-приложений. Метод
goto автоматически обрабатывает редиректы, следуя за ними.
Однако можно настроить, как должны обрабатываться редиректы, с помощью
параметра maxRedirects.
Пример:
await page.goto('https://example.com', { maxRedirects: 3 });
Этот код ограничивает количество редиректов, которые будут выполнены при переходе.
При переходе по URL могут возникать ошибки, такие как 404 (страница
не найдена) или 500 (ошибка на сервере). Чтобы корректно обработать
такие ошибки, можно использовать конструкцию
try...catch.
Пример обработки ошибки при переходе:
try {
await page.goto('https://example.com');
} catch (error) {
console.log('Ошибка при переходе по URL:', error);
}
Этот подход позволяет отлавливать исключения и адаптировать тесты для работы с нестабильными или ошибочными страницами.
Если необходимо протестировать приложение на локальном сервере или
локальных файлах, можно использовать локальные пути вместо общедоступных
URL. Playwright поддерживает работу с файлами через
file://.
Пример перехода по локальному файлу:
await page.goto('file:///path/to/your/local/file.html');
Кроме явного указания URL в методе goto, Playwright
позволяет работать с переходами через элементы интерфейса, такие как
ссылки. Для этого можно использовать метод click для
имитации клика по ссылке.
Пример перехода по ссылке:
await page.click('a[href="https://example.com"]');
Этот подход позволяет эмулировать действия пользователей, которые переходят по ссылкам на страницах.
Метод goto является основным инструментом для перехода
по URL в Playwright, но он предоставляет множество дополнительных
настроек и возможностей для адаптации тестов под различные сценарии.
Правильное использование параметров метода, а также комбинация с другими
методами Playwright, позволяет создавать эффективные и надёжные тесты
для веб-приложений.