В этой статье представлен обзор того, что нового в 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.
- Участвуйте в обсуждениях спецификаций .