وظائف السيلينيوم مع المؤقتات
الوظيفة | هذا المكون الإضافي مخصص لاختبار الويب باستخدام إطار عمل 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 = |
رمز الخطأ | رمز خطأ عام في المهمة (انظر قسم رموز أخطاء المهام) |
نتائج السيلينيوم
بعد تشغيل المكون الإضافي، يبدو قسم القيم في مهمة السيلينيوم كما يلي:
أو في حالة حدوث خطأ أثناء التنفيذ:
سيؤدي النقر على رابط ملفات النتائج في قسم القيم إلى ظهور علامة تبويب جديدة في المتصفح كما يلي:
تقدم هذه الصفحة نظرة عامة على الاختبارات التي تم تشغيلها ونتائجها. لكل تشغيل تم فيه جمع السجلات بواسطة SKOOR Engine، يوجد سطر به طابع زمني ورابط إلى ملف النتائج المقابل. إذا حدثت أخطاء أثناء التشغيل، يتم وضع الرابط في عمود الاختبارات الفاشلة، مع لقطة شاشة (إذا تم التقاطها بواسطة البرنامج النصي) ومؤقت (مؤقتات) الفشل. يوفر هذا في الغالب فكرة جيدة عن سبب فشل تشغيل الاختبار.
سيؤدي النقر فوق ملف التقرير في قسم القيم إلى ظهور صفحة html تتضمن نظرة عامة على ناتج التنفيذ بالإضافة إلى رابط إلى ملف تقرير html أكثر تفصيلاً (نفس الملف الذي يمكن الوصول إليه مباشرة في قسم القيم).
قيم السيلينيوم وحدود الإنذار
القيمة / حد الإنذار | الوصف |
|---|---|
وقت التشغيل | وقت تشغيل المكون الإضافي |
رمز النتيجة | 0 = |
رمز الخطأ | رمز خطأ عام في المهمة (انظر قسم رموز أخطاء المهام) |






