وظائف السيلينيوم مع المؤقتات

الوظيفة

هذا المكون الإضافي مخصص لاختبار الويب باستخدام إطار عمل selenium. يقوم بتشغيل اختبارات RobotFramework أو Python على متصفح Chrome بدون واجهة مستخدم موجود على جهاز تجميع، وينتظر انتهاء التنفيذ، ثم يجلب ملفات السجلات التي تم إنشاؤها ويعرضها في صفحة نظرة عامة.

التنبيه

وقت التشغيل، رمز الاستجابة، رمز النتيجة

معلومات عامة عن مهمة Selenium

يمكن إنشاء مشاريع Selenium إما باستخدام RobotFramework أو لغة Python.

لجعل ملفات مشروع Selenium متاحة على أجهزة التجميع الخارجية، يجب تكوين خدمات SKOOR syncfs وتشغيلها. يجب تكوين User reranger لتسجيل الدخول بدون كلمة مرور كما هو موضح في دليل النسخ المتماثل

RobotFramework

يتم إنشاء ملف الروبوت باستخدام الرأس من /opt/eranger/collector/robot.robot وإلحاقه بالملف المقدم في المحرك. فقط في حالات خاصة قد يرغب المستخدم في توفير ملف روبوت كامل. يعد دليل مستخدم RobotFramework مصدرًا جيدًا للمعلومات حول الاحتمالات. سيتم وضع ملفات الروبوت في /opt/eranger/collector/upload/

قسم المعلومات في تكوين المهمة:

يمكن استخدام ملحق Chrome أو Firefox Katalon Recorder لتسجيل إجراء الاختبار وتصدير جزء حالة الاختبار (التنسيق: إطار عمل الروبوت).

أمثلة على البرامج النصية:

قد يبدو ملف الروبوت البسيط كما يلي:

    [Teardown]    Run Keyword If Test Failed    Capture Page Screenshot
    Set Window Size    ${1920}    ${1200}
	Start Timer		totalTime
	Start Timer		Open
	Goto    https://my.great.business.com/
	Stop Timer 		Open
	click	link=Business
	sleep	3s
    Stop Timer		totalTime

نص برمجي أكثر تقدمًا مع مؤقتات متعددة وكتل TRY/EXCEPT:

    Start Timer    TotalTime

    Start Timer    Open
    TRY
        Goto    https://my.great.business.com/
        Stop Timer    Open
    EXCEPT
        Capture Page Screenshot
        Error Timer     Website unavailable
        ErrorCode Timer    11
        Stop Timer    Open
    END
    
    Start Timer    Contact
    TRY
        click    link=Contact
        Stop Timer    Contact
    EXCEPT
        Capture Page Screenshot
        Error Timer     Contact link failed
        ErrorCode Timer    22
        Stop Timer    Contact
    END	
    sleep    2s

    Start Timer    Home
    TRY
        click    link=Home
        Stop Timer    Home
    EXCEPT
        Capture Page Screenshot
        Error Timer     Home link failed
        ErrorCode Timer    33
        Stop Timer    Home
    END
    sleep    2s

    Stop Timer    TotalTime

Python

يتم تثبيت وحدات Selenium و SKOOR Python لاختبار الويب Selenium مسبقًا مع SKOOR Collectors. يمكن تطوير نصوص Python واستخدامها مع المكون الإضافي أثناء تطويرها. بالإضافة إلى ذلك، يمكن استخدام Selenium IDE لتسجيل حالات الاستخدام. 

قسم المعلومات في تكوين المهمة:

نموذج البرنامج النصي: أولاً، يتم استيراد الوحدات المطلوبة وتعيين معلمات المتصفح. ثم، يتم تشغيل مؤقت SKOOR totalTime ويتم تشغيل خطوة اختبار في كتلة try/except باستخدام مؤقت ثانٍ step1. بهذه الطريقة، يمكن تكوين المؤقتات واستخدامها لاحقًا في محرك SKOOR.

#!/usr/bin/python3
import sys, time, skoor, traceback
from skoor import SkoorTimer, Variables, SkoorScreenshot

from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

opts = ChromeOptions()
opts.add_argument("--headless=new")
opts.add_argument("--no-sandbox")
opts.add_argument("--disable-setuid-sandbox")
opts.add_argument("--disable-gpu")
opts.add_argument("--allow-running-insecure-content")
opts.add_argument("--disable-extensions")
opts.add_argument("--ignore-certificate-errors")
opts.binary_location = os.getenv("SKOOR_PUPPETEER_CHROME_EXECUTABLE")

cap = DesiredCapabilities().CHROME
cap["marionette"] = True

driver = webdriver.Chrome(chrome_options=opts)

skoor.setLogLevel(skoor.INFO)
driver.set_window_size(1920,1200)

totalTime = SkoorTimer("TotalTime")
step1 = SkoorTimer("Step 1")

totalTime.start()

try:
    step1.start()
    skoor.log(skoor.INFO, "Search started")
    driver.get("https://xyz.com")
    driver.find_element_by_id("html-element1")
    skoor.log(skoor.INFO, "Step 1 done")
    step1.stop()
        
except:
    skoor.log(skoor.ERROR, traceback.format_exc())
    SkoorScreenshot().capture(driver)
    step1.error(-2, "Step 1 failed")

totalTime.stop()
driver.quit()

skoor.log(skoor.INFO, "Script done")

إذا تم استخدام Selenium IDE لتسجيل حالة اختبار، فيمكن نسخ محتوى وظيفة test_<name> إلى كتلة try في البرنامج النصي Python 3:

  def test_dict(self):
    self.driver.get("https://dict.leo.org/englisch-deutsch/")
    self.driver.set_window_size(1515, 948)
    self.driver.find_element(By.LINK_TEXT, "Forum").click()

 إذا تم استخدام وحدات Python إضافية مثل by أو key بواسطة Selenium IDE، فيجب إضافة هذه الوحدات أيضًا إلى قسم الاستيراد في البرنامج النصي النهائي:

#!/usr/bin/python3
import sys, time, skoor, traceback
from skoor import SkoorTimer, Variables, SkoorScreenshot

from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
 
...


من المهم أن تتم معالجة عملية driver.quit() في أي حال. وإلا فسيحدث تسرب للموارد!

جهاز Selenium

عند إنشاء جهاز Selenium، تظهر شاشة خيارات التكوين التالية:


سيتم تشغيل المكون الإضافي Selenium في متصفح بدون واجهة مستخدم مباشرة على المجمع المحدد. 

معلمات مهمة Selenium

المعلمة

الوصف

حد وقت التشغيل

حدد مدة الوقت المسموح بها لتشغيل المشروع. يعتمد ذلك على ما يفعله المشروع. هذه المعلمة اختيارية، وقيمة 0 أو تركها فارغة تعني عدم تعيين أي مهلة على الإطلاق.

اسم المجموعة

إذا تم توفير ملف روبوت كامل مع "الإعدادات" وما إلى ذلك، يتم تنفيذه دون تعديل. عادةً ما يكون الجزء "حالة الاختبار" هو المطلوب فقط. في هذه الحالة، يتم أخذ الرأس من /opt/eranger/collector/robot.robot.

خصائص السيلينيوم

المعلمة

الوصف

خيار Selenium

يمكن تعيين تسلسلات الهروب وخيارات أخرى بواسطة هذه الخاصية.

متغير السيلينيوم

يمكن تعريف متغيرات ملف الروبوت في هذه الخاصية مثل INFO:info أو TIMEOUT:0

تفاصيل مؤقت السيلينيوم

بنفس الطريقة التي تضاف بها مهام المؤقت إلى مهام مشروع EEM، يمكن إضافة مهام المؤقت أسفل مهمة السيلينيوم. المعلمة الوحيدة هي اسم المؤقت. 

تعتبر المؤقتات التي تحتوي على إدخال بدء وإيقاف (يتم إنشاؤها بواسطة "إيقاف المؤقت" أو "إيقاف المؤقت مؤقتًا") ناجحة.

الكلمات الرئيسية التالية متاحة لاستخدام المؤقتات في ملف الروبوت

  • بدء المؤقت $name

  • إيقاف المؤقت مؤقتًا $name

  • استئناف المؤقت $name

  • مؤقت التوقف $name

معلمات مؤقت السيلينيوم

المعلمة

الوصف

اسم المؤقت

يمكن تكوين اسم المهمة واسم المؤقت فقط في مهمة مؤقت Selenium. يمكن أن يختلف اسم المهمة عن اسم المؤقت، ولكن يجب أن يتطابق اسم المؤقت مع اسم المؤقت كما هو مكتوب في ملف الروبوت.

قيم سيلينيوم تايمر وحدود الإنذار

القيمة / حد الإنذار

الوصف

وقت التشغيل

وقت تشغيل هذا المؤقت المحدد

رمز النتيجة

 0 =
موافق-1 = لم يتم
التشغيل-2 =
فشل-3 = انتهى ولكن لم
يبدأ-4 = اسم المؤقت
فارغ-5 = خطأ السيلينيوم

رمز الخطأ

رمز خطأ عام في المهمة (انظر قسم رموز أخطاء المهام)

نتائج السيلينيوم

بعد تشغيل المكون الإضافي، يبدو قسم القيم في مهمة السيلينيوم كما يلي:

أو في حالة حدوث خطأ أثناء التنفيذ:

سيؤدي النقر على رابط ملفات النتائج في قسم القيم إلى ظهور علامة تبويب جديدة في المتصفح كما يلي:

تقدم هذه الصفحة نظرة عامة على الاختبارات التي تم تشغيلها ونتائجها. لكل تشغيل تم فيه جمع السجلات بواسطة SKOOR Engine، يوجد سطر به طابع زمني ورابط إلى ملف النتائج المقابل. إذا حدثت أخطاء أثناء التشغيل، يتم وضع الرابط في عمود الاختبارات الفاشلة، مع لقطة شاشة (إذا تم التقاطها بواسطة البرنامج النصي) ومؤقت (مؤقتات) الفشل. يوفر هذا في الغالب فكرة جيدة عن سبب فشل تشغيل الاختبار. 

سيؤدي النقر فوق ملف التقرير في قسم القيم إلى ظهور صفحة html تتضمن نظرة عامة على ناتج التنفيذ بالإضافة إلى رابط إلى ملف تقرير html أكثر تفصيلاً (نفس الملف الذي يمكن الوصول إليه مباشرة في قسم القيم).

قيم السيلينيوم وحدود الإنذار

القيمة / حد الإنذار

الوصف

وقت التشغيل

وقت تشغيل المكون الإضافي

رمز النتيجة

 0 =
موافق-1 = خطأ
عام-10 = فشل
التنفيذ-11 = معلمة
مفقودة-12 = ملف الروبوت غير
موجود-13 = فشل السيلينيوم

رمز الخطأ

رمز خطأ عام في المهمة (انظر قسم رموز أخطاء المهام)