WebDriver BiDi: 2023 durum güncellemesi

Bu makalede, 2023'te WebDriver BiDi'deki yeniliklere genel bir bakış sunulmaktadır.

WebDriver BiDi nedir?

WebDriver; ChromeDriver, GeckoDriver ve WebKitDriver'da uygulamaları olan ve W3C standardı olarak tanımlanan bir tarayıcı otomasyon protokolüdür.

Chromium ayrıca kendi tarayıcı otomasyon protokolüne (Chrome Geliştirici Araçları Protokolü veya CDP) sahiptir.

Bu iki protokol arasında bazı temel farklılıklar vardır: WebDriver birlikte çalışabilen bir standarttır, ancak protokol daha az verimlidir ve CDP'nin sahip olduğu özelliklere sahip değildir. Buna karşılık, CDP daha verimli ve güçlüdür, ancak birlikte çalışabilirliği daha düşüktür.

Bu nedenle 2020'de W3C Tarayıcı Test ve Araçları Çalışma Grubu, WebDriver Classic ve CDP protokolleri arasındaki boşluğu dolduran yeni bir standart tarayıcı otomasyon protokolü olan WebDriver BiDi üzerinde çalışmaya başladı. İkisini birden yapabilirsiniz. Daha fazla bilgi için Zamanda geriye bir bakış: test otomasyonunun evrimi ve WebDriver BiDi - tarayıcılar arası otomasyonun geleceği başlıklı makaleleri okuyun.

WebDriver BiDi çalışması, standartlaştırma çalışmasını, Web Platformu Testlerinin oluşturulmasını ve farklı tarayıcı motorları için uygulamaları içerir.

Şimdi neredeyiz?

2022'de hem Chrome/ChromeDriver 106 hem de Firefox 102, WebDriver BiDi standardını desteklemeye başlamıştır.

O günden beri WebDriver BiDi, günlük kaydı desteği gibi çok talep edilen özelliklerin kilidini açarak geliştiricilerin en önemli sorunlarına çözüm bularak popüler çerçevelerde benimsendi.

WebDriver BiDi tarafından desteklenen günlük kaydı

Yaygın bir kullanım alanı, bir web sayfasının herhangi bir konsol günlüğü, uyarı veya hata olmadan ve yakalanmamış herhangi bir JavaScript istisnası olmadan yüklendiğini otomatik olarak doğrulamaktır. Başka bir kullanım durumu da, bir web sayfasının bir uyarı kaydedip kaydetmediğini veya amaçlandığı zaman istisna oluşturup oluşturmadığını kontrol etmek için otomatik bir test yazmak isteyebilirsiniz. Bu sorunlar iki yönlü olmadığından WebDriver Classic kullanılarak çözülemez. WebDriver BiDi artık bunu mümkün kılıyor.

Aşağıda, Selenium'un JavaScript dil bağlamaları kullanılarak ikinci kullanım alanına ilişkin bir örnek verilmiştir:

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

Puppeteer'ın deneysel WebDriver BiDi desteğini kullanan bir örneği burada görebilirsiniz:

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

Aynı işlev, WebdriverIO gibi diğer soyutlamalarla da kullanılabilir.

Ortak, herkese açık bir yol haritası

WebDriver BiDi spesifikasyonunu, W3C Çalışma Grubu'na katılan diğer tarayıcı satıcılarıyla ve sektör paydaşlarıyla işbirliği içinde geliştirmeye devam ediyoruz. Grup, yakın zamanda paylaşılan bir yol haritası üzerinde anlaşarak, yaklaşan spesifikasyon ve uygulama çalışmalarının kullanıcılara yönelik net, uçtan uca kullanım alanları etrafında birleştirilmesi ile uyumlu hale getirildi.

Birlikte çalışabilirlik

Çalışma Grubu toplu olarak daha fazla özellik belirttiğinden, WebDriver BiDi protokolü için Web Platformu Testleri de oluştururuz. Bu paylaşılan test paketi, uygulamaların doğruluğunu ve birlikte çalışabilirliğini doğrulamamıza yardımcı olur. Farklı tarayıcılar için en son test sonuçlarını WPT Kontrol Paneli'nde görüntüleyebilirsiniz.

WebDriver BiDi'yi destekleme: Nasıl yardımcı olabilirsiniz?

WebDriver BiDi ile tarayıcı otomasyonunun geleceği konusunda heyecanlı mısınız? Nasıl desteğinizi gösterebileceğiniz aşağıda açıklanmıştır:

  • İlk test kullanıcıları ve geçiş yapanlardan biri olarak WebDriver BiDi'nin geleceğini şekillendirmeye yardımcı olun.
  • Herkesle paylaşın. #WebDriverBiDi hashtag'ini kullanarak projeyi sosyal medyada paylaşın.
  • Destek isteyin. Bir özellik isteğinde bulunun veya WebDriver BiDi'yi benimseme planlarına ilişkin favori araçlarınıza göz atın.
  • Spesifikasyon tartışmalarına katılın.