فئة الروبوت في Selenium برنامج تشغيل الويب

ما هي فئة الروبوت في Selenium?

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

لماذا فئة الروبوت؟

فئة الروبوت يستخدم في Selenium لأنه في بعض Selenium في اختبارات الأتمتة، يحتاج المستخدمون إلى التحكم في لوحة المفاتيح أو الماوس للتفاعل مع نوافذ نظام التشغيل مثل النوافذ المنبثقة للتنزيل، والنوافذ المنبثقة للطباعة، وما إلى ذلك، والتطبيقات الأصلية مثل المفكرة، والآلة الحاسبة، وما إلى ذلك. Selenium يتعذر على Webdriver التعامل مع هذه النوافذ المنبثقة/التطبيقات، لذلك Java الإصدار 1.3، تم تقديم فئة الروبوت التي يمكنها التعامل مع النوافذ المنبثقة/التطبيقات الخاصة بنظام التشغيل.

توثيق فئة الروبوت

تشير توثيق فئة الروبوت in Selenium يساعد المستخدمين على فهم التعريف الأساسي وبناء الجملة واستخدام جميع الأساليب والوظائف المتاحة في فئة الروبوت Java حزمة AWT. يمكن للمستخدمين عرض الوثائق على رسمي Oracle موقع الكتروني. يمكن للمستخدمين أيضًا إنشاء الوثائق على أجهزتهم المحلية بأنفسهم.

لإنشاء الوثائق على الجهاز المحلي، اتبع الخطوات التالية-

الخطوة 1) ستجد ملف src.zip في مجلد JDK. انسخ src.zip واستخرجه في مجلد أو دليل آخر (على سبيل المثال D: أو E: )

توثيق فئة الروبوت

الخطوة 2) قم باستخراج مجلد src وانتقل إلى (المسار حتى مجلد src)/src/Java/awt

الخطوة 3) انسخ الموقع الحالي لمجلد awt وافتح موجه الأوامر.

الخطوة 4) في cmd، قم بتغيير موقع الدليل الحالي إلى مجلد awt واكتب "javadoc *.java" كما هو موضح أدناه

توثيق فئة الروبوت

انتظر بعض الوقت حتى يقوم النظام بالمعالجة، وبمجرد الانتهاء سترى القليل من ملفات HTML في مجلد awt.

الخطوة 5) افتح ملف Index.html

توثيق فئة الروبوت

الخطوة 6) إليك الوثائق الكاملة لحزمة awt، من شريط التنقل الأيسر، انقر فوق الارتباط التشعبي "Robot" (انظر 1 المميزة في الصورة أدناه).

توثيق فئة الروبوت

هنا يمكنك أيضًا رؤية جميع الأساليب والواجهات الخاصة بـ Robot Class (انظر 2 المميزة في الصورة أعلاه).

أساليب فئة الروبوت في Selenium والاستخدام

يمكن استخدام أساليب Robot Class للتفاعل مع أحداث لوحة المفاتيح/الماوس أثناء إجراء أتمتة المتصفح. بدلاً عن ذلك AutoIT يمكن استخدامه، ولكن عيبه هو أنه يقوم بإنشاء ملف قابل للتنفيذ (exe) والذي سيعمل فقط على نظام التشغيل Windows، لذلك فهو ليس خيارًا جيدًا للاستخدام.

بعض الأساليب الشائعة والشائعة المستخدمة في Robot Class أثناء أتمتة الويب:

الطريقة الأولى: الضغط على المفتاح ():

robot.keyPress(KeyEvent.VK_DOWN): هذه الطريقة بالضغط على مفتاح السهم لأسفل في لوحة المفاتيح

الطريقة الثانية: ضغط الماوس ():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): ستضغط هذه الطريقة على النقر بزر الماوس الأيمن على الماوس.

الطريقة الثالثة: تحريك الماوس ():

robot.mouseMove(point.getX(), point.getY()): سيؤدي هذا إلى تحريك مؤشر الماوس إلى إحداثيات X وY المحددة.

الطريقة الرابعة: إصدار المفتاح ():

robot.keyRelease(KeyEvent.VK_DOWN): هذه الطريقة مع تحرير مفتاح السهم لأسفل في لوحة المفاتيح

الطريقة الخامسة: إصدار الماوس ():

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): ستؤدي هذه الطريقة إلى تحرير النقر بزر الماوس الأيمن على الماوس

نموذج التعليمات البرمجية لأتمتة حالات الاستخدام الشائعة باستخدام Robot Class

  • لنأخذ مثالاً على موقع الويب http://spreadsheetpage.com/index.php/file/C35/P10/ حيث بعد النقر فوق عنصر الويب (.//a[@href=contains(text(),'yearly-calendar.xls']) تظهر النافذة المنبثقة لتنزيل نظام التشغيل.
  • للتعامل مع هذا نستخدم فئة Robot (عن طريق إنشاء مثيل لـ Robot Class في التعليمات البرمجية الخاصة بك، على سبيل المثال روبوت روبوت = روبوت جديد ()) . فئة الروبوت موجودة في حزمة AWT من JDK.
مفتاح لوحة المفاتيح خدمة التوصيل
للضغط على مفتاح السهم لأسفل نستخدم (robot.keyPress(KeyEvent.VK_DOWN))
للضغط على مفتاح TAB نستخدم (robot.keyPress(KeyEvent.VK_TAB))
للضغط على مفتاح الإدخال نستخدم (robot.keyPress(KeyEvent.VK_ENTER))

