انتقل إلى المحتوى

كيفية التقاط لقطات الشاشة باستخدام السيلينيوم

السيلينيوم هي أداة أتمتة متصفح شائعة تستخدم لتجميع الويب واختباره والمزيد. إحدى الميزات المفيدة التي توفرها هي القدرة على التقاط لقطات شاشة لصفحات الويب أثناء التشغيل الآلي. فيما يلي نظرة متعمقة على كيفية التقاط لقطات شاشة كاملة للصفحة ولمستوى العناصر باستخدام السيلينيوم في Python.

مقدمة لالتقاط لقطات الشاشة باستخدام السيلينيوم

تتضمن الأسباب الرئيسية التي قد تدفعك إلى التقاط لقطات شاشة باستخدام السيلينيوم ما يلي:

  • حفظ نسخ من صفحات الويب التي قمت بنسخها أو التفاعل معها لتصحيح الأخطاء أو السجلات
  • التقاط محتوى ديناميكي مثل معلومات التاريخ/الوقت أو الإعلانات لتحليلها لاحقًا
  • التحقق من مشكلات التخطيط عبر المتصفحات والأجهزة
  • توثيق خطوات وحالات سير العمل في الاختبارات الآلية
  • التقاط لقطات شاشة لصور captcha لحلها تلقائيًا

يدعم السيلينيوم التقاط لقطات شاشة لكل من صفحات الويب الكاملة وعناصر محددة على الصفحة. وهذا يوفر قدرًا كبيرًا من المرونة لالتقاط ما تحتاجه بالضبط.

إعداد السيلينيوم وفتح المتصفح

للبدء، نحتاج أولاً إلى استيراد السيلينيوم وإنشاء كائن WebDriver للتحكم في المتصفح. يوضح المثال أدناه فتح Chrome:

from selenium import webdriver

driver = webdriver.Chrome()

تعمل المتصفحات الأخرى مثل Firefox وEdge بالمثل. بعد أن أصبح كائن برنامج التشغيل جاهزًا، يمكننا الآن الانتقال إلى صفحة ويب لالتقاط لقطة شاشة:

driver.get("https://example.com")

أخذ لقطات شاشة كاملة للصفحة

أسهل طريقة لالتقاط لقطة شاشة لمحتويات نافذة المتصفح بأكملها هي استخدام save_screenshot().

قم بتمرير مسار الملف لحفظ الصورة مباشرة على القرص:

driver.save_screenshot(‘example_screenshot.png‘)

وبدلاً من ذلك، يمكنك الحصول على لقطة الشاشة على شكل بايتات PNG في الذاكرة أو سلسلة مشفرة Base64:

screenshot_png = driver.get_screenshot_as_png()
screenshot_b64 = driver.get_screenshot_as_base64() 

وهذا يسمح بحفظ لقطة الشاشة في قاعدة بيانات أو إرسالها عبر HTTP، على سبيل المثال.

أخذ لقطات الشاشة للعنصر

لالتقاط لقطات شاشة لعنصر معين في الصفحة بدلاً من ملء الشاشة، تحتاج أولاً إلى العثور على العنصر باستخدام محدد مواقع مثل محدد CSS أو XPath:

element = driver.find_element(By.ID, ‘main-content‘)

ثم اتصل .screenshot() على WebElement لالتقاط هذا الجزء من الصفحة فقط:

element_shot = element.screenshot(‘element.png‘)

تمامًا كما هو الحال مع لقطات الشاشة الكاملة، يمكنك الحصول على البايتات أو سلسلة Base64 أيضًا.

نصائح للحصول على لقطات شاشة موثوقة

فيما يلي بعض النصائح لالتقاط لقطات شاشة دقيقة ومفيدة باستخدام السيلينيوم:

  • انتظر حتى يتم تحميل الصفحات بالكامل قبل التقاط لقطات الشاشة لتجنب التقاط حالات التحميل المتوسط.
  • قم بتمرير العناصر إلى العرض قبل التقاط لقطات الشاشة إذا لزم الأمر.
  • شاهد الإعلانات والمحتوى الديناميكي المتغير بين اللقطات.
  • التقط لقطات شاشة للجوال عن طريق تغيير حجم نافذة المتصفح أو استخدام محاكاة الهاتف المحمول.
  • يمكن للمتصفحات بدون رأس مثل PhantomJS التقاط لقطة شاشة ولكنها قد تفوت بعض المحتوى.

حالات الاستخدام لقطات شاشة السيلينيوم

بعض الأمثلة على كيفية استخدام لقطات شاشة السيلينيوم في مشروعات تجريف الويب والأتمتة الخاصة بك:

  • التصحيح والتسجيل - قارن لقطات الشاشة قبل وبعدها لرؤية التغييرات.
  • التقاط المحتوى الذي تم إنشاؤه أو الحساس للوقت مثل لوحات المعلومات.
  • اختبار الانحدار البصري الآلي عبر إصدارات المتصفح.
  • توثيق سير العمل والحالة أثناء تشغيل الاختبار.
  • لقطة شاشة لرموز التحقق لإدخالها في خدمة الحل.
  • أرشفة بيانات الصفحة المحذوفة مع لقطات الشاشة.

خلاصة والخطوات التالية

خطوات التقاط لقطات الشاشة باستخدام السيلينيوم في بايثون هي:

  1. قم باستيراد السيلينيوم وإنشاء WebDriver
  2. انتقل إلى صفحة الويب المستهدفة
  3. اتصل save_screenshot() لالتقاط صفحة كاملة
  4. أو ابحث عن عنصر واتصل به screenshot() لالتقاط هذا العنصر فقط
  5. قم بالتعديل حسب الحاجة للصفحات الديناميكية والجوال

آمل أن يمنحك هذا الدليل أساسًا جيدًا لالتقاط لقطات الشاشة في مشروع السيلينيوم الخاص بك! الاحتمالات لا حصر لها.

الوسوم (تاج):

الانضمام إلى محادثة

لن يتم نشر عنوان بريدك الإلكتروني. الحقول المشار إليها إلزامية *