WebdriverIO предоставляет обширные возможности для получения детальной информации о браузере, который используется при выполнении тестов. Эта функциональность особенно полезна для адаптации тестов под разные среды, настройки условий выполнения и диагностики проблем.
Объект browser в WebdriverIO содержит встроенные методы
и свойства, позволяющие получить текущую информацию о браузере. Среди
ключевых методов:
browser.getTitle() – возвращает
заголовок текущей страницы.browser.getUrl() – возвращает URL
текущей страницы.browser.getWindowSize() – возвращает
размеры окна браузера в виде объекта
{ width, height }.browser.getWindowPosition() –
возвращает координаты верхнего левого угла окна браузера
{ x, y }.browser.getCookies() – возвращает
массив объектов cookies, установленных в текущей сессии.browser.getUserAgent() – возвращает
строку User-Agent браузера, что позволяет определить версию и тип
браузера.Пример использования:
describe('Информация о браузере', () => {
it('Получение основных свойств', async () => {
await browser.url('https://example.com');
const title = await browser.getTitle();
console.log('Title страницы:', title);
const url = await browser.getUrl();
console.log('Текущий URL:', url);
const size = await browser.getWindowSize();
console.log(`Размер окна: ${size.width}x${size.height}`);
const userAgent = await browser.getUserAgent();
console.log('User-Agent браузера:', userAgent);
});
});
WebdriverIO позволяет получать сведения о версии браузера и платформе
с помощью объекта browser.capabilities. Этот объект
автоматически заполняется при инициализации сессии и содержит подробные
сведения о среде:
browser.capabilities.browserName –
название браузера (например, 'chrome' или
'firefox').browser.capabilities.browserVersion –
версия браузера.browser.capabilities.platformName –
операционная система, на которой запущен браузер.browser.capabilities.platformVersion –
версия ОС.browser.capabilities.deviceName – имя
устройства (актуально для мобильного тестирования).Пример извлечения информации:
describe('Версия браузера и платформа', () => {
it('Вывод информации о среде', () => {
console.log('Браузер:', browser.capabilities.browserName);
console.log('Версия браузера:', browser.capabilities.browserVersion);
console.log('Платформа:', browser.capabilities.platformName);
console.log('Версия платформы:', browser.capabilities.platformVersion);
});
});
Методы управления окнами позволяют не только изменять размеры и позиции окна, но и получать актуальные значения для динамических проверок:
browser.getWindowRect() – возвращает
объект с координатами и размерами окна
{ x, y, width, height }.browser.getWindowHandle() – возвращает
идентификатор текущего окна.browser.getWindowHandles() –
возвращает массив всех открытых окон или вкладок.Эти данные часто применяются для тестов, в которых проверяется корректность работы с несколькими окнами и вкладками.
describe('Работа с окнами', () => {
it('Получение информации о текущем окне', async () => {
const handle = await browser.getWindowHandle();
const handles = await browser.getWindowHandles();
const rect = await browser.getWindowRect();
console.log('Текущий хэндл:', handle);
console.log('Все хэндлы:', handles);
console.log('Положение и размер окна:', rect);
});
});
WebdriverIO позволяет получать также информацию о состоянии страницы и ресурсах:
browser.getPageSource() – возвращает
полный HTML-код текущей страницы.browser.execute() – выполняет
JavaScript в контексте страницы, что позволяет получить дополнительные
данные, например, navigator.language,
navigator.platform или размеры документа.browser.takeScreenshot() – делает
скриншот текущего состояния страницы для визуального контроля.Пример использования execute для получения информации о
платформе:
describe('Дополнительная информация о браузере', () => {
it('Получение данных через execute', async () => {
const platform = await browser.execute(() => navigator.platform);
const language = await browser.execute(() => navigator.language);
console.log('Платформа пользователя:', platform);
console.log('Язык браузера:', language);
});
});
Полученные данные применяются для:
В сочетании с асинхронными возможностями WebdriverIO, эти методы позволяют строить надежные и детальные тестовые сценарии, учитывающие все нюансы среды выполнения.