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

जेसेलिन येन
जेसेलिन येन

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

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

हमारे पिछले स्टेटस अपडेट के बाद से, हम 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:

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

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

क्या Puppeteer ने पहले से ही Firefox का इस्तेमाल नहीं किया है?

हालांकि, Puppeteer ने पहले सीडीपी पर सीमित और क्रॉस-ब्राउज़र लागू करने की सुविधा का इस्तेमाल करके, Firefox को प्रयोग के तौर पर उपलब्ध कराया था. हालांकि, इस पर कुछ समस्याएं दिखीं और यह लंबे समय तक काम करने वाला समाधान नहीं था.

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

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

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

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

आगे रोमांचक समय है

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

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

WebDriver BiDi पर Puppeteer टेस्ट करने के दौरान किसी भी तरह की समस्या के लिए, Puppeteer से जुड़ी समस्या को ट्रैक करने वाले टूल पर जाकर समस्याएं खोलें.