على مدار السنوات الثلاث الماضية، كان فريق "التشغيل التلقائي للمتصفِّح" في Chrome بالتعاون مع موردي المتصفحات والأدوات الرئيسيين الآخرين مثل BrowserStack إنشاء WebDriver BiDi: بروتوكول تشغيل آلي جديد للمتصفِّح والتي تتيح سير عمل التشغيل الآلي الثنائي الاتجاه على مختلف المتصفّحات. هذه في السابق لم يكن ممكنًا إلا من خلال "أدوات مطوري البرامج في Chrome" البروتوكول في المتصفِّحات المستنِدة إلى Chromium.
نشهد اليوم إنجازًا مهمًا في إطار هذه الجهود المشتركة من خلال WebDriver BiDi. أصبح جاهزًا للإنتاج جاهز للمطورين، بدءًا من BrowserStack اليوم.
السيلينيوم وBrowserStack
أصبحت BrowserStack مؤخرًا شريك تطوير رسمي لشركة Selenium، وهو إطار عمل مبرمَج ومفتوح المصدر للمتصفحات ساهم أيضًا في WebDriver BiDi. وتشكّل هذه الشراكة شهادة على استمرارية متصفِّح BrowserStack استثمارات في منظومة اختبار متكاملة ومزدهرة، كما يستخدم BrowserStack العديد من المحافظين الأساسيين على السيلينيوم.
يُعَدّ Selenium Grid (شبكة السيلينيوم) جزءًا من مشروع Seenium، والتي تتيح لك إجراء اختبارات على أجهزة متعددة بالتوازي. لكن تعيين شبكة بنفسك، والحصول على العشرات من الأجهزة المختلفة وصيانتها، قد يكون إبقائها متاحة أمرًا صعبًا أو حتى مستحيلاً للبعض.
يمكن أن تساهم حلول Selenium Grid المستضافة مثل BrowserStack في تسهيل تشغيل على العديد من الأنظمة الأساسية والأجهزة المختلفة بدون إدارتها على تمتلكه.
WebDriver BiDi على شبكة سيلينيوم
ويستند عنصر السيلينيوم إلى معيار 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 وأدوات أخرى مثل السيلينيوم، بالإضافة إلى المتصفحات الرئيسية الأخرى خلال الأسابيع المقبلة.
وإذا كان هذا الإعلان قد جعلك متحمسًا للاختبار، ولكنك لم تبدأ بعد خلال رحلتك للاختبار حتى الآن، احرص على الاطّلاع على دورتنا التدريبية على "تعلّم الاختبار" على web.dev.