كيفية تشغيل السيلينيوم في Xvfb: التغلب على خطأ "لا يمكن فتح العرض"
يوفر Xvfb (X Virtual Framebuffer) عرضًا افتراضيًا يتيح تنفيذ التطبيقات الرسومية في بيئات بدون رأس، مثل مثيلات EC2 التي تفتقر إلى واجهة المستخدم الرسومية. يعد هذا ضروريًا لتشغيل اختبارات السيلينيوم على خوادم بدون واجهة مستخدم رسومية.
ومع ذلك، حتى بعد تثبيت Selenium وXvfb، قد تواجه "خطأ: لا يمكن فتح العرض: :0" عند محاولة تشغيل الاختبارات. ينبع هذا من اعتماد السيلينيوم على العرض الرسومي للتفاعل مع صفحات الويب.
الحل: استخدم PyVirtualDisplay أو Xvfbwrapper
لحل هذه المشكلة، يمكنك استخدام PyVirtualDisplay أو Xvfbwrapper ، والتي تغلف Xvfb كوحدات Python. تحاكي هذه الوحدات العرض الافتراضي، مما يسمح للسيلينيوم بالعمل في بيئات مقطوعة الرأس:
الخيار 1: PyVirtualDisplay
from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=0, size=(800, 600)) display.start() browser = webdriver.Firefox() browser.get('http://www.google.com') print(browser.title) browser.quit() display.stop()
الخيار 2: Xvfbwrapper
from xvfbwrapper import Xvfb vdisplay = Xvfb() vdisplay.start() browser = webdriver.Firefox() browser.get('http://www.google.com') print(browser.title) browser.quit() vdisplay.stop()
يمكنك أيضًا استخدام مدير السياق لتبسيط العملية:
from xvfbwrapper import Xvfb with Xvfb() as xvfb: # Launch stuff inside virtual display here. # It starts/stops in this code block.
باستخدام هذه الوحدات، يمكنك تشغيل اختبارات السيلينيوم بشكل فعال على خوادم مقطوعة الرأس تفتقر إلى واجهة مستخدم رسومية، مما يضمن إمكانية تنفيذ اختباراتك بنجاح في أي بيئة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3