คลาสหุ่นยนต์ใน Selenium ไดรเวอร์เว็บ

Robot Class คืออะไร 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) เปิดดัชนี.html

เอกสารประกอบคลาสหุ่นยนต์

ขั้นตอน 6) นี่คือเอกสารฉบับเต็มของแพ็คเกจ awt จากแถบนำทางด้านซ้ายคลิกที่ไฮเปอร์ลิงก์ 'Robot' (ดู 1 เครื่องหมายในภาพด้านล่าง)

เอกสารประกอบคลาสหุ่นยนต์

ที่นี่ คุณยังสามารถดูวิธีการและอินเทอร์เฟซทั้งหมดของ Robot Class ได้ที่นี่ (ดู 2 เครื่องหมายในภาพด้านบน)

วิธีการเรียนหุ่นยนต์ใน Selenium และการใช้งาน

วิธี Robot Class สามารถใช้เพื่อโต้ตอบกับเหตุการณ์แป้นพิมพ์/เมาส์ในขณะที่ทำงานอัตโนมัติของเบราว์เซอร์ อีกทางหนึ่ง ออโต้ไอที สามารถใช้งานได้ แต่ข้อเสียคือจะสร้างไฟล์ปฏิบัติการ (exe) ที่จะใช้งานได้เฉพาะบน Windows เท่านั้น ดังนั้นจึงไม่ใช่ตัวเลือกที่ดีนักที่จะใช้งาน

วิธีการที่ใช้กันทั่วไปและเป็นที่นิยมของ Robot Class ระหว่างระบบอัตโนมัติของเว็บ:

วิธีที่ 1: กดปุ่ม ():

robot.keyPress(KeyEvent.VK_DOWN): วิธีนี้โดยกดปุ่มลูกศรลงของคีย์บอร์ด

วิธีที่ 2: mousePress ():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): วิธีนี้จะกดคลิกขวาของเมาส์

วิธีที่ 3: mouseMove ():

robot.mouseMove(point.getX(), point.getY()): สิ่งนี้จะย้ายตัวชี้เมาส์ไปยังพิกัด X และ Y ที่ระบุ

วิธีที่ 4: keyRelease ():

robot.keyRelease(KeyEvent.VK_DOWN): วิธีการนี้พร้อมปล่อยปุ่มลูกศรลงของคีย์บอร์ด

วิธีที่ 5: mouseRelease ():

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))
เพื่อกดปุ่ม Enter เราใช้ (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 หมายถึงแกน x และ 420 หมายถึงแกน y ดังนั้น วิธีนี้จะย้ายตัวชี้เมาส์ของคุณจากตำแหน่งปัจจุบันไปยังจุดตัดกัน x และ y ที่กล่าวถึง

ขั้นตอน 2) ต่อไปเราต้องกดปุ่มเมาส์ เราสามารถใช้วิธีนี้ได้ เมาส์กด กดไลก์ robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) .

ขั้นตอน 3) หลังจากกดแล้ว จะต้องปล่อยเมาส์ เราสามารถใช้ robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK) เพื่อปล่อยการคลิกซ้ายของเมาส์

การรันโค้ดโดยใช้ testNG:

การรันโค้ดโดยใช้ ทดสอบ ต้องใช้การอ้างอิง Maven ของ testNG หรือไลบรารีที่อ้างอิง TestNG ไฟล์ jar.

TestNG การพึ่งพามาเวน:

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

หลังจากเพิ่มไฟล์ Maven dependency หรือ jar แล้ว คุณต้องนำเข้าคำอธิบายประกอบการทดสอบของ testNG เมื่อทำเสร็จเรียบร้อยแล้ว เพียงคลิกขวาที่โค้ดโปรแกรมแล้วคลิก Run As จากนั้นคลิก TestNG…และคุณจะพบว่าโค้ดจะเริ่มดำเนินการโดยใช้ API ของ 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. Robot Class ช่วยในการอัพโหลด/ดาวน์โหลดไฟล์เมื่อใช้ไดรเวอร์เว็บเซเลเนียม
  3. Robot Class สามารถรวมเข้ากับกรอบการทำงานอัตโนมัติในปัจจุบันได้อย่างง่ายดาย (คำสำคัญ ขับเคลื่อนด้วยข้อมูล หรือไฮบริด)

ข้อเสียของคลาสหุ่นยนต์

กรอบการทำงานของหุ่นยนต์มีข้อเสียบางประการตามที่ระบุไว้ด้านล่าง:

  1. เหตุการณ์คำหลัก/เมาส์จะทำงานบนอินสแตนซ์ปัจจุบันของ Window เท่านั้น เช่น สมมติว่าโค้ดกำลังดำเนินการเหตุการณ์คลาสโรบ็อต และในระหว่างที่ผู้ใช้ดำเนินการโค้ดได้ย้ายไปที่หน้าจออื่น เหตุการณ์คำหลัก/เมาส์จะเกิดขึ้นบนหน้าจอนั้น
  2. วิธีการส่วนใหญ่เช่น mouseMove ขึ้นอยู่กับความละเอียดของหน้าจอ ดังนั้นอาจมีโอกาสที่โค้ดที่ทำงานบนเครื่องหนึ่งอาจไม่ทำงานกับอีกเครื่องหนึ่ง

สรุป

คลาสหุ่นยนต์ในแพ็คเกจ AWT ใช้เพื่อสร้างเหตุการณ์คีย์บอร์ด/เมาส์เพื่อโต้ตอบกับหน้าต่างระบบปฏิบัติการและแอปดั้งเดิม

วัตถุประสงค์หลักของ Robot คือการสนับสนุนการสร้างโครงการทดสอบอัตโนมัติของ Selenium Java เวที