على مدار السنوات الثلاث الماضية، تعاون فريق التشغيل الآلي للمتصفّح في 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.