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

الوظيفة

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

الإنذار

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

معلومات عامة عن وظيفة السيلينيوم

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

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

إطار عمل الروبوت

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

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

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

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

يمكن أن يبدو ملف الروبوت البسيط هكذا:

    [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

بايثون

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

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

مثال على البرنامج النصي: أولاً، يتم استيراد الوحدات المطلوبة وتعيين معلمات المتصفح. بعد ذلك، يتم بدء تشغيل مؤقت SKOOR totalTime ويتم تشغيل خطوة اختبار في كتلة محاولة/استثناء مع مؤقت ثانٍ، 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.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

opts = Options()
opts.set_headless()
cap = DesiredCapabilities().CHROME
cap["marionette"] = True
assert opts.headless  # Operating in headless mode
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_<الاسم> إلى كتلة محاولة في نص 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.chrome.options import Options
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 في متصفح مقطوع الرأس مباشرةً على المجمّع المحدد.

معلمات وظيفة السيلينيوم

المعلمة

الوصف

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

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

اسم المجموعة

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

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

المعلمة

الوصف

خيار السيلينيوم

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

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

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

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

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

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

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

  • بدء المؤقِّت $ الاسم

  • مؤقِّت الإيقاف المؤقت $ الاسم

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

  • إيقاف المؤقِّت $ الاسم

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

المعلمة

الوصف

اسم المؤقِّت

يمكن تكوين اسم المهمة واسم المؤقِّت فقط على مهمة مؤقِّت Selenium Timer. يمكن أن يكون اسم المهمة مختلفًا عن اسم المؤقِّت ولكن يجب أن يتوافق اسم المؤقِّت مع اسم المؤقِّت كما هو مكتوب في ملف الروبوت.

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

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

الوصف

وقت التشغيل

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

رمز النتيجة

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

رمز الخطأ

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

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

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

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

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

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

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

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

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

الوصف

وقت التشغيل

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

رمز النتيجة

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

رمز الخطأ

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