คลาสหุ่นยนต์ใน 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 } }
ตรวจสอบวิดีโอนี้เพื่อดูการทำงาน
ประโยชน์ของคลาสหุ่นยนต์
- Robot Class สามารถจำลองเหตุการณ์คีย์บอร์ดและเมาส์ได้
- Robot Class ช่วยในการอัพโหลด/ดาวน์โหลดไฟล์เมื่อใช้ไดรเวอร์เว็บเซเลเนียม
- Robot Class สามารถรวมเข้ากับกรอบการทำงานอัตโนมัติในปัจจุบันได้อย่างง่ายดาย (คำสำคัญ ขับเคลื่อนด้วยข้อมูล หรือไฮบริด)
ข้อเสียของคลาสหุ่นยนต์
กรอบการทำงานของหุ่นยนต์มีข้อเสียบางประการตามที่ระบุไว้ด้านล่าง:
- เหตุการณ์คำหลัก/เมาส์จะทำงานบนอินสแตนซ์ปัจจุบันของ Window เท่านั้น เช่น สมมติว่าโค้ดกำลังดำเนินการเหตุการณ์คลาสโรบ็อต และในระหว่างที่ผู้ใช้ดำเนินการโค้ดได้ย้ายไปที่หน้าจออื่น เหตุการณ์คำหลัก/เมาส์จะเกิดขึ้นบนหน้าจอนั้น
- วิธีการส่วนใหญ่เช่น mouseMove ขึ้นอยู่กับความละเอียดของหน้าจอ ดังนั้นอาจมีโอกาสที่โค้ดที่ทำงานบนเครื่องหนึ่งอาจไม่ทำงานกับอีกเครื่องหนึ่ง
สรุป
คลาสหุ่นยนต์ในแพ็คเกจ AWT ใช้เพื่อสร้างเหตุการณ์คีย์บอร์ด/เมาส์เพื่อโต้ตอบกับหน้าต่างระบบปฏิบัติการและแอปดั้งเดิม
วัตถุประสงค์หลักของ Robot คือการสนับสนุนการสร้างโครงการทดสอบอัตโนมัติของ Selenium Java เวที