Firefox, Chrome ve Puppeteer'da WebDriver BiDi üretime hazır

Matthias Rohmer
Matthias Rohmer

Daha geçen hafta, BrowserStack ile birlikte WebDriver BiDi'nin BrowserStack'ta üretime hazır hale geldiğini duyurmuştuk. WebDriver BiDi yazında bu hafta da Firefox 129 ve Puppeteer 23 ile WebDriver BiDi üretime hazır desteği veriliyor!

Mozilla, dört yılı aşkın süredir WebDriver BiDi'de güçlü bir iş ortağıdır. İlk olarak yeni standardı şekillendirmeye yardımcı olan Mozilla, daha sonra bunu kademeli olarak Firefox'ta uyguladı ve Firefox WebDriver Bülteni ile ilerlemelerini düzenli olarak belgeledi.

Artık Firefox'ta üretime hazır olan WebDriver BiDi ile Puppeteer, sürüm 23 ile WebDriver BiDi aracılığıyla Firefox için kararlı destek sunmaktadır. Bu sayede, Chrome ile aynı kısa API'yi kullanarak Firefox'u otomatikleştirebilirsiniz. Puppeteer'ın Chrome DevTools Protokolü (CDP) desteğinde değişiklik olmayacaktır.

Firefox, CDP ve Puppeteer

Puppeteer, geliştiricilerin CDP olarak da bilinen Chrome DevTools Protokolü'nü kullanarak Chromium tabanlı tarayıcıları otomatikleştirmesi için güvenilir bir araçtır. 2019'da Puppeteer, Firefox için deneysel destek aldı.

Bu işlemin gerçekleşmesi için Mozilla, Firefox'ta CDP'nin bir alt kümesini uygulayıp sürdürdü. Bu çözüm, Firefox'un Puppeteer API ile otomatikleştirilmesine olanak tanısa da bazı sakıncaları vardı:

  • Adından da anlaşılacağı gibi CDP, Chrome'un Geliştirici Araçları tarafından kullanılır ve DevTools şartlarına göre değiştirilmesi gerekir.
  • CDP ortak, herkese açık bir spesifikasyonda standartlaştırılmamıştır ve Firefox'ta bunu sağlamak sürekli iletişim ve çaba gerektirir.
  • Firefox CDP'nin yalnızca bir alt kümesini uyguladığından, Puppeteer tam API'sinin Firefox ile çalışacağını garanti edemedi ve bu da kullanıcılar için karışıklığa neden oldu.

Son birkaç yıldır Mozilla ile birlikte bu desteği sürdürmekten memnuniyet duysak da bunun kalıcı bir çözüm olmadığını her zaman biliyorduk. Bu iş ortaklığını temel alarak ve diğer büyük tarayıcı ve araç tedarikçi firmalarını da dahil ederek WebDriver BiDi'yi birlikte oluşturduk.

başlıklı makalede WebDriver BiDi'nin geçmişi hakkında daha fazla bilgi edinin.

Ekip çalışması, başarıyı beraberinde getirir

Firefox ekibi, WebDriver BiDi'yi Firefox'a uygulamak için yoğun şekilde çalışıyor. Aynı zamanda Puppeteer ekibi, Puppeteer API'de WebDriver BiDi desteğini genişletiyordu. Her iki ekibin de amacı, üretim otomasyonu kullanım alanları için gerekli olan her API'yi Puppeteer'da WebDriver BiDi kullanarak kullanılabilir hale getirmek ve hem Chrome hem de Firefox'ta destek sunmaktı.

Son birkaç ay içinde başarılı testlerin sayısını gösteren paylaşılan ekip kontrol paneli.
Son birkaç aydaki başarılı test sayısını gösteren paylaşılan ekip kontrol paneli.

Bu sayede Puppeteer kullanıcıları, Puppeteer örneğini başlatırken browser yapılandırma anahtarını belirterek otomasyonları için Firefox veya Chrome'u seçebilir.

import puppeteer from 'puppeteer';

const firefoxBrowser = await puppeteer.launch({
  browser: 'firefox', // WebDriver BiDi is used by default in Firefox.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();

const chromeBrowser = await puppeteer.launch({
  browser: 'chrome',  
  protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();

Firefox 129'daki yenilikler ve Mozilla'nın WebDriver BiDi ile ilgili çalışmaları hakkında daha fazla bilgi edinmek için ilgili Mozilla Hacks blog yayınını inceleyin.

Gelecekte CDP desteği

Önceki kod snippet'i, WebDriver BiDi ile Puppeteer'ı kullanarak Chrome'u otomatikleştirmek için protocol değerini açık bir şekilde webDriverBiDi değerine ayarlamanız gerektiğini göstermektedir. Bunun nedeni, Puppeteer'ın Chrome için varsayılan olarak CDP'yi kullanmaya devam etmesidir. Bu sayede hem mevcut otomasyonların çalışması engellenmez hem de Chrome'un özelliklerine özel otomasyonlar desteklenmeye devam eder.

Firefox'taki CDP desteği, Firefox 129'da kullanımdan kaldırılmıştır ve 2024'ün sonunda kaldırılması planlanmaktadır. Firefox'ta CDP desteğine dayalı mevcut otomasyonlarınız varsa WebDriver BiDi'ye geçmenizi önemle tavsiye ederiz. Bu mümkün değilse kullanım alanınızı belirterek dev-webdriver@mozilla.org adresine e-posta gönderin.