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 standard W3C, con implementazioni in ChromeDriver, GeckoDriver e WebKitDriver.

Chromium ha anche un proprio protocollo di automazione del browser proprietario: il protocollo Chrome DevTools 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, la CDP è più efficiente e potente, ma meno interoperabile.

Per questo motivo, nel 2020 il W3C Browser Testing and Tools Working Group ha iniziato a lavorare su WebDriver BiDi, un nuovo protocollo standard di automazione del browser che colma il divario tra i protocolli WebDriver Classic e CDP. Il meglio di entrambi i mondi. Per saperne di più, leggi Un tuffo nel passato: l'evoluzione dell'automazione dei test e WebDriver BiDi: il futuro dell'automazione cross-browser.

L'impegno di WebDriver BiDi prevede attività di standardizzazione, creazione di test della piattaforma web e implementazioni per diversi motori del browser.

Dove siamo ora?

Nel 2022, sia Chrome/ChromeDriver 106 che Firefox 102 hanno supportato lo standard WebDriver BiDi.

Da allora, WebDriver BiDi è stato adottato nei framework più diffusi, risolvendo i principali problemi degli sviluppatori sbloccando funzionalità molto richieste come il supporto per la registrazione.

Logging basato su WebDriver BiDi

Un caso d'uso comune è verificare automaticamente che una pagina web venga caricata senza log della console, avvisi o errori e senza eccezioni JavaScript non rilevate. Un altro caso d'uso è che potresti voler 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 WebDriver Classic perché non è bidirezionale. WebDriver BiDi ora rende possibile tutto questo.

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 che utilizza il supporto sperimentale di WebDriver BiDi di 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();

La stessa funzionalità è disponibile tramite altre astrazioni come WebdriverIO.

Una roadmap pubblica condivisa

Stiamo ancora completando la specifica WebDriver BiDi in collaborazione con altri fornitori di browser e stakeholder del settore che partecipano al gruppo di lavoro W3C. Di recente il gruppo ha concordato una roadmap condivisa, allineando le attività di definizione delle specifiche e di implementazione imminenti a casi d'uso end-to-end chiari per gli 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 di aiuto?

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

  • Diventa un tester e un early adopter e contribuisci a plasmare il futuro di WebDriver BiDi.
  • Spargi la voce. Condividi il progetto sui social media utilizzando l'hashtag #WebDriverBiDi.
  • Richiedi assistenza. Invia una richiesta di funzionalità o consulta i tuoi strumenti preferiti per conoscere i loro piani di adozione di WebDriver BiDi.
  • Partecipare alle discussioni sulle specifiche.