"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تشغيل السيلينيوم في بيئات مقطوعة الرأس: التغلب على خطأ "لا يمكن فتح العرض"؟

كيفية تشغيل السيلينيوم في بيئات مقطوعة الرأس: التغلب على خطأ "لا يمكن فتح العرض"؟

تم النشر بتاريخ 2024-11-19
تصفح:370

How to Run Selenium in Headless Environments: Overcoming the

كيفية تشغيل السيلينيوم في 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