Получение информации о браузере

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);
    });
});

Использование информации о браузере в тестах

Полученные данные применяются для:

  • Динамического выбора поведения тестов (например, разный UI в разных браузерах).
  • Логирования и отчетности.
  • Настройки ожиданий и таймаутов под конкретную среду.
  • Диагностики проблем с совместимостью и производительностью.

В сочетании с асинхронными возможностями WebdriverIO, эти методы позволяют строить надежные и детальные тестовые сценарии, учитывающие все нюансы среды выполнения.