पिछले हफ़्ते ही, हमने BrowserStack के साथ मिलकर यह एलान किया था कि WebDriver BiDi, BrowserStack में प्रोडक्शन के लिए तैयार है. इस हफ़्ते, WebDriver BiDi की गर्मी जारी है. Firefox 129 और Puppeteer 23, दोनों में WebDriver BiDi के लिए प्रॉडक्शन-रेडी सहायता मिल रही है!
Mozilla, WebDriver BiDi के साथ चार साल से काम कर रहा है. शुरुआत में, उसने नए स्टैंडर्ड को तैयार करने में मदद की और फिर धीरे-धीरे उसे Firefox में लागू किया. साथ ही, Firefox WebDriver न्यूज़लेटर के ज़रिए, अपनी प्रोग्रेस को साफ़ तौर पर दिखाया.
Firefox में WebDriver BiDi अब प्रोडक्शन के लिए तैयार है. इसलिए, Puppeteer के 23वें वर्शन से, WebDriver BiDi की मदद से Firefox के लिए बेहतर सहायता मिलती है. इसकी मदद से, Chrome के जैसे ही छोटे API का इस्तेमाल करके Firefox को ऑटोमेट किया जा सकता है. Puppeteer के Chrome DevTools प्रोटोकॉल (CDP) के साथ काम करने की सुविधा में कोई बदलाव नहीं हुआ है.
Firefox, CDP, और Puppeteer
Puppeteer, डेवलपर के लिए एक भरोसेमंद टूल है. इसकी मदद से, Chrome DevTools प्रोटोकॉल का इस्तेमाल करके, Chromium पर आधारित ब्राउज़र को ऑटोमेट किया जा सकता है. इसे सीडीपी भी कहा जाता है. साल 2019 में, Puppeteer को Firefox के लिए एक्सपेरिमेंट के तौर पर उपलब्ध कराया गया.
यह काम करने के लिए, Mozilla ने Firefox में सीडीपी के सबसेट को लागू किया और बनाए रखा. इस समाधान की मदद से, Puppeteer API की मदद से Firefox को ऑटोमेट किया जा सकता है. हालांकि, इसमें ये समस्याएं थीं:
- जैसा कि नाम से पता चलता है, सीडीपी का इस्तेमाल Chrome के DevTools करते हैं. इसलिए, इसे DevTools की ज़रूरतों के हिसाब से बदलना ज़रूरी है.
- सीडीपी को शेयर किए गए सार्वजनिक स्पेसिफ़िकेशन के तौर पर स्टैंडर्ड नहीं किया गया है. साथ ही, Firefox में इसे बनाए रखने के लिए, लगातार संपर्क और मेहनत की ज़रूरत होती है.
- Firefox ने सीडीपी का सिर्फ़ एक सबसेट लागू किया है. इसलिए, Puppeteer कभी भी यह गारंटी नहीं दे सकता कि उसका पूरा एपीआई, Firefox के साथ काम करेगा. इससे उपयोगकर्ताओं को भ्रम होता है.
हालांकि, हमें खुशी है कि पिछले कुछ सालों से Mozilla के साथ मिलकर इस मदद को बनाए रखने में हमें खुशी हुई, लेकिन हम हमेशा से जानते थे कि इसका कोई स्थायी समाधान नहीं होगा. इस साझेदारी के आधार पर, अन्य मुख्य ब्राउज़र और टूल वेंडर को शामिल करके, हमने WebDriver BiDi को एक साथ बनाया.
में, WebDriver BiDi के इतिहास के बारे में ज़्यादा जानेंटीम के साथ मिलकर काम करें, हर मुश्किल आसान करें
Firefox की टीम, Firefox में WebDriver BiDi को लागू करने के लिए लगातार काम कर रही है. साथ ही, Puppeteer टीम ने Puppeteer API के ज़रिए, WebDriver BiDi की सहायता को बढ़ाया है. दोनों टीमों का लक्ष्य, Puppeteer में WebDriver BiDi का इस्तेमाल करके, प्रोडक्शन ऑटोमेशन के इस्तेमाल के उदाहरणों के लिए ज़रूरी हर एपीआई को उपलब्ध कराना था. साथ ही, यह पक्का करना था कि यह Chrome और Firefox, दोनों में काम करे.
इससे Puppeteer के उपयोगकर्ता, अपने ऑटोमेशन के लिए Firefox या Chrome में से किसी एक को चुन सकते हैं. इसके लिए, Puppeteer इंस्टेंस को लॉन्च करते समय browser
कॉन्फ़िगरेशन कुंजी की जानकारी देनी होगी.
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 में नई सुविधाओं और WebDriver BiDi पर Mozilla के काम के बारे में ज़्यादा जानने के लिए, Mozilla Hacks ब्लॉग पोस्ट देखें.
आने वाले समय में सीडीपी सपोर्ट
ऊपर दिए गए कोड स्निपेट से पता चलता है कि Puppeteer के साथ WebDriver BiDi का इस्तेमाल करके, Chrome को ऑटोमेट करने के लिए, आपको protocol
को webDriverBiDi
पर सेट करना होगा. ऐसा इसलिए है, क्योंकि Chrome के लिए Puppeteer डिफ़ॉल्ट रूप से सीडीपी मोड को चालू रखेगा. इससे मौजूदा ऑटोमेशन में रुकावट नहीं आएगी. साथ ही, Chrome की खास सुविधाओं के लिए काम करने वाले ऑटोमेशन का इस्तेमाल जारी रखा जा सकेगा.
Firefox 129 से, Firefox में सीडीपी की सुविधा काम नहीं करती. साथ ही, इसे 2024 के आखिर में हटा दिया जाएगा. अगर आपके पास Firefox में सीडीपी के साथ काम करने वाले ऑटोमेशन हैं, तो हमारा सुझाव है कि आप WebDriver BiDi पर माइग्रेट करें. अगर ऐसा नहीं हो सकता, तो अपने इस्तेमाल के उदाहरण के लिए dev-webdriver@mozilla.org से संपर्क करें.