WebDriver BiDi: aggiornamento dello stato al 2023

Questo articolo fornisce una panoramica delle novità di WebDriver BiDi nel 2023.

Che cos'è WebDriver BiDi?

WebDriver è un protocollo di automazione del browser, definito come uno standard W3C, con implementazioni in ChromeDriver, GeckoDriver e WebKitDriver.

Chromium ha anche il proprio protocollo di automazione del browser proprietario: Chrome DevTools Protocol, o CDP.

Esistono alcune differenze fondamentali tra questi due protocolli: WebDriver è uno standard interoperabile, ma il protocollo è meno efficiente e non dispone delle funzionalità di CDP. Al contrario, CDP è più efficiente e potente, ma meno interoperabile.

Ecco perché nel 2020 il W3C Browser Testing and Tools Working Group ha iniziato a lavorare su WebDriver BiDi, un nuovo protocollo standard di automazione dei browser che colma il divario tra i protocolli WebDriver Classic e CDP. Il meglio delle due mondi! Per saperne di più, leggi Uno sguardo indietro nel tempo: l'evoluzione dell'automazione dei test e WebDriver BiDi, il futuro dell'automazione cross-browser.

L'iniziativa WebDriver BiDi prevede il lavoro di standardizzazione, la creazione di Web Platform Test e l'implementazione di diversi motori dei browser.

Dove siamo ora?

Nel 2022, sia Chrome/ChromeDriver 106 sia Firefox 102 hanno fornito il supporto per lo standard WebDriver BiDi.

Da allora, WebDriver BiDi ha ottenuto l'adozione in framework molto diffusi, risolvendo i principali punti dolenti degli sviluppatori sbloccando funzionalità molto richieste come l'assistenza alla registrazione.

Logging basato su WebDriver BiDi

Un caso d'uso comune consiste nel verificare automaticamente che una pagina web venga caricata senza log, avvisi o errori della console e senza eccezioni JavaScript non rilevate. Un altro caso d'uso è la possibilità di scrivere un test automatico per verificare che una pagina web registri un avviso o generi un'eccezione quando previsto. Questi problemi non possono essere risolti utilizzando la versione classica di WebDriver perché non è bidirezionale. WebDriver BiDi ora rende possibile tutto ciò.

Ecco un esempio di implementazione del secondo caso d'uso che utilizza le associazioni di linguaggi JavaScript di 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();

Ecco un esempio di supporto sperimentale di WebDriver BiDi di Pupeteer:

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

La stessa funzionalità è disponibile tramite altre astrazioni, ad esempio WebdriverIO.

Una roadmap pubblica condivisa

Stiamo ancora migliorando la specifica di WebDriver BiDi in collaborazione con altri fornitori di browser e stakeholder del settore che partecipano al W3C Working Group. Il gruppo ha recentemente raggiunto un accordo su una roadmap condivisa, allineando le prossime specifiche e le attività di implementazione a casi d'uso end-to-end chiari rivolti agli utenti.

Interoperabilità

Poiché il gruppo di lavoro specifica collettivamente più funzionalità, creiamo anche test della piattaforma web per il protocollo WebDriver BiDi. Questa suite di test condivisa ci aiuta a verificare la correttezza e l'interoperabilità delle implementazioni. Puoi visualizzare i risultati dei test più recenti per vari browser nella dashboard di WPT.

Supporto di WebDriver BiDi: come puoi essere d'aiuto?

Sei entusiasta del futuro dell'automazione del browser con WebDriver BiDi? Ecco come puoi dimostrare il tuo sostegno:

  • Diventa un early tester and adopter e aiuta a plasmare il futuro di WebDriver BiDi.
  • Spargi la voce. Condividi il progetto sui social media usando l'hashtag #WebDriverBiDi.
  • Chiedi aiuto. Invia una richiesta di funzionalità o verifica con i tuoi strumenti preferiti i loro piani per l'adozione di WebDriver BiDi.
  • Partecipa alle argomentazioni sulle specifiche.