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

Matthias Rohmer
Matthias Rohmer

Yalnızca geçen hafta, BrowserStack ile birlikte WebDriver BiDi'nin Tarayıcı Yığını'nda üretime hazır. Bu hafta WebDriver BiDi yaz etkinliği Firefox 129 ve Puppeteer 23'ün her biri WebDriver BiDi için üretime hazır destek alıyor!

Mozilla, dört yılı aşkın süredir WebDriver BiDi'de güçlü işbirlikçi olarak çalışmaktadır Şimdi ise başlangıçta yeni standardın şekillendirilmesine yardımcı oluyoruz. Sonra da kademeli olarak uygulamaya koyuyoruz. Firefox WebDriver Bülteni ile, bu alandaki ilerlemelerini düzenli bir şekilde belgeliyor.

WebDriver BiDi ile Firefox, Puppeteer'da artık sürüm 23'ten WebDriver BiDi aracılığıyla Firefox için kararlı destek sunar. Bu sayede projenizin durumu, Firefox'ta Chrome ile aynı özlü API'ye sahiptir. Puppeteer'ın Chrome desteği Geliştirici Araçları Protokolü (CDP) değişmedi.

Firefox, CDP ve Puppeteer

Puppeteer, geliştiricilerin Chrome'u kullanarak Chromium tabanlı tarayıcıları otomatikleştirmelerini sağlayan güvenilir bir araçtır CDP olarak da bilinen Geliştirici Araçları Protokolü. Puppeteer 2019'da deneysel destek aldı seçin.

Bunun işe yaraması için Mozilla, CDP'nin bir alt kümesini Firefox ile bağlantı kurun. Bu çözüm Firefox'un Puppeteer API ile otomatikleştirilmesini sağlar; ancak bazı uyarılarda bulundu:

  • Adından da anlaşılacağı gibi CDP, Chrome'un Geliştirici Araçları tarafından kullanılır ve Google'ın geliştirici araçlarını nasıl kullanacağınızı öğreneceksiniz.
  • CDP ortak, herkese açık bir spesifikasyonda standartlaştırılmamış ve Firefox'ta tutarlı bir iletişim kurulmasını gerektiriyordu. çaba sarf etmeniz gerekir.
  • Firefox CDP'nin yalnızca bir alt kümesini uyguladığından, Puppeteer hiçbir zaman Firefox'la çalışmasını garantileyerek kullanıcılar için karışıklık yaratır.

Şu ana kadar Mozilla ile birlikte bu desteği sürdürdüğümüz için yıllardır bunun kalıcı bir çözüm olmadığını her zaman biliyorduk. Bunu temel alarak diğer büyük tarayıcı ve araç tedarikçi firmaları da dahil olmak üzere, birlikte WebDriver BiDi'yi oluşturduk.

Ekip çalışması hayallerinizi gerçekleştirin

Firefox ekibi, Firefox'ta WebDriver BiDi'yi uygulamak için büyük bir hevesle çalışmaktadır. Aynı zamanda Puppeteer ekibi, WebDriver BiDi desteğinin kapsamını genişletiyor. . Her iki ekibin de üzerinde çalıştığı hedef, Üretim otomasyonu kullanım alanları için her API'nin gerekli olmasını sağlama Puppeteer'da WebDriver BiDi kullanılarak çalıştırılarak hem Chrome hem de Firefox ile bağlantı kurun.

Son birkaç aydaki başarılı test 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, Puppeteer kullanıcılarının otomasyon için Firefox veya Chrome'u seçmesine olanak tanır. bir Puppeteer başlatırken browser yapılandırma anahtarını belirterek kullanır.

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'daki çalışmaları hakkında daha fazla bilgi edinmek için BiDi, ilgili Mozilla Hacks blog yayınına bakın.

Gelecekte CDP desteği

Önceki kod snippet'i, Chrome'u Puppeteer ile WebDriver BiDi'si için protocol öğesini açık bir şekilde webDriverBiDi. Bunun nedeni, Puppeteer'ın Chrome için varsayılan olarak CDP: Mevcut otomasyonları kırmak için değil, aynı zamanda otomasyonları desteklemeye devam etmek için Chrome'un özelliklerine göre özelleştirilir.

Firefox'taki CDP desteği, Firefox 129'dan itibaren sonlandırılmıştır ve 2024'ün sonunda kaldırılması planlandı. Firefox'ta CDP desteğini temel alan mevcut otomasyonlarınız varsa WebDriver BiDi'ye geçiş yapmanızı öneririz. Bu mümkün değilse dev-webdriver@mozilla.org ile iletişime geçebilirsiniz.