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

Matthias Rohmer
Matthias Rohmer

في الأسبوع الماضي، أعلنّا بالتعاون مع 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، ولكن كان له تحذيرات:

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

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

.

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

يعمل فريق Firefox جاهدًا على تنفيذ WebDriver BiDi في Firefox. وفي الوقت نفسه، عمل فريق Puppeteer على توسيع نطاق إتاحة WebDriver BiDi عبر واجهة برمجة التطبيقات Puppeteer. كان الهدف الذي عمل عليه كلا الفريقَين هو إتاحة كل واجهة برمجة تطبيقات مطلوبة لحالات استخدام التشغيل الآلي في مرحلة الإنتاج باستخدام 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();

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

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

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

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