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

في الأسبوع الماضي فقط، أعلنّا بالتعاون مع BrowserStack أنّ WebDriver BiDi أصبح جاهزًا للاستخدام في 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 DevTools Protocol (CDP).

Firefox وCDP وPuppeteer

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

لتنفيذ ذلك، نفّذت Mozilla مجموعة فرعية من إطار عمل CDP في Firefox وحافظت عليها. يتيح هذا الحلّ التشغيل الآلي لمتصفّح Firefox باستخدام واجهة برمجة التطبيقات Puppeteer API، ولكن كان له تحذيرات:

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

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

.

أهمية العمل الجماعي

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

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

يتيح ذلك لمستخدمي 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();

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

إتاحة "إدارة العملاء بالاستناد إلى البيانات" في المستقبل

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

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