دروس سيكولي ل Selenium أتمتة
ما هو سيكولي في Selenium?
Sikuli Sikuli هي أداة أتمتة اختبار مفتوحة المصدر تعتمد على واجهة المستخدم الرسومية. تُستخدم بشكل أساسي للتفاعل مع عناصر صفحات الويب والتعامل مع النوافذ المنبثقة. يستخدم Sikuli تقنية "التعرف على الصور" و"واجهة المستخدم الرسومية للتحكم" للتفاعل مع عناصر صفحات الويب والنوافذ المنبثقة. في Sikuli، يتم التقاط جميع عناصر الويب كصور وتخزينها داخل المشروع.
كيفية استخدام سيكولي مع Selenium برنامج تشغيل الويب
من الممكن دمج Sikuli مع selenium webdriver باستخدام ملف Sikuli JAR.
التسلسل أدناه هو قائمة الخطوات اللازمة لتكوين Sikuli باستخدام selenium webdriver.
الخطوة 1) التنزيل ملف Sikuli JAR من عنوان URL أدناه، واستخرج محتويات الملف المضغوط إلى مجلد.
الخطوة 2) قم بإنشاء مشروع JAVA جديد في Eclipse وأضف ملف JAR إلى مسار البناء، إلى جانب ملفات Selenium Jar باستخدام النقر بزر الماوس الأيمن على المشروع -> مسار البناء -> تكوين مسار البناء
بمجرد إضافة ملف JAR إلى مسار بناء المشروع، يمكن استخدام الفئات التي يوفرها Sikuli.
فئة الشاشة في سيكولي
فئة الشاشة هي الفئات الأساسية لجميع الطرق التي توفرها Sikuli. تحتوي فئة الشاشة على طرق محددة مسبقًا لجميع العمليات التي يتم إجراؤها بشكل شائع على عناصر الشاشة مثل النقر والنقر المزدوج وتوفير الإدخال لمربع نص والتحويم وما إلى ذلك. فيما يلي قائمة بالطرق المستخدمة بشكل شائع التي توفرها فئة الشاشة.
| الأسلوب | الوصف | بناء الجملة |
|---|---|---|
| انقر | تُستخدم هذه الطريقة للنقر على عنصر على الشاشة باستخدام اسم الصورة كمعلمة. | الشاشة s = شاشة جديدة ()؛
s.click("QA.png"); |
| النقر المزدوج | تُستخدم هذه الطريقة للنقر المزدوج على عنصر ما. وتقبل اسم الصورة كمعلمة. | الشاشة s = شاشة جديدة ()؛
s.doubleClick("QA.png"); |
| النوع | يتم استخدام هذه الطريقة لتوفير قيمة الإدخال لعنصر ما. يقبل اسم الصورة والنص المراد إرسالهما كمعلمات. |
s.type("QA.png"،"TEXT"); |
| رفرفة | يتم استخدام هذه الطريقة للتمرير فوق عنصر ما. يقبل اسم الصورة كمعلمة. |
s.hover("QA.png"); |
| تُستخدم هذه الطريقة للعثور على عنصر معين على الشاشة. يقبل اسم الصورة كمعلمة. |
s.find("QA.png"); |
فئة النمط في سيكولي
تُستخدم فئة النمط لربط ملف الصورة بسمات إضافية لتعريف العنصر بشكل فريد. يأخذ مسار الصورة كمعلمة.
النمط p = النمط الجديد("مسار الصورة");
فيما يلي أكثر الأساليب استخدامًا لفئة النمط.
| الأسلوب | الوصف | بناء الجملة |
|---|---|---|
| getFileName | إرجاع اسم الملف الموجود في كائن النمط. |
النمط p = نمط جديد("D:\Demo\QA.png"); اسم ملف السلسلة = p.getFileName(); |
| مماثل | تقوم هذه الطريقة بإرجاع كائن نمط جديد مع تعيين التشابه على قيمة محددة. يقبل قيمة التشابه بين 0 إلى 1 كمعلمة. يبحث Sikuli عن كافة العناصر التي تقع ضمن نطاق التشابه المحدد ويعيد كائن نمط جديد. |
النمط p1 = p.similar(0.7f); |
| دقيق | تقوم هذه الطريقة بإرجاع كائن نمط جديد مع تعيين التشابه على 1. وتبحث فقط عن التطابق التام للعنصر المحدد. |
النمط p1 = p.exact(); |
مثال على الكود لتحميل الملفات باستخدام Sikuli
يشرح الكود أدناه استخدام Sikuli لتحميل الملفات فيه Firefox.
package com.sikuli.demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Pattern;
import org.sikuli.script.Screen;
import org.openqa.selenium.chrome.ChromeDriver;
public class SikuliDemo {
public static void main(String[] args) throws FindFailed {
System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
String filepath = "D:\\Guru99Demo\\Files\\";
String inputFilePath = "D:\\Guru99Demo\\Files\\";
Screen s = new Screen();
Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG");
Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
WebDriver driver;
// Open Chrome browser
driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/image_upload/index.php");
// Click on Browse button and handle windows pop up using Sikuli
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
s.wait(fileInputTextBox, 20);
s.type(fileInputTextBox, inputFilePath + "Test.docx");
s.click(openButton);
// Close the browser
driver.close();
}
}
شرح الكود:
الخطوة 1) يتضمن البيان الأول تحديد المسار القابل للتنفيذ لبرنامج التشغيل لـ chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
الخطوة 2) استخدم أداة التقاط الشاشة مثل Snipping Tool لالتقاط لقطات شاشة للنافذة المنبثقة "FileText"Box" وزر "فتح".
هذه هي الطريقة التي يجب أن تبدو بها لقطة الشاشة: -
يتم تخزين الصور الخاصة بمربع نص إدخال ملف Windows والزر المفتوح على "FileText"Box".PNG" و"OpenButton.PNG".
يستخدم Sikuli تقنية التعرف على الصور للتعرف على العناصر الموجودة على الشاشة. يقوم بالعثور على العناصر الموجودة على الشاشة بناءً على صورها فقط.
مثال: إذا كنت تريد أتمتة عملية فتح المفكرة، فأنت بحاجة إلى تخزين صورة أيقونة سطح المكتب للمفكرة على ملف PNG وإجراء عملية النقر عليها.
في حالتنا، يتعرف على مربع نص إدخال الملف ويفتح الزر Windows النافذة المنبثقة باستخدام الصور المخزنة. إذا تغير دقة الشاشة من التقاط الصورة إلى تنفيذ البرنامج النصي للاختبار، فسيكون سلوك Sikuli غير متسق. وبالتالي، يُنصح دائمًا بتشغيل البرنامج النصي للاختبار بنفس الدقة التي يتم بها التقاط الصور. سيؤدي التغيير في حجم البكسل للصور إلى قيام Sikuli بإلقاء استثناء FindFailed.
الخطوة 3) تتضمن العبارات التالية إنشاء كائنات لفئات الشاشة والنمط. إنشاء كائن شاشة جديد. قم بتعيين مسار الملف الذي تريد تحميله كمعلمة لكائن النمط.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
الخطوة 4) تتضمن العبارات التالية فتح متصفح Chrome بعنوان URL: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/image_upload/index.php");
عنوان URL أعلاه هو تطبيق تجريبي لتوضيح وظيفة تحميل الملفات.
الخطوة 5) انقر فوق زر اختيار ملف باستخدام البيان أدناه
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
الخطوة 6) انتظر حتى تظهر النافذة المنبثقة. تُستخدم طريقة الانتظار للتعامل مع التأخير المرتبط بفتح النافذة المنبثقة بعد النقر على زر التصفح.
s.wait(fileInputTextBox, 20);
الخطوة 7) اكتب مسار الملف في مربع نص ملف الإدخال وانقر على زر فتح
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
الخطوة 8) أغلق المتصفح
driver.close();
الإخراج:
في البداية، يفتح البرنامج النصي متصفح Chrome
انقر على زر "اختيار ملف"، ستظهر شاشة منبثقة لملف Windows. أدخل البيانات في مربع نص "إدخال الملف" وانقر على زر "فتح"
تظهر الشاشة أدناه بمجرد اكتمال تحميل الملف وإغلاق المتصفح
خاتمة
يستخدم Sikuli للتعامل مع كائنات الفلاش على صفحة الويب والنوافذ المنبثقة بسهولة. يُستخدم Sikuli بشكل أفضل عندما لا تتغير العناصر الموجودة على واجهة المستخدم بشكل متكرر. وبسبب هذا العيب، من منظور اختبار الأتمتة، يتم إعطاء Sikuli تفضيلاً أقل مقارنة بالأطر الأخرى مثل Robot وAutoIT.







