على مدار السنوات الثلاث الماضية، تعاون فريق التشغيل الآلي للمتصفّح في Chrome مع مورّدي المتصفّحات والأدوات الرئيسيين الآخرين، مثل BrowserStack، لإنشاء WebDriver BiDi، وهو بروتوكول جديد للتشغيل الآلي للمتصفّح يتيح سير عمل التشغيل الآلي ثنائي الاتجاه على جميع المتصفّحات. في السابق، لم يكن بإمكانك تنفيذ هذه الخطوات إلا باستخدام بروتوكول DevTools الخاص بـ Chrome في المتصفّحات المستندة إلى Chromium.
يشكّل اليوم إنجازًا مهمًا لهذا الجهد المشترَك، إذ أصبح WebDriver BiDi أخيرًا جاهزًا للاستخدام في التطبيقات من قِبل المطوّرين، بدءًا من BrowserStack اليوم.
Selenium وBrowserStack
في الآونة الأخيرة، أصبحت BrowserStack شريك تطوير رسميًا في Selenium، وهو إطار عمل متقدّم ومفتوح المصدر لآلية التشغيل الآلي للمتصفّح، وقد ساهم أيضًا في تطوير WebDriver BiDi. تُعدّ هذه الشراكة دليلاً على مواصلة BrowserStack الاستثمار في منظومة اختبار مزدهرة، حيث تستخدم BrowserStack أيضًا العديد من مطوّري Selenium الأساسيين.
إنّ Selenium Grid هو جزء من مشروع Selenium، وهو يتيح لك إجراء اختبارات على أجهزة متعددة في الوقت نفسه. ولكن قد يكون من الصعب على بعض المستخدمين إعداد شبكة بأنفسهم، أو الحصول على عشرات الأجهزة المختلفة وصيانتها، أو إبقاؤها متاحة.
يمكن أن تسهّل حلول Selenium Grid المستضافة، مثل BrowserStack، إجراء اختباراتك على العديد من الأنظمة الأساسية والأجهزة المختلفة، بدون إدارتها بنفسك.
WebDriver BiDi على Selenium Grid
يستند Selenium إلى معيار WebDriver (يُرجى ملاحظة عدم توفّر تقنية BiDi) ولكنّه كان يتضمّن دعمًا تجريبيًا لتقنية WebDriver BiDi لبعض الوقت. اعتبارًا من اليوم، يمكنك استخدام تعليمات WebDriver BiDi في مرحلة الإنتاج على Selenium Grid المستضافة على BrowserStack.
يتيح ذلك أخيرًا ميزات مثل اعتراض الطلبات والمحاكاة المتقدّمة ومعالجة أحداث المتصفّح في الوقت الفعلي، وليس فقط في Chrome، ولكن في كل متصفّح يتيح WebDriver BiDi.
يوضّح المثال التالي كيفية الاستماع إلى أحداث السجلّات باستخدام WebDriver BiDi على BrowserStack. تتوفّر السجلات التي تم رصدها أيضًا للفحص على automate.browserstack.com:
const webdriver = require('selenium-webdriver');
// Insert credentials from https://www.browserstack.com/accounts/profile/details
const USERNAME = '<YOUR_USERNAME>';
const ACCESS_KEY = '<YOUR_ACCESS_KEY>';
(async () => {
const driver = await (new webdriver.Builder()
.withCapabilities({
browserName: 'chrome',
'bstack:options': {
seleniumVersion: '4.22.0',
seleniumBidi: true, // Enable WebDriver BiDi.
},
})
.usingServer(
`https://${USERNAME}:${ACCESS_KEY}@hub-cloud.browserstack.com/wd/hub`
)
.build());
// Add a listener for log events.
await driver.script().addConsoleMessageHandler((logEntry) => {
console.log(logEntry.text);
});
await driver.get(
'https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html'
);
// Trigger a console log on the demo page.
await driver.findElement({ id: 'consoleLog' }).click();
await driver.quit();
// Inspect logs on automate.browserstack.com!
})();
BrowserStack هي مجرد البداية
يهنئ فريق التشغيل الآلي في متصفّح Chrome فريق BrowserStack على إطلاق دعم WebDriver BiDi اليوم. ونتطلّع أيضًا إلى رؤية توسيع نطاق إتاحة WebDriver BiDi على BrowserStack والأدوات الأخرى مثل Selenium، بالإضافة إلى المتصفّحات الرئيسية الأخرى في الأسابيع المقبلة.
إذا كان هذا الإعلان قد شغّلك بشأن الاختبار، ولكنك لم تبدأ رحلة الاختبار بعد، احرص على الاطّلاع على دورة "التعرّف على الاختبار" على web.dev.