WebDriver BiDi: обновление статуса 2023 г.

В этой статье представлен обзор того, что нового в WebDriver BiDi в 2023 году.

Что такое WebDriver BiDi?

WebDriver — это протокол автоматизации браузера, определенный как стандарт W3C, реализованный в ChromeDriver, GeckoDriver и WebKitDriver.

Chromium также имеет собственный собственный протокол автоматизации браузера: протокол Chrome DevTools или CDP.

Между этими двумя протоколами есть некоторые фундаментальные различия: WebDriver — это совместимый стандарт, но этот протокол менее эффективен и лишен функций, которыми обладает CDP. Напротив, CDP более эффективен и мощен, но менее совместим.

Вот почему в 2020 году рабочая группа W3C по тестированию браузеров и инструментам начала работу над WebDriver BiDi , новым стандартным протоколом автоматизации браузера, который устраняет разрыв между протоколами WebDriver Classic и CDP. Лучшее из обоих миров! Прочтите «Взгляд в прошлое: эволюция автоматизации тестирования и WebDriver BiDi — будущее кроссбраузерной автоматизации», чтобы получить дополнительную информацию.

Усилия WebDriver BiDi включают в себя работу по стандартизации, создание тестов веб-платформы и реализацию для различных браузерных движков.

Где мы сейчас?

В 2022 году и Chrome/ChromeDriver 106 , и Firefox 102 предоставили поддержку стандарта WebDriver BiDi.

С тех пор WebDriver BiDi получил распространение в популярных платформах, решая основные проблемы разработчиков, открывая столь востребованные функции, такие как поддержка ведения журналов .

Ведение журнала с помощью WebDriver BiDi

Распространенным вариантом использования является автоматическая проверка загрузки веб-страницы без каких-либо журналов консоли, предупреждений или ошибок, а также без каких-либо неперехваченных исключений JavaScript. Другой вариант использования — вы можете написать автоматический тест, чтобы проверить, регистрирует ли веб-страница предупреждение или выдает исключение, когда это необходимо. Эти проблемы невозможно решить с помощью WebDriver Classic, поскольку он не является двунаправленным . WebDriver BiDi теперь делает это возможным.

Вот пример реализации второго варианта использования с использованием привязок языка JavaScript Selenium :

import * as assert from 'node:assert';
import { Builder, LogInspector } from 'selenium-webdriver';
import chrome from 'selenium-webdriver/chrome.js';

const driver = new Builder()
  .forBrowser('chrome')
  .setChromeOptions(new chrome.Options().enableBidi())
  .build();

const inspector = await LogInspector(driver);
await inspector.onConsoleEntry((entry) => {
  console.log(`Console message received: [${
    entry.type}][${entry.level}] ${entry.text}`);
});

await driver.get('https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html');
await driver.findElement({ id: 'consoleLog' }).click();

await driver.quit();

Вот пример использования экспериментальной поддержки WebDriver BiDi от Puppeteer :

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({
  protocol: 'webDriverBiDi',
  headless: 'new',
});

const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();

page.on('console', (message) => {
  console.log(`Console message received: [${
    message.type()
  }] ${message.text()}`);
});

await page.goto(`https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html`);
await page.evaluate(() => {
  document.querySelector('#consoleLog').click();
});

await browser.close();

Та же функциональность доступна через другие абстракции, такие как WebdriverIO .

Общая общедоступная дорожная карта

Мы все еще работаем над спецификацией WebDriver BiDi в сотрудничестве с другими поставщиками браузеров и заинтересованными сторонами отрасли, которые участвуют в рабочей группе W3C. Недавно группа согласовала общую дорожную карту , согласовывающую предстоящую спецификацию и работу по реализации с четкими сквозными вариантами использования, ориентированными на пользователя.

Совместимость

Поскольку рабочая группа совместно определяет дополнительные функции, мы также создаем тесты веб-платформы для протокола WebDriver BiDi. Этот общий набор тестов помогает нам проверять правильность и совместимость реализаций. Вы можете просмотреть последние результаты тестов для различных браузеров на панели управления WPT .

Поддержка WebDriver BiDi: чем вы можете помочь?

Вы воодушевлены будущим автоматизации браузеров с помощью WebDriver BiDi? Вот как вы можете выразить свою поддержку:

  • Станьте одним из первых тестировщиков и пользователей и помогите сформировать будущее WebDriver BiDi.
  • Распространить слово! Поделитесь проектом в социальных сетях, используя хэштег #WebDriverBiDi .
  • Попросите поддержки. Отправьте запрос на добавление функции или проверьте с помощью ваших любимых инструментов их планы по внедрению WebDriver BiDi.
  • Участвуйте в обсуждениях спецификаций .