WebDriver BiDi की क्षमता का इस्तेमाल करें: Puppeteer के साथ Chrome और Firefox ऑटोमेशन

Puppeteer अब Firefox से बात करता है! 🎉 रुकिए, क्या ऐसा पहले ही नहीं हुआ था? 🤔 आइए, Puppeteer के नए प्रोटोकॉल WebDriver BiDi के बारे में जानें. साथ ही, यह भी जानें कि Firefox के ऑटोमेशन वर्कफ़्लो के लिए, इस नए प्रोटोकॉल का क्या मतलब है.

WebDriver BiDi, एक नया स्टैंडर्ड क्रॉस-ब्राउज़र ऑटोमेशन प्रोटोकॉल है. इसमें WebDriver Classic और Chrome DevTools प्रोटोकॉल (CDP) की सबसे अच्छी सुविधाएं शामिल हैं. इससे, दोनों तरफ़ से कम्यूनिकेशन की सुविधा मिलती है. साथ ही, ज़्यादा बेहतर और असरदार ऑटोमेशन और बेहतर कंट्रोल की सुविधा मिलती है. आधिकारिक रोडमैप पर जाकर, इसकी प्रोग्रेस ट्रैक की जा सकती है.

पिछले स्टेटस अपडेट के बाद से, हम W3C ब्राउज़र टेस्टिंग और टूल वर्किंग ग्रुप के साथ मिलकर काम कर रहे हैं. WebDriver BiDi की नई सुविधाओं की मदद से, Puppeteer अब लॉगिंग, नेटवर्क इवेंट, और फ़ॉर्म सबमिशन जैसी सुविधाएं लागू करता है.

मुझे कोड दिखाएं

नीचे दी गई Puppeteer स्क्रिप्ट में, WebDriver BiDi को काम करते हुए दिखाया गया है. यह Chrome और Firefox पर आसानी से काम करती है:

  1. प्रोटोकॉल सेटिंग के साथ, चुना गया ब्राउज़र लॉन्च करें.
  2. गड़बड़ियों के लिए कंसोल के मैसेज मॉनिटर करें.
  3. किसी वेब पेज पर जाएं, व्यूपोर्ट डाइमेंशन सेट करें, और किसी बटन पर क्लिक करें.
  4. टेक्स्ट कॉन्टेंट की पुष्टि करें और समानता की पुष्टि करें.
import * as assert from 'node:assert'; 
import puppeteer from 'puppeteer';

// Arrange: Launch browser with WebDriver BiDi
const browser = await puppeteer.launch({
  protocol: 'webDriverBiDi',
     product: 'firefox', // or 'chrome'
});
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();

// Arrange: Monitor console messages
page.on('console', message => {
  if (message.type() != 'error') return;
  console.log('RECEIVED: %s', message.text());
});

// Action
await page.setViewport({width: 600, height: 1041});
await page.goto('https://coffee-cart.app/?breakable=1');

const coffee = await page.waitForSelector('[data-test="Espresso"]');
await coffee.click();

// Assert 
const checkout = await page.$('[data-test="checkout"]');
const total = await checkout.evaluate(el => el.textContent);
assert.equal(total, 'Total: $10.00');

browser.close();

Puppeteer में WebDriver BiDi की प्रोग्रेस

Puppeteer में WebDriver BiDi की क्षमताओं का आकलन करने के लिए, हमने Puppeteer टेस्ट सुइट का इस्तेमाल किया. Puppeteer और WebDriver BiDi को लागू करने पर अब भी काम चल रहा है. फ़िलहाल, इसमें Chrome और CDP के साथ Puppeteer की सभी सुविधाएं उपलब्ध नहीं हैं. हालांकि, हम आपको इस बारे में साफ़ तौर पर बताना चाहते हैं कि फ़िलहाल स्थिति क्या है.

फायरफाक्‍स

  • WebDriver BiDi की क्वालिटी अब ऐसी हो गई है कि इसे ऑटोमेशन से जुड़े कामों के लिए इस्तेमाल किया जा सकता है. Mozilla ने pdf.js के लिए, Puppeteer टेस्ट को Firefox और CDP से Firefox और WebDriver BiDi पर पोर्ट कर दिया है.
  • WebDriver BiDi की मदद से 55% से ज़्यादा टेस्ट पास हुए हैं. इससे पता चलता है कि इसकी सुविधाएं लगातार बेहतर हो रही हैं.
  • खास तौर पर, 82 से ज़्यादा नए टेस्ट में WebDriver BiDi का बेहतर तरीके से इस्तेमाल किया गया है. इससे, इस सुविधा को और बेहतर बनाने में मदद मिलेगी.

Chrome:

  • फ़िलहाल, Chrome को WebDriver BiDi की मदद से 68% पास रेट मिल रहा है. इससे पता चलता है कि यह सुविधा भरोसेमंद है. सीडीपी पर आधारित तरीके की तुलना में, इसमें और ऑप्टिमाइज़ेशन की गुंजाइश है. हालांकि, आने वाले समय में इसमें और भी बेहतर सुविधाएं जोड़ी जाएंगी.

कुकी ऐक्सेस, नेटवर्क अनुरोध को इंटरसेप्ट करने, इम्यूलेशन की कुछ सुविधाओं, और अनुमतियों जैसी कुछ सुविधाओं को अब भी स्टैंडर्ड बनाने की प्रोसेस जारी है. ये सुविधाएं तैयार होने के बाद, उन्हें Puppeteer में इंटिग्रेट कर दिया जाएगा. इस बीच, WebDriver BiDi के साथ काम करने वाली Puppeteer की सुविधाओं की पूरी सूची देखें.

क्या Puppeteer पहले से ही Firefox के साथ काम करता था?

Puppeteer ने पहले Firefox के लिए, सीडीपी के सीमित और क्रॉस-ब्राउज़र वर्शन का इस्तेमाल करके, एक्सपेरिमेंट के तौर पर सहायता की थी. हालांकि, इसमें कई सीमाएं थीं और यह एक बेहतर समाधान नहीं था.

Firefox और WebDriver के नए प्रयोग के तौर पर लागू किए गए BiDi मोड से, इन समस्याओं को हल किया जा सकता है.

हम जानते हैं कि आपके कुछ और सवाल हो सकते हैं, जैसे:

  • क्या Firefox में सीडीपी की सहायता बंद होने वाली है?
  • क्या Puppeteer की सभी सुविधाएं काम करती हैं?

ज़्यादा जानकारी और जवाब पाने के लिए, Firefox की खास सूचना देखें!

आने वाले समय में कई रोमांचक चीज़ें होंगी

अलग-अलग ब्राउज़र पर टेस्टिंग करना, डेवलपर की सबसे ज़रूरी ज़रूरतों में से एक है. इसलिए, हमें Puppeteer में WebDriver BiDi को इंटिग्रेट करने में खुशी हो रही है. इससे अलग-अलग ब्राउज़र पर ऑटोमेशन का बेहतर और आसान अनुभव मिल पाएगा. हमारा सुझाव है कि आप Puppeteer के साथ WebDriver BiDi को एक्सप्लोर करें.

आने वाले समय में, WebDriver BiDi, Puppeteer के लिए डिफ़ॉल्ट प्रोटोकॉल बन जाएगा. इससे, ऑटोमेशन का बेहतर और बेहतर अनुभव मिल पाएगा.

अगर आपको WebDriver BiDi के साथ Puppeteer टेस्ट चलाने में कोई समस्या आती है, तो हमारे Puppeteer समस्या ट्रैकर में समस्याएं दर्ज करें.