Robot Class trong Selenium Webdriver

Robot class

Robot class trong Selenium được sử dụng để cho phép tự động kiểm tra việc triển khai nền tảng Java. Nó tạo ra các sự kiện đầu vào trong các hệ thống gốc để tự động hóa kiểm tra, các bản trình diễn tự chạy và các ứng dụng khác mà người dùng cần kiểm soát chuột và bàn phím. Robot class rất dễ thực hiện và nó có thể được tích hợp dễ dàng với một khuôn khổ tự động.

Tại sao lại là Robot class?

Robot class được sử dụng trong Selenium vì trong một số thử nghiệm tự động hóa Selenium nhất định, người dùng cần điều khiển bàn phím hoặc chuột để tương tác với các cửa sổ hệ điều hành như cửa sổ bật lên tải xuống, cửa sổ bật lên in, v.v. và các ứng dụng gốc như notepad, máy tính, v.v. Selenium Webdriver không thể xử lý các cửa sổ bật lên / ứng dụng này, vì vậy trong phiên bản Java 1.3, Robot class đã được giới thiệu có thể xử lý cửa sổ bật lên / ứng dụng hệ điều hành.

Lợi ích của Robot class

  1. Robot class có thể mô phỏng sự kiện Bàn phím và Chuột
  2. Robot Class có thể giúp tải lên / tải xuống tệp khi sử dụng trình điều khiển web selen
  3. Robot class có thể dễ dàng được tích hợp với framework tự động hóa hiện tại (từ khóa, hướng dữ liệu hoặc kết hợp)

Tài liệu Lớp học Robot là gì?

Các tài liệu Robot Lớp trong Selenium giúp người dùng hiểu được những nét cơ bản, cú pháp và sử dụng tất cả các phương pháp và chức năng có sẵn trong Robot class trong gói Java AWT. Người dùng có thể xem tài liệu trên trang web Chính thức của Oracle . Người dùng cũng có thể tự tạo tài liệu trên máy cục bộ của mình.

Để tạo tài liệu trên máy cục bộ, hãy làm theo các bước bên dưới-

Bước 1) Bạn sẽ tìm thấy tệp src.zip trong thư mục JDK. Sao chép src.zip và giải nén tương tự trong một số thư mục hoặc thư mục khác (giả sử D: hoặc E:)

Bước 2) Giải nén thư mục src và điều hướng đến (đường dẫn đến thư mục src) / src / java / awt

Bước 3) Sao chép vị trí hiện tại của thư mục awt và mở dấu nhắc lệnh.

Bước 4) Trong cmd, thay đổi vị trí thư mục hiện tại của bạn thành thư mục awt và nhập ‘javadoc * .java’ như hình dưới đây

Chờ một lúc để hệ thống xử lý, sau khi hoàn tất, bạn sẽ thấy một vài tệp HTML trong thư mục awt.

Bước 5) Mở index.html

Bước 6) Đây là bạn có đầy đủ tài liệu về gói awt, từ thanh điều hướng bên trái, nhấp vào siêu liên kết ‘Robot’ (Xem 1 được đánh dấu trong hình ảnh bên dưới).

Tại đây bạn cũng có thể xem tất cả các phương thức và giao diện của Robot class (Xem 2 được đánh dấu trong hình trên).

Hiểu các phương pháp nội bộ và cách sử dụng Robot class

Phương thức Robot class có thể được sử dụng để tương tác với các sự kiện bàn phím / chuột trong khi thực hiện tự động hóa trình duyệt. Ngoài ra, có thể sử dụng AutoIT , nhưng hạn chế của nó là nó tạo ra một tệp thực thi (exe) sẽ chỉ hoạt động trên windows, vì vậy nó không phải là một lựa chọn tốt để sử dụng.

Một số phương pháp phổ biến và được sử dụng phổ biến của Robot class trong quá trình tự động hóa web:

  • keyPress (): Ví dụ: robot.keyPress (KeyEvent.VK_DOWN): Phương pháp này với việc nhấn phím mũi tên xuống của Bàn phím
  • mousePress (): Ví dụ : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK): Phương pháp này sẽ nhấn chuột phải của bạn.
  • mouseMove (): Ví dụ : robot.mouseMove (point.getX (), point.getY ()): Thao tác này sẽ di chuyển con trỏ chuột đến tọa độ X và Y được chỉ định.
  • keyRelease (): Ví dụ: robot.keyRelease (KeyEvent.VK_DOWN): Phương thức này với việc thả phím mũi tên xuống của Bàn phím
  • mouseRelease (): Ví dụ: robot.mouseRelease (InputEvent.BUTTON3_DOWN_MASK): Phương thức này sẽ giải phóng nhấp chuột phải của bạn

Mã mẫu để tự động hóa các trường hợp sử dụng phổ biến bằng cách sử dụng Robot class

  • Hãy lấy ví dụ về trang web http://spreadsheetpage.com/index.php/file/C35/P10/ trong đó sau khi bạn nhấp vào một phần tử web ( .//a[@href=contains(text(),’yearly- Calendar.xls ‘] ) một cửa sổ bật lên tải xuống hệ điều hành sẽ xuất hiện.
  • Để xử lý điều này, chúng tôi sử dụng Robot class (bằng cách tạo một phiên bản của Robot class trong mã của bạn, nói Robot robot = new Robot () ). Robot class chúng tôi trình bày trong gói AWT của JDK.
  • Để nhấn phím mũi tên xuống của Bàn phím, chúng tôi sử dụng ( robot.keyPress (KeyEvent.VK_DOWN))
  • Để nhấn phím TAB của bàn phím (chúng tôi sử dụng robot.keyPress (KeyEvent.VK_TAB))
  • Để nhấn phím Enter, chúng tôi sử dụng ( robot.keyPress (KeyEvent.VK_ENTER)).

Đây là một mã mẫu

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

     }  

 }

Cách thực thi mã Robot class bằng TestNG

Vì bây giờ bạn đã biết về các phương thức cơ bản của Robot class, vì vậy chúng ta hãy hiểu một số phương thức phức tạp hơn –

Giả sử bạn không muốn sử dụng phương pháp nhấp chuột để nhấp vào phần tử web.

Trong những trường hợp như vậy, bạn có thể sử dụng phương thức mouseMove của Robot class.

Bước 1) Phương thức mouseMove lấy tọa độ x và y làm tham số như robot.mouseMove (630, 420) trong đó 630 chỉ trục x và 420 chỉ trục y. Vì vậy, phương pháp này sẽ di chuyển con trỏ chuột của bạn từ vị trí hiện tại đến giao điểm x và y đã đề cập.

Bước 2) Tiếp theo, chúng ta cần nhấn nút chuột. Chúng ta có thể sử dụng phương thức mousePress như robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) .

Bước 3) Sau khi nhấn, chuột cần được thả. Chúng ta có thể sử dụng robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK ) để giải phóng nhấp chuột trái của chuột.

Chạy mã bằng testNG:

Chạy mã bằng Testng yêu cầu sự phụ thuộc maven của testNG hoặc thư viện tham chiếu của tệp jar TestNG.

TestNG maven phụ thuộc:

<dependency>

  <groupId>org.testng</groupId>

  <artifactId>testng</artifactId>

  <version>6.1.1</version>

</dependency>

Sau khi thêm tệp phụ thuộc maven hoặc tệp jar. Bạn cần nhập Chú thích kiểm tra của testNG. Khi tất cả đã hoàn tất, chỉ cần Nhấp chuột phải vào mã chương trình và nhấp vào Chạy Như sau đó nhấp vào TestNG… và bạn sẽ thấy mã đó sẽ bắt đầu thực thi bằng cách sử dụng API testNG.

Đây là mã

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

    }

}

Kiểm tra video này để xem nó hoạt động

Nhược điểm của Robot class

Robot framwork có một số nhược điểm được đề cập dưới đây:

  1. Sự kiện từ khóa / chuột sẽ chỉ hoạt động trên phiên bản hiện tại của Window. Ví dụ: giả sử một mã đang thực hiện bất kỳ sự kiện lớp rô bốt nào và trong quá trình thực thi mã, người dùng đã chuyển sang một số màn hình khác thì sự kiện từ khóa / chuột sẽ xảy ra trên màn hình đó.
  2. Hầu hết các phương pháp như mouseMove phụ thuộc vào độ phân giải màn hình, vì vậy có thể có khả năng mã hoạt động trên một máy có thể không hoạt động trên máy khác.

Bản tóm tắt

Robot class trong gói AWT được sử dụng để tạo các sự kiện bàn phím / chuột để tương tác với các cửa sổ hệ điều hành và ứng dụng gốc.

Mục đích chính của Robot là hỗ trợ xây dựng dự án kiểm tra tự động selen trên nền tảng Java

Check Also
Close
Back to top button