سيلينيوم WebDriver BiDi: الوريث المثالي لـ WebDriver Classic وبروتوكول أدوات تطوير Chrome
لمحة عن WebDriver BiDi لمهندسي ضمان الجودة
تواجه تطبيقات الويب تحديات كبيرة في ضمان عملها على منصات وأجهزة متعددة. تتطلب هذه التطبيقات أداءً قويًا بغض النظر عن شكل الجهاز أو المتصفح المستخدم. لذلك يعتمد مهندسو الجودة على تقنيات مختلفة لتشغيل المتصفحات تلقائيًا، مما يسهل اختبار تطبيقات الويب. يوفر هذا المقال لمحة عن واجهات برمجة التطبيقات الخاصة بتشغيل المتصفحات المهمة للمختبرين والمطورين، مع التركيز على تطور Selenium WebDriver من بداياته حتى الوضع الحالي.
قبل سنوات، قدم فريق صيانة Selenium وسيلة جديدة للوصول إلى الوظائف ثنائية الاتجاه باستخدام الـ WebSockets. يمكن الآن لمهندسي الجودة والمطورين استخدام واجهة برمجة تطبيقات WebDriver BiDi لتعزيز مرونة اختباراتهم.
لماذا تعتبر واجهات برمجة تطبيقات تشغيل المتصفحات مهمة؟
ما ينقص الويب
وفقًا لتقرير تقييم احتياجات مطوري MDN لعام 2021، كان “الاختبار عبر المتصفحات” من أبرز التحديات التي يواجهها المطورون. رغم جهود W3C القياسية، لا تزال هناك فروق بين محركات المتصفحات. يعد دعم اختبار التطبيقات عبر محركات متعددة أمرًا أساسيًا للويب كمنصة مفتوحة.
تطور WebDriver Classic
الخط الزمني لـ WebDriver Classic
- 2004 – Selenium RC: الأداة الأولى لاختبارات التشغيل الآلي.
- 2005 – WebDriver: تحسين في الاتصال بين السائق والمتصفح.
- 2009 – Selenium WebDriver: دمج بين Selenium وWebDriver.
- 2018 – W3C معيار رسمي: أصبح بروتوكول WebDriver معيارًا قياسيًا.
محدوديات WebDriver Classic
- التزامن: يعتمد على استجابة أوامر HTTP، مما قد يؤدي إلى تأخيرات.
- الاتصال أحادي الاتجاه: يفتقر إلى القدرة على الحصول على تحديثات في الوقت الفعلي.
- التوافق مع DevTools: لا يوفر وصولاً كاملاً إلى أدوات DevTools.
بروتوكول أدوات تطوير Chrome (CDP)
دور CDP
CDP هو بروتوكول اتصال يُستخدم مع أدوات DevTools لتوفير ميزات مثل:
- مراقبة DOM.
- تسجيل الشبكة.
- اعتراض الطلبات.
تحديات CDP
- متوافق فقط مع المتصفحات المستندة إلى Chromium.
- تعتمد على إصدار المتصفح، مما يؤدي إلى انقطاع التوافق.
- غير مصمم خصيصًا لتشغيل العمليات الآلية.
WebDriver BiDi: الحل الأمثل
ما هو WebDriver BiDi؟
هو بروتوكول جديد يجمع بين مزايا WebDriver Classic وبروتوكول CDP، مما يتيح:
- دعم عبر المتصفحات.
- اتصال ثنائي الاتجاه عبر WebSockets.
- الوصول إلى أدوات DevTools.
مزايا WebDriver BiDi
- التوافق مع المعايير: يلتزم بمعايير W3C لتوفير توافق شامل.
- اتصال ثنائي الاتجاه: يتيح التفاعل في الوقت الفعلي بين الأداة والمتصفح.
- تصميم موجه للاختبارات: يلبي احتياجات عمليات الاختبار والبرمجة.
أمثلة على WebDriver BiDi
مراقبة سجلات JavaScript
from selenium import webdriver
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.enable_bidi = True
driver = webdriver.Chrome(options=options)
driver.get('https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html')
log_entries = []
driver.script.add_javascript_error_handler(log_entries.append)
driver.find_element(By.ID, "jsException").click()
assert log_entries[0].text == "Error: Not working"
driver.quit()
يسمح هذا المثال بمراقبة سجلات الأخطاء مباشرة في متصفح التطبيق.
مقارنة بين CDP وBiDi
المعيار | CDP | WebDriver BiDi |
---|---|---|
دعم المتصفحات | خاص بـ Chromium | يدعم جميع المتصفحات. |
التوافق مع الإصدارات | حساس لتحديثات المتصفح | مستقر على المدى الطويل. |
الاتصال | أحادي الاتجاه | ثنائي الاتجاه. |
الخلاصة
يمثل WebDriver BiDi مستقبل أتمتة المتصفحات، حيث يوفر نهجًا أكثر قوة واستدامة لاختبار التطبيقات عبر المتصفحات المختلفة. مع دعم ميزات مثل اعتراض الشبكة، ومراقبة السجلات، والتوافق مع أدوات DevTools، يوفر هذا البروتوكول إمكانيات قوية تجعل عملية الاختبار أكثر كفاءة ودقة.