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 और सीडीपी पर Puppeteer के इस्तेमाल को लेकर सुविधाएं उपलब्ध नहीं हैं. हालांकि, हम आपको साफ़ तौर पर बताना चाहते हैं कि इसमें अभी क्या बदलाव हो रहे हैं.

फायरफाक्‍स

  • WebDriver BiDi की क्वालिटी अब ऐसी हो गई है कि इसे ऑटोमेशन से जुड़े कामों के लिए इस्तेमाल किया जा सकता है. Mozilla ने pdf.js के लिए Puppeteer टेस्ट को Firefox और सीडीपी से 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 की खास सूचना देखें!

आने वाले समय के लिए रोमांच

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

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

WebDriver BiDi के साथ Puppeteer टेस्ट चलाने के दौरान आपको किसी भी समस्या के लिए, हमारे Puppeteer समस्या को ट्रैक करने वाले टूल में समस्याएं खोलें.