WebDriver BiDi: 2023 durum güncellemesi

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

WebDriver BiDi nedir?

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

Chromium'un kendi özel tarayıcı otomasyon protokolü de vardır: Chrome DevTools Protokolü veya CDP.

Bu iki protokol arasında bazı temel farklılıklar vardır: WebDriver birlikte çalışabilir bir standarttır ancak protokol daha az verimlidir ve CDP'nin sahip olduğu özelliklerden yoksundur. Buna karşılık CDP daha verimli ve güçlüdür ancak daha az birlikte çalışabilir.

Bu nedenle 2020'de W3C Tarayıcı Testi ve Araçları Çalışma Grubu, WebDriver Classic ile CDP protokolleri arasındaki boşluğu dolduran yeni bir standart tarayıcı otomasyon protokolü olan WebDriver BiDi üzerinde çalışmaya başladı. İki dünyanın da en iyisi! Daha fazla bilgi için Geçmişe bakış: Test otomasyonunun gelişimi ve WebDriver BiDi: Tarayıcılar arası otomasyonun geleceği başlıklı makaleleri okuyun.

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

Şu anda neredeyiz?

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

O zamandan beri WebDriver BiDi, popüler çerçevelerde benimsendi ve günlük kaydı desteği gibi çok talep edilen özelliklerin kilidini açarak geliştiricilerin en önemli sorunlarını ele aldı.

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 yakalanmayan JavaScript istisnaları olmadan yüklendiğini otomatik olarak doğrulamaktır. Bir web sayfasının, istenen durumlarda uyarı günlüğe kaydetmesini veya istisna atmasını kontrol etmek için otomatik test yazmak da isteyebilirsiniz. İki yönlü olmadığı için bu sorunlar WebDriver Classic kullanılarak çözülemez. WebDriver BiDi artık bunu mümkün kılıyor.

Selenium'un JavaScript dil bağlamalarını kullanan ikinci kullanım alanının örnek bir uygulaması aşağıda 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 aşağıda bulabilirsiniz:

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 soyutlamalar aracılığıyla da kullanılabilir.

Herkese açık bir yol haritası

WebDriver BiDi spesifikasyonunu, W3C Çalışma Grubu'na katılan diğer tarayıcı tedarikçileri ve sektör paydaşlarıyla birlikte geliştirmeye devam ediyoruz. Grup kısa süre önce, yaklaşan spesifikasyon ve uygulama çalışmalarını kullanıcılara yönelik net uçtan uca kullanım alanlarına göre uyumlu hale getiren ortak bir yol haritası üzerinde anlaştı.

Birlikte çalışabilirlik

Çalışma Grubu toplu olarak daha fazla özellik belirttikçe WebDriver BiDi protokolü için Web Platform Testleri de oluşturuyoruz. Bu paylaşılan test paketi, uygulamalarınızın doğruluğunu ve birlikte çalışabilirliğini doğrulamamıza yardımcı olur. Çeşitli tarayıcılara ait en son test sonuçlarını WPT kontrol panelinde görüntüleyebilirsiniz.

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

WebDriver BiDi ile tarayıcı otomasyonunun geleceği için heyecanlı mısınız? Desteğinizi şu şekilde gösterebilirsiniz:

  • Erken test kullanıcısı ve kullanıcısı olarak WebDriver BiDi'nin geleceğini şekillendirmeye yardımcı olun.
  • Diğer kullanıcılara da haber verin. Projeyi #WebDriverBiDi hashtag'ini kullanarak sosyal medyada paylaşın.
  • Destek isteyin. Özellik isteği gönderin veya en sevdiğiniz araçlarda WebDriver BiDi'yi kullanma planlarını öğrenin.
  • Özellik tartışmalarına katılın.