Генератор тестов
Введение
Playwright предоставляет возможность генерировать тесты, пока вы выполняете действия в браузере, что является отличным способом быстро начать тестирование. Playwright анализирует вашу страницу и определяет лучший локатор, отдавая предпочтение ролям, тексту и тестовым идентификаторам. Если генератор находит несколько элементов, соответствующих локатору, он улучшает локатор, чтобы сделать его устойчивым и уникально идентифицирующим целевой элемент.
Генерация тестов с помощью Playwright Inspector
При запуске команды codegen
откроются два окна: окно браузера, где вы взаимодействуете с веб-сайтом, который хотите протестировать, и окно Playwright Inspector, где вы можете записывать свои тесты и затем копировать их в ваш редактор.
Запуск Codegen
Используйте команду codegen
, чтобы запустить генератор тестов, указав URL веб-сайта, для которого вы хотите сгенерировать тесты. URL является необязательным, и вы всегда можете запустить команду без него, а затем добавить URL непосредственно в окно браузера.
pwsh bin/Debug/netX/playwright.ps1 codegen demo.playwright.dev/todomvc
Запись теста
Запустите команду codegen
и выполняйте действия в окне браузера. Playwright сгенерирует код для взаимодействий пользователя, который вы можете увидеть в окне Playwright Inspector. После завершения записи теста остановите запись и нажмите кнопку copy, чтобы скопировать сгенерированный тест в ваш редактор.
С помощью генератора тестов вы можете записывать:
- Действия, такие как клик или заполнение, просто взаимодействуя со страницей
- Утверждения, нажав на одну из иконок на панели инструментов, а затем кликнув на элемент на странице для проверки. Вы можете выбрать:
'assert visibility'
, чтобы проверить, что элемент видим'assert text'
, чтобы проверить, что элемент содержит определенный текст'assert value'
, чтобы проверить, что элемент имеет определенное значение
Когда вы закончите взаимодействовать со страницей, нажмите кнопку record, чтобы остановить запись, и используйте кнопку copy, чтобы скопировать сгенерированный код в ваш редактор.
Используйте кнопку clear, чтобы очистить код и начать запись заново. После завершения закройте окно Playwright Inspector или остановите команду в терминале.
Генерация локаторов
Вы можете генерировать локаторы с помощью генератора тестов.
- Нажмите кнопку
'Record'
, чтобы остановить запись, и появится кнопка'Pick Locator'
. - Нажмите на кнопку
'Pick Locator'
, а затем наведите курсор на элементы в окне браузера, чтобы увидеть локатор, выделенный под каждым элементом. - Чтобы выбрать локатор, кликните на элемент, который вы хотите найти, и код для этого локатора появится в поле рядом с кнопкой Pick Locator.
- Вы можете отредактировать локатор в этом поле для его настройки или использовать кнопку копирования, чтобы скопировать его и вставить в ваш код.
Эмуляция
Вы можете использовать генератор тестов для генерации тестов с использованием эмуляции, чтобы создать тест для определенного размера экрана, устройства, цветовой схемы, а также эмулировать геолокацию, язык или часовой пояс. Генератор тестов также может генерировать тест, сохраняя состояние аутентификации.
Эмуляция размера экрана
Playwright открывает окно браузера с установленным размером экрана по ширине и высоте и не является адаптивным, так как тесты должны выполняться в одинаковых условиях. Используйте опцию --viewport
, чтобы генерировать тесты с другим размером экрана.
pwsh bin/Debug/netX/playwright.ps1 codegen --viewport-size="800,600" playwright.dev

Эмуляция устройств
Записывайте скрипты и тесты, эмулируя мобильное устройство с помощью опции --device
, которая устанавливает размер экрана и user agent, среди прочего.
pwsh bin/Debug/netX/playwright.ps1 codegen --device="iPhone 13" playwright.dev

Эмуляция цветовой схемы
Записывайте скрипты и тесты, эмулируя цветовую схему с помощью опции --color-scheme
.
pwsh bin/Debug/netX/playwright.ps1 codegen --color-scheme=dark playwright.dev

Эмуляция геолокации, языка и часового пояса
Записывайте скрипты и тесты, эмулируя часовой пояс, язык и местоположение с помощью опций --timezone
, --geolocation
и --lang
. После открытия страницы:
- Примите cookies
- В правом верхнем углу нажмите на кнопку "определить местоположение", чтобы увидеть работу геолокации.
pwsh bin/Debug/netX/playwright.ps1 codegen --timezone="Europe/Rome" --geolocation="41.890221,12.492348" --lang="it-IT" bing.com/maps

Сохранение состояния аутентификации
Запустите codegen
с --save-storage
, чтобы сохранить cookies, localStorage и данные IndexedDB в конце сессии. Это полезно для отдельной записи шага аутентификации и его повторного использования при записи дополнительных тестов.
pwsh bin/Debug/netX/playwright.ps1 codegen github.com/microsoft/playwright --save-storage=auth.json

Вход
После выполнения аутентификации и закрытия браузера, auth.json
будет содержать состояние хранилища, которое вы затем можете использовать в своих тестах.

Убедитесь, что вы используете auth.json
только локально, так как он содержит конфиденциальную информацию. Добавьте его в ваш .gitignore
или удалите после завершения генерации тестов.
Загрузка состояния аутентификации
Запустите с --load-storage
, чтобы использовать ранее загруженное хранилище из auth.json
. Таким образом, все cookies, localStorage и данные IndexedDB будут восстановлены, переводя большинство веб-приложений в состояние аутентификации без необходимости повторного входа. Это означает, что вы можете продолжать генерировать тесты из состояния, в котором вы уже вошли в систему.
pwsh bin/Debug/netX/playwright.ps1 codegen --load-storage=auth.json github.com/microsoft/playwright

Запись с использованием нестандартной настройки
Если вы хотите использовать codegen в какой-то нестандартной настройке (например, использовать BrowserContext.RouteAsync()), можно вызвать Page.PauseAsync(), который откроет отдельное окно с элементами управления codegen.
using Microsoft.Playwright;
using var playwright = await Playwright.CreateAsync();
var chromium = playwright.Chromium;
// Убедитесь, что запущено с интерфейсом.
var browser = await chromium.LaunchAsync(new() { Headless = false });
// Настройте контекст по своему усмотрению.
var context = await browser.NewContextAsync(); // Передайте любые опции
await context.RouteAsync("**/*", route => route.ContinueAsync());
// Приостановите страницу и начните запись вручную.
var page = await context.NewPageAsync();
await page.PauseAsync();