WebDriver BiDi مُعدّ لإنتاج المحتوى في Firefox وChrome وPuppeteer

Matthias Rohmer
Matthias Rohmer

في الأسبوع الماضي فقط، وبالتعاون مع BrowserStack، أعلنّا أنّ WebDriver BiDi production-ready في BrowserStack. يستمر صيف WebDriver BiDi في هذا الأسبوع مع يحصل كل من Firefox 129 وPuppeteer 23 على دعم جاهز للإنتاج لـ WebDriver BiDi.

تتعاون Mozilla بشكل كبير في استخدام WebDriver BiDi لأكثر من أربع سنوات. الآن، يساعدنا في البداية في تشكيل المعيار الجديد ثم تطبيق البيانات تدريجيًا في Firefox، مع توثيق مستوى تقدمهم بدقة من خلال النشرة الإخبارية من Firefox WebDriver.

مع تجهيز WebDriver BiDi الآن للإنتاج في Firefox وPuppeteer من الإصدار 23، توفّر توافقًا ثابتًا مع Firefox من خلال WebDriver BiDi. يتيح لك هذا الإجراء إمكانية التشغيل الآلي Firefox مع واجهة برمجة التطبيقات المختصرة نفسها مثل Chrome. توافق Puppeteer مع Chrome سيظلّ بروتوكول أدوات مطوّري البرامج (CDP) بدون تغيير.

Firefox وCDP وPuppeteer

Puppeteer هو أداة موثوقة يمكن للمطوّرين تشغيل المتصفحات المستندة إلى Chromium بشكل آلي باستخدام بروتوكول أدوات مطوّري البرامج، والمعروف أيضًا باسم CDP. في 2019، حصلت Puppeteer على دعم تجريبي في متصفح Firefox.

لتنفيذ هذا الإجراء، نفذت Mozilla مجموعة فرعية من CDP وحافظت عليها في فَيَرفُكس سمح هذا الحل بتشغيل Firefox بشكل تلقائي باستخدام واجهة برمجة التطبيقات Puppeteer، إلا أنه محاذير:

  • وكما يشير الاسم، تستخدم "أدوات مطوري البرامج" في Chrome بروتوكول CDP ويجب تغييره. مع متطلبات "أدوات مطوري البرامج"
  • لم يتم توحيد CDP في مواصفات عامة مشتركة ويتطلب الحفاظ عليه في Firefox اتصالاً ثابتًا والجهد.
  • ونظرًا لأن Firefox لم يطبق سوى مجموعة فرعية من CDP، فإن Puppeteer لا يمكنه أبدًا ضمان واجهة برمجة التطبيقات الكاملة للعمل مع Firefox، مما يسبّب إرباكًا للمستخدمين.

وعلى الرغم من سعادتنا لاستمرار هذا الدعم مع Mozilla في السنوات القليلة الماضية، كنا نعرف دائمًا أنه ليس حلاً دائمًا. بناءً على ذلك شراكة، وبما في ذلك مورِّدي المتصفحات والأدوات الرئيسية الآخرين، معًا أنشأنا WebDriver BiDi.

العمل الجماعي يجعل الأحلام تتحقق

يعمل فريق Firefox بفارغ الصبر لتنفيذ WebDriver BiDi في Firefox. في الوقت نفسه، عمل فريق Puppeteer على توسيع نطاق دعم WebDriver BiDi. عبر واجهة برمجة تطبيقات Puppeteer. كان الهدف الذي عمل كلا الفريقين لتحقيقه هو توفير جميع واجهات برمجة التطبيقات المطلوبة لحالات استخدام التشغيل الآلي في الإنتاج باستخدام WebDriver BiDi في Puppeteer، لضمان الدعم في كل من Chrome فَيَرفُكس

لوحة بيانات مشتركة للفريق تعرض عدد الاختبارات التي تم اجتيازها خلال الأشهر القليلة الماضية.
لوحة بيانات مشتركة للفريق تعرض عدد الاختبارات التي تم اجتيازها خلال الأشهر القليلة الماضية.

ويتيح ذلك لمستخدمي Puppeteer اختيار Firefox أو Chrome لعمليات التشغيل الآلي. من خلال تحديد مفتاح الإعداد browser عند تشغيل 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();

مزيد من المعلومات حول الميزات الجديدة في Firefox 129 وعمل Mozilla على WebDriver اطّلِع على مشاركة مدوّنة Mozilla Hacks ذات صلة على BiDi.

إتاحة خدمات CDP في المستقبل

يوضح مقتطف الرمز السابق أنّه يمكنك تشغيل Chrome تلقائيًا باستخدام يجب ضبط protocol WebDriver BiDi باستخدام Puppeteer بشكل صريح webDriverBiDi ويرجع ذلك إلى أنّ Puppeteer سيواصل ضبط الإعدادات التلقائية على CDP: عدم إيقاف عمليات التشغيل الآلي الحالية، والاستمرار في إتاحة عمليات التشغيل الآلي المخصصة لميزات Chrome.

تم إيقاف دعم CDP في Firefox 129 وFirefox من المقرّر إزالته في نهاية 2024. إذا كانت لديك عمليات تشغيل آلي حالية تعتمد على دعم CDP في Firefox، ننصحك بنقل البيانات إلى WebDriver BiDi. إذا لم يكن ذلك ممكنًا، يُرجى التواصل مع dev-webdriver@mozilla.org مع حالة الاستخدام.