Minggu lalu, bersama dengan BrowserStack, kami mengumumkan bahwa WebDriver BiDi menjadi siap produksi di BrowserStack. Minggu ini, musim panas WebDriver BiDi berlanjut dengan Firefox 129 dan Puppeteer 23 yang masing-masing mendapatkan dukungan siap produksi untuk WebDriver BiDi.
Mozilla telah menjadi kolaborator kuat di WebDriver BiDi selama lebih dari empat tahun, saat ini pertama kali membantu membentuk standar baru, lalu menerapkannya secara bertahap di Firefox, lalu mendokumentasikannya dengan rapi progres mereka dengan Newsletter Firefox WebDriver.
Dengan WebDriver BiDi yang kini siap diproduksi di Firefox, Puppeteer, dari versi 23, menawarkan dukungan stabil untuk Firefox melalui WebDriver BiDi. Hal ini memungkinkan Anda mengotomatiskan Firefox dengan API ringkas yang sama seperti Chrome. Dukungan Puppeteer untuk Protokol DevTools Chrome (CDP) tidak berubah.
Firefox, CDP, dan Puppeteer
Puppeteer adalah alat andal bagi developer untuk mengotomatiskan browser berbasis Chromium menggunakan Chrome DevTools Protocol, yang juga dikenal sebagai CDP. Pada tahun 2019 Puppeteer mendapat dukungan eksperimental untuk Firefox.
Agar hal ini berfungsi, Mozilla menerapkan dan mempertahankan subset CDP di Firefox. Solusi ini memungkinkan Firefox diotomatiskan dengan Puppeteer API, tetapi ada ketentuannya:
- Seperti namanya, CDP digunakan oleh DevTools Chrome dan perlu berubah sesuai dengan persyaratan DevTools.
- CDP tidak distandardisasi dalam spesifikasi publik bersama dan mempertahankannya di Firefox memerlukan komunikasi dan upaya yang stabil.
- Karena Firefox hanya menerapkan sebagian CDP, Puppeteer tidak pernah dapat menjamin API lengkapnya berfungsi dengan Firefox, sehingga membingungkan pengguna.
Meskipun kami senang dapat mempertahankan dukungan ini bersama Mozilla selama beberapa tahun terakhir, kami selalu tahu bahwa ini bukan solusi permanen. Membangun kemitraan ini, dan termasuk vendor alat serta browser besar lainnya, bersama-sama kami menciptakan WebDriver BiDi.
Kerja sama tim akan mewujudkan impian
Tim Firefox telah bekerja keras untuk menerapkan WebDriver BiDi di Firefox. Pada saat yang sama, tim Puppeteer telah memperluas dukungan WebDriver BiDi di seluruh Puppeteer API. Tujuan yang dicapai oleh kedua tim adalah menyediakan setiap API yang diperlukan untuk kasus penggunaan otomatisasi produksi menggunakan WebDriver BiDi di Puppeteer, sehingga memastikan dukungan di Chrome dan Firefox.
Hal ini memungkinkan pengguna Puppeteer memilih Firefox atau Chrome untuk otomatisasi mereka,
dengan menentukan kunci konfigurasi browser
saat meluncurkan instance
Puppeteer.
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();
Untuk mempelajari lebih lanjut fitur baru di Firefox 129 dan performa Mozilla di WebDriver BiDi, lihat postingan blog Mozilla Hacks terkait.
Dukungan CDP di masa mendatang
Cuplikan kode sebelumnya menunjukkan bahwa untuk mengotomatiskan Chrome menggunakan
WebDriver BiDi dengan Puppeteer, Anda perlu menetapkan protocol
ke
webDriverBiDi
secara eksplisit. Hal ini karena untuk Chrome, Puppeteer akan tetap menetapkan default ke
CDP—agar tidak merusak otomatisasi yang ada, tetapi juga untuk terus mendukung otomatisasi
yang dikhususkan untuk fitur Chrome.
Dukungan CDP di Firefox tidak digunakan lagi mulai Firefox 129 dan dijadwalkan untuk dihapus pada akhir 2024. Jika Anda memiliki otomatisasi yang mengandalkan dukungan CDP di Firefox, sebaiknya migrasi ke WebDriver BiDi. Jika tidak memungkinkan, hubungi dev-webdriver@mozilla.org dengan kasus penggunaan Anda.