Mouse Click và Keyboard Event trong Selenium Webdriver

Trong hướng dẫn này, chúng ta sẽ học cách xử lý Sự kiện Keyboard và chuột trong Selenium Webdriver

Action Class trong Selenium

Action Class trong Selenium là một tính năng tích hợp được cung cấp bởi selen để xử lý các sự kiện trên Keyboard và chuột. Nó bao gồm các hoạt động khác nhau như nhiều sự kiện nhấp bằng phím điều khiển, kéo và thả các sự kiện và nhiều hơn nữa. Các hoạt động này từ Action Class được thực hiện bằng cách sử dụng API tương tác người dùng nâng cao trong Selenium Webdriver.

Xử lý sự kiện Keyboard & chuột

Xử lý các sự kiện Keyboard và chuột đặc biệt được thực hiện bằng API tương tác người dùng nâng cao . Nó chứa các Action và các Action Class cần thiết khi thực thi các sự kiện này. Sau đây là các sự kiện Keyboard và chuột được sử dụng phổ biến nhất do Action Class cung cấp.

Phương phápMô tả
clickAndHold()Mouse Click (không nhả) tại vị trí chuột hiện tại.
contextClick()Thực hiện một cú Mouse Click theo ngữ cảnh tại vị trí chuột hiện tại. (Action Mouse Click phải của Chuột)
doubleClick()Thực hiện nhấp đúp vào vị trí chuột hiện tại.
dragAndDrop(source, target)Thực hiện nhấp và giữ tại vị trí của source- element, di chuyển đến vị trí của phần tử đích, sau đó thả chuột.
Tham số:
source- element để mô phỏng nút xuống tại.
target- element để di chuyển đến và thả chuột vào.
dragAndDropBy(source, x-offset, y-offset)Thực hiện nhấp và giữ tại vị trí của source- element, di chuyển theo một độ lệch nhất định, sau đó thả chuột.
Tham số :
source- element để mô phỏng button down.
xOffset- độ lệch di chuyển ngang.
yOffset- phần bù di chuyển dọc.
keyDown (modifier_key)Thực hiện nhấn phím bổ trợ. Không nhả phím bổ trợ – các tương tác tiếp theo có thể cho rằng nó được nhấn.
Tham số :
modifier_key – bất kỳ phím bổ trợ nào (Keys.ALT, Keys.SHIFT hoặc Keys.CONTROL)
keyUp(modifier _key)Thực hiện phát hành khóa.
Tham số :
modifier_key – bất kỳ phím bổ trợ nào (Keys.ALT, Keys.SHIFT hoặc Keys.CONTROL)
moveByOffset (x-offset, y-offset)Di chuyển chuột từ vị trí hiện tại của nó (hoặc 0,0) theo độ lệch đã cho.
Các thông số :
x-offset- y-offset. Giá trị âm có nghĩa là di chuyển chuột sang trái.
y-offset- độ lệch dọc. Giá trị âm có nghĩa là di chuyển chuột xuống dưới.
moveToElement (toElement)Di chuyển chuột đến giữa phần tử.
Tham số :
toElement- phần tử cần chuyển đến.
release()Thả nút chuột trái đã ấn xuống tại vị trí chuột hiện tại
sendKeys (onElement, charsequence)Gửi một loạt các tổ hợp phím vào phần tử.
Tham số :
onElement – phần tử sẽ nhận các tổ hợp phím, thường là
chuỗi ký tự trường văn bản – bất kỳ giá trị chuỗi nào đại diện cho chuỗi tổ hợp phím sẽ được gửi

Trong ví dụ sau, chúng ta sẽ sử dụng phương thức moveToElement () để di chuột qua một trong các hàng bảng của Mercury Tours. Xem ví dụ bên dưới.

Ô được hiển thị ở trên là một phần của phần tử <TR>. Nếu không di chuột qua, màu của nó là # FFC455 (cam). Sau khi di chuột, màu của ô trở nên trong suốt. Nó trở thành cùng một màu với nền xanh của toàn bộ bảng màu cam.

Bước 1: Nhập các Hoạt độngAction lớp.

Bước 2: Khởi tạo đối tượng Action mới.

Bước 3: Khởi tạo một Action bằng cách sử dụng đối tượng Action ở bước 2.

Trong trường hợp này, chúng ta sẽ sử dụng phương thức moveToElement () vì chúng ta chỉ cần di chuột qua liên kết “Home”. Phương thức build () luôn là phương thức cuối cùng được sử dụng để tất cả các Action được liệt kê sẽ được biên dịch thành một bước duy nhất.

Bước 4: Sử dụng phương thức performance () khi thực thi đối tượng Action mà chúng ta đã thiết kế ở Bước 3.

Dưới đây là toàn bộ mã WebDriver để kiểm tra màu nền của phần tử <TR> trước và sau khi di chuột qua.

package newproject;

import org.openqa.selenium.*;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.interactions.Action;

import org.openqa.selenium.interactions.Actions;

public class PG7 {

    public static void main(String[] args) {

        String baseUrl = “http://demo.guru99.com/test/newtours/”;

        System.setProperty(“webdriver.gecko.driver”,”C:\\geckodriver.exe”);

                WebDriver driver = new FirefoxDriver();

                driver.get(baseUrl);           

                WebElement link_Home = driver.findElement(By.linkText(“Home”));

                WebElement td_Home = driver

                        .xpath(“//html/body/div”

                        + “/table/tbody/tr/td”

                        + “/table/tbody/tr/td”

                        + “/table/tbody/tr/td”

                        + “/table/tbody/tr”));    

                Actions builder = new Actions(driver);

                Action mouseOverHome = builder

                        .moveToElement(link_Home)

                        .build();

                String bgColor = td_Home.getCssValue(“background-color”);

                System.out.println(“Before hover: ” + bgColor);        

                mouseOverHome.perform();        

                bgColor = td_Home.getCssValue(“background-color”);

                System.out.println(“After hover: ” + bgColor);

                driver.close();

        }

}

Kết quả bên dưới nói rõ rằng màu nền trở nên trong suốt sau khi di chuột qua.

Xây dựng một chuỗi nhiều Action

Bạn có thể xây dựng một loạt các Action bằng cách sử dụng các Action Class và Action . Chỉ cần nhớ đóng chuỗi bằng phương thức build (). Hãy xem xét mã mẫu bên dưới.

public static void main(String[] args) {

String baseUrl = “http://www.facebook.com/”; 

WebDriver driver = new FirefoxDriver();

driver.get(baseUrl);

WebElement txtUsername = driver.findElement(By.id(“email”));

Actions builder = new Actions(driver);

Action seriesOfActions = builder

.moveToElement(txtUsername)

.click()

.keyDown(txtUsername, Keys.SHIFT)

.sendKeys(txtUsername, “hello”)

.keyUp(txtUsername, Keys.SHIFT)

.doubleClick(txtUsername)

.contextClick()

.build();

seriesOfActions.perform() ;

}

Tóm lược

  • Xử lý các sự kiện Keyboard và chuột đặc biệt được thực hiện bằng API AdvancedUserInteraction.
  • Sự kiện từ khóa và chuột thường được sử dụng là doubleClick (), keyUp, dragAndDropBy, contextClick & sendKeys.
Back to top button