تقدّم هذه المقالة نظرة عامة على الميزات الجديدة في WebDriver BiDi في عام 2023.
ما هو WebDriver BiDi؟
WebDriver هو بروتوكول لأتمتة المتصفّح، ويتم تحديده على أنّه معيار W3C، مع عمليات التنفيذ في ChromeDriver وGeckoDriver وWebKitDriver.
يتضمّن Chromium أيضًا بروتوكول التشغيل الآلي للمتصفّح المملوك له: بروتوكول Chrome DevTools أو CDP.
هناك بعض الاختلافات الأساسية بين هذين البروتوكولَين: WebDriver هو معيار قابل للتشغيل التفاعلي، ولكنّ البروتوكول أقل فعالية ولا يحتوي على الميزات التي يقدّمها CDP. في المقابل، تكون منصّة إدارة العملاء أكثر كفاءة وفعالية، ولكنّها أقل قدرة على التشغيل التفاعلي.
لهذا السبب، في عام 2020، بدأت مجموعة عمل أدوات واختبارات المتصفّحات في W3C العمل على WebDriver BiDi، وهو بروتوكول تشغيل آلي جديد للمتصفّح يسدّ الفجوة بين بروتوكولَي WebDriver Classic وCDP. الاستفادة من ميزتَي التطبيق اطّلِع على المقالتَين نظرة على الماضي: تطور التشغيل الآلي للاختبار وWebDriver BiDi: مستقبل التشغيل الآلي على جميع المتصفّحات للحصول على مزيد من المعلومات الأساسية.
تشمل جهود WebDriver BiDi العمل على وضع معايير وإنشاء اختبارات منصة الويب وعمليات التنفيذ لمحرّكات المتصفّحات المختلفة.
ما هو وضعنا الآن؟
في عام 2022، تم توفير Chrome/ChromeDriver 106 وFirefox 102 مع دعم لمعايير WebDriver BiDi.
ومنذ ذلك الحين، تم اعتماد WebDriver BiDi في إطارات العمل الشائعة، ما ساعد في حلّ أهم المشاكل التي يواجهها المطوّرون من خلال توفير ميزات مطلوبة بشدة، مثل إتاحة التسجيل.
التسجيل المستنِد إلى WebDriver BiDi
ومن حالات الاستخدام الشائعة التحقّق تلقائيًا من تحميل صفحة ويب بدون أي سجلّات وحدة تحكّم أو تحذيرات أو أخطاء وبدون أي استثناءات JavaScript لم يتمّ رصدها. ومن حالات الاستخدام الأخرى أنّك قد تحتاج إلى كتابة اختبار آلي للتحقّق من أنّ صفحة ويب تسجِّل تحذيرًا أو تُعرِض استثناءً عندما يكون ذلك مقصودًا. لا يمكن حلّ هذه المشاكل باستخدام WebDriver Classic لأنّه ليس ثنائي الاتجاه. أصبح ذلك ممكنًا الآن من خلال WebDriver BiDi.
في ما يلي مثال على تنفيذ حالة الاستخدام الثانية باستخدام عمليات ربط لغة JavaScript في Selenium:
import * as assert from 'node:assert';
import { Builder, LogInspector } from 'selenium-webdriver';
import chrome from 'selenium-webdriver/chrome.js';
const driver = new Builder()
.forBrowser('chrome')
.setChromeOptions(new chrome.Options().enableBidi())
.build();
const inspector = await LogInspector(driver);
await inspector.onConsoleEntry((entry) => {
console.log(`Console message received: [${
entry.type}][${entry.level}] ${entry.text}`);
});
await driver.get('https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html');
await driver.findElement({ id: 'consoleLog' }).click();
await driver.quit();
في ما يلي مثال على استخدام الإصدار التجريبي من WebDriver BiDi في Puppeteer:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch({
protocol: 'webDriverBiDi',
headless: 'new',
});
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();
page.on('console', (message) => {
console.log(`Console message received: [${
message.type()
}] ${message.text()}`);
});
await page.goto(`https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html`);
await page.evaluate(() => {
document.querySelector('#consoleLog').click();
});
await browser.close();
تتوفّر الوظيفة نفسها من خلال أدوات تجريدية أخرى، مثل WebdriverIO.
خطة عمل عامة مشترَكة
لا نزال نعمل على تطوير مواصفات WebDriver BiDi بالتعاون مع مورّدي المتصفّحات الآخرين وأصحاب المصلحة في المجال الذين يشاركون في مجموعة عمل W3C. اتّفقت المجموعة مؤخرًا على خارطة طريق مشترَكة، ما أدّى إلى مواءمة العمل القادم على المواصفات والتنفيذ مع حالات الاستخدام الواضحة التي تخصّ المستخدمين من البداية إلى النهاية.
إمكانية التشغيل التفاعلي
بينما تحدّد مجموعة العمل بشكل جماعي المزيد من الميزات، ننشئ أيضًا اختبارات منصّة الويب لبروتوكول WebDriver BiDi. تساعدنا حزمة الاختبار المشتركة هذه في التحقّق من صحة عمليات التنفيذ وإمكانية التشغيل التفاعلي بينها. يمكنك الاطّلاع على أحدث نتائج الاختبار لمتصفّحات مختلفة في لوحة بيانات WPT.
إتاحة ميزة "الاتجاهين للكتابة" في WebDriver: كيف يمكنك المساعدة؟
هل يهمّك مستقبل التشغيل الآلي للمتصفّح باستخدام WebDriver BiDi؟ في ما يلي كيفية إظهار دعمك:
- يمكنك أن تكون من أوائل المختبِرين والمستخدِمين للمساعدة في وضع أسس جديدة لمستقبل WebDriver BiDi.
- نشر الخبر شارِك المشروع على وسائل التواصل الاجتماعي باستخدام الهاشتاغ
#WebDriverBiDi
. - طلب الدعم: يمكنك إرسال طلب ميزة أو التواصل مع مطوّري الأدوات المفضّلة لديك لمعرفة خططهم بشأن استخدام WebDriver BiDi.
- المشاركة في مناقشات المواصفات: