Lớp hành động trong Selenium
⚡ Tóm tắt thông minh
Lớp hành động trong Selenium Ứng dụng này xử lý các sự kiện bàn phím và chuột nâng cao như di chuột, kéo thả, nhấp chuột phải và tổ hợp phím thông qua API Tương tác Người dùng Nâng cao. Hướng dẫn này giải thích về các Hành động và lớp Hành động, các phương thức chính và cách kết hợp nhiều tương tác thành một chuỗi.

Lớp hành động trong Selenium
Lớp hành động trong Selenium Đây là một tính năng tích hợp sẵn để xử lý các sự kiện bàn phím và chuột. Nó hỗ trợ các thao tác như nhấp chuột nhiều lần với phím Control, kéo và thả, và nhiều thao tác khác. Các thao tác này đượ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 bàn phím và chuột
Việc xử lý các sự kiện đặc biệt của bàn phím và chuột được thực hiện bằng cách sử dụng... API tương tác người dùng nâng cao. Nó chứa Hoạt động và Hoạt động Các lớp cần thiết để thực thi các sự kiện này. Các sự kiện bàn phím và chuột được sử dụng phổ biến nhất do lớp Actions cung cấp được liệt kê bên dưới.
| Phương pháp | Mô tả Chi tiết |
|---|---|
| bấm và giữ() | Nhấp chuột (không nhả) tại vị trí chuột hiện tại. |
| bối cảnhClick() | Thực hiện thao tác nhấp chuột phải (nhấp chuột ngữ cảnh) tại vị trí con trỏ chuột hiện tại. |
| nhấp đúp() | Thực hiện nhấp đúp chuột vào vị trí hiện tại của chuột. |
| dragAndDrop(nguồn, đích) | Nhấn giữ chuột vào phần tử nguồn, di chuyển đến phần tử đích, sau đó thả chuột. Tham số: nguồn (phần tử cần nhấn), đích (phần tử cần thả chuột). |
| dragAndDropBy(nguồn, x-offset, y-offset) | Nhấn giữ chuột vào phần tử nguồn, di chuyển một khoảng cách nhất định, sau đó thả chuột. Tham số: nguồn, xOffset (ngang), yOffset (dọc). |
| keyDown(modifier_key) | Nhấn giữ một phím bổ trợ mà không nhả ra, do đó các tương tác sau này sẽ giả định rằng phím đó vẫn được giữ. Tham số: một phím bổ trợ (Keys.ALT, Keys.SHIFT hoặc Keys.CONTROL). |
| keyUp(modifier_key) | Nhả một phím bổ trợ. Tham số: một phím bổ trợ (Keys.ALT, Keys.SHIFT hoặc Keys.CONTROL). |
| moveByOffset(x-offset, y-offset) | Di chuyển con trỏ chuột từ vị trí hiện tại (hoặc 0,0) một khoảng cách nhất định. Giá trị x âm di chuyển sang trái; giá trị y âm di chuyển lên trên. |
| moveToElement(toElement) | Di chuyển chuột đến giữa phần tử. Tham số: phần tử cần di chuyển đến. |
| phóng thích() | Thả nút chuột trái đang được nhấn giữ tại vị trí hiện tại. |
| sendKeys(onElement, charsequence) | Gửi một chuỗi các tổ hợp phím đến một phần tử. Tham số: onElement (thường là trường văn bản), charsequence (chuỗi tổ hợp phím cần gửi). |
Trong ví dụ sau, chúng tôi sử dụng moveToElement() phương pháp di chuột qua một trong các mục Mercury Các hàng bàn tham quan.
Tế bào được hiển thị ở trên là một phần của Phần tử này có màu #FFC455 (cam) khi không di chuột qua. Sau khi di chuột, màu của ô trở nên trong suốt và trùng với màu nền của bảng xung quanh.
Bước 1) Nhập Hoạt động và Hoạt động các lớp học.
Bước 2) Khởi tạo một đối tượng Hành động mới.
Bước 3) Khởi tạo một Action bằng cách sử dụng đối tượng Actions từ Bước 2.
Ở đây chúng tôi sử dụng moveToElement() Phương pháp di chuột qua liên kết “Trang chủ”. build() Phương thức này luôn được gọi cuối cùng để tất cả các hành động được liệt kê đều được gộp lại thành một bước duy nhất.
Bước 4) Sử dụng perform() Phương thức để thực thi đối tượng Hành động được 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ướ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 = "https://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.findElement(By.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ả hiển thị bên dưới cho thấy 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 hành động
Bạn có thể xây dựng một chuỗi các hành động bằng cách sử dụng các lớp Action và Actions. Hãy nhớ kết thúc chuỗi bằng cách sử dụng phương thức `composer`. build() phương pháp. Hãy xem xét đoạn mã mẫu bên dưới.
public static void main(String[] args) {
String baseUrl = "https://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();
}