مثال على فئة الروبوت في Selenium

import java.awt.AWTException;	
import java.awt.Robot;	
import java.awt.event.KeyEvent;	
import org.openqa.selenium.By;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	

class Excercise1 {	

      public static void main(String[] args) throws AWTException, InterruptedException {	
           WebDriver driver = new FirefoxDriver();	
           driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
           driver.findElement(By.xpath(".//a[@href=contains(text(),'yearly-calendar.xls')]")).click();	
           Robot robot = new Robot();  // Robot class throws AWT Exception	
           Thread.sleep(2000); // Thread.sleep throws InterruptedException	
           robot.keyPress(KeyEvent.VK_DOWN);  // press arrow down key of keyboard to navigate and select Save radio button	
           
           Thread.sleep(2000);  // sleep has only been used to showcase each event separately	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_ENTER);	
       // press enter key of keyboard to perform above selected action	
     }	 
 }

تحقق من هذا الفيديو لرؤيته في العمل

كيفية تنفيذ كود Robot Class باستخدام TestNG

بما أنك الآن على دراية بالطرق الأساسية لفئة الروبوت، فلنبدأ في فهم بعض الطرق الأكثر تعقيدًا -

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

في مثل هذه الحالات، يمكنك استخدام طريقة mouseMove لفئة Robot.

الخطوة 1) تأخذ طريقة mouseMove إحداثيات x وy كمعلمات مثل robot.mouseMove(630, 420) حيث يشير 630 إلى المحور السيني ويشير 420 إلى المحور الصادي. لذلك، ستحرك هذه الطريقة مؤشر الماوس من الموقع الحالي إلى نقطة تقاطع x وy المذكورة.

الخطوة 2) بعد ذلك، نحن بحاجة إلى الضغط على زر الماوس. يمكننا استخدام الطريقة com.mousePress مثل robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

الخطوة 3) بعد الضغط، يجب تحرير الماوس. يمكننا ان نستخدم robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) لتحرير النقر بزر الماوس الأيسر.

تشغيل الكود باستخدام testNG:

تشغيل الكود باستخدام تستنج يتطلب اعتماد maven على testNG أو مكتبة مرجعية لـ TestNG ملف جرة.

TestNG التبعية المخضرمة:

<dependency>	
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>	
  <version>6.1.1</version>	
</dependency>

بعد إضافة تبعية maven أو ملف jar، تحتاج إلى استيراد تعليق اختباري لبرنامج testNG. بمجرد الانتهاء من كل شيء، ما عليك سوى النقر بزر الماوس الأيمن على كود البرنامج والنقر فوق تشغيل باسم ثم النقر فوق TestNG... وستجد أن الكود سيبدأ تنفيذه باستخدام واجهة برمجة التطبيقات testNG.

ها هو الكود

import java.awt.AWTException;	
import java.awt.Robot;	
import java.awt.event.InputEvent;	
import java.awt.event.KeyEvent;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	
import org.testng.annotations.Test;	

public class Excersise1 {	

    @Test	
    public static void  execution() throws InterruptedException, AWTException {
        WebDriver driver = new FirefoxDriver();	
        driver.manage().window().maximize();	
        driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
        Robot robot = new Robot();	
        robot.mouseMove(630, 420); // move mouse point to specific location	
        robot.delay(1500);        // delay is to make code wait for mentioned milliseconds before executing next step	
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // press left click	
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); // release left click	
        robot.delay(1500);	
        robot.keyPress(KeyEvent.VK_DOWN); // press keyboard arrow key to select Save radio button	
        Thread.sleep(2000);	
        robot.keyPress(KeyEvent.VK_ENTER);	
        // press enter key of keyboard to perform above selected action	
    }	
}	

تحقق من هذا الفيديو لرؤيته في العمل

فوائد فئة الروبوت

  1. يمكن لـ Robot Class محاكاة حدث لوحة المفاتيح والماوس
  2. يمكن أن تساعد فئة الروبوت في تحميل/تنزيل الملفات عند استخدام برنامج تشغيل الويب Selenium
  3. يمكن دمج Robot Class بسهولة مع إطار الأتمتة الحالي (الكلمات الرئيسية أو المستندة إلى البيانات أو المختلط)

مساوئ فئة الروبوت

يحتوي إطار عمل الروبوت على بعض العيوب المذكورة أدناه:

  1. لن يعمل حدث الكلمة الأساسية/الماوس إلا على المثيل الحالي لـ Window. على سبيل المثال، لنفترض أن أحد التعليمات البرمجية يقوم بتنفيذ أي حدث من فئة الروبوت، وأثناء تنفيذ التعليمات البرمجية، انتقل المستخدم إلى شاشة أخرى، ثم سيحدث حدث الكلمة الرئيسية/الماوس على تلك الشاشة.
  2. تعتمد معظم الأساليب مثل mouseMove على دقة الشاشة، لذا قد يكون هناك احتمال ألا تعمل التعليمات البرمجية التي تعمل على أحد الأجهزة على جهاز آخر.

الملخص

يتم استخدام فئة الروبوت في حزمة AWT لإنشاء أحداث لوحة المفاتيح/الماوس للتفاعل مع نوافذ نظام التشغيل والتطبيقات الأصلية.

الغرض الأساسي من الروبوت هو دعم مشروع الاختبارات الآلية للسيلينيوم Java المنصة

تفاصيل أكثر أقرأ المزيد