DevOps AI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
No Result
View All Result
Home AI & Automation

Cách xử lý các sự kiện bàn phím và chuột trong Selenium sử dụng class Actions

Huyen Tran by Huyen Tran
1 Tháng 5, 2025
in AI & Automation
0
Cách xử lý các sự kiện bàn phím và chuột trong Selenium sử dụng class Actions
Share on FacebookShare on Twitter

Trong quá trình sử dụng ứng dụng web, người dùng sẽ sử dụng bàn phím cũng như chuột để thao tác như nhấp đúp chuột, chọn nhiều giá trị dùng phím Ctrl+ nhấp chuột, kéo và thả… Trong bài viết này, chúng ta sẽ cùng tìm hiểu về cách xử lý các sự kiện của bàn phím và chuột sử dụng class Actions trong Selenium nhé.

Class Actions là gì?

Class Actions là một lớp được cung cấp bởi Selenium. Nó được dùng để xử lý các sự kiện của bàn phím (Nhấn phím ENTER, TAB…) và chuột (nhấp đúp chuột, chọn giá trị từ dropdown list, drag và drop)… , các thao tác này từ class Actions được thực hiện bằng cách sử dụng API tương tác người dùng nâng cao (advanced user interaction API) trong Selenium Webdriver.

Để sử dụng class Actions, các bạn thực hiện như sau:

Import thư viện

Related Post

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

16 Tháng 6, 2025
Selenium Tutorial – Java

Selenium Tutorial – Java

1 Tháng 5, 2025

Detox – gray box end-to-end testing automation framework cho ứng dụng React Native

1 Tháng 5, 2025

Cách dùng JavaScript Executor trong Selenium

1 Tháng 5, 2025
import org.openqa.selenium.interactions.Actions;

Khởi tạo đối tượng thuộc class Actions

Actions action = new Actions(driver);

Thực hiện thao tác phím hay chuột theo cấu trúc sau

action.Keyboard_mouse_method().build().perform();
  • Keyboard_mouse_method() – là phương thức của bàn phím hoặc chuột được cung cấp bởi class Actions
  • Chúng ta sử dụng .build().perform() để biên dịch và thực thi lớp action

Bây giờ, chúng ta hãy tìm hiểu về các phương thức khác nhau trong lớp này được sử dụng để thực hiện một số hành động nhé

Các phương thức thuộc class Actions

Về cơ bản, có hai phương pháp giúp làm việc với các hành động trong Selenium, đó là:

  1. Keyboard actions
  2. Mouse actions
  3. Pen actions
  4. Thanh cuộn (Scroll actions)

Keyboard Actions

#Phương thứcDiễn giảiVí dụ
1sendKeys(CharSequence keysTosend)Gửi một loạt các phím được nhấn đến phần tử web
– Nhấn các phím shift/ctrl/tab … trên bàn phím
Actions action = new Actions(driver);

action.sendKeys(Keys.ENTER).perform();
action.sendKeys(Keys.ESCAPE).perform(); action.sendKeys(Keys.TAB).perform();

action.sendKeys(“a”);
2KeyDown()Thực hiện nhấn phím bổ trợ. Không giải phóng phím bổ trợ
Các tương tác tiếp theo có thể cho rằng nó được nhấn liên tục.
action.keyDown(Keys.CONTROL);
3keyUp()Thực hiện giải phóng phím bổ trợaction.keyUp(Keys.CONTROL);

Chúng ta có thể sử dụng Keys enum cho các phím không phải văn bản và chuyển chúng sang phương thức sendKeys như danh sách dưới đây. Các bạn cũng có thể xem ở đây

Các phímGiá trị enum của phím
Arrow Key – DownKeys.ARROW_DOWN
Arrow Key – UpKeys.ARROW_UP
Arrow Key – LeftKeys.ARROW_LEFT
Arrow Key – RightKeys.ARROW_RIGHT
BackspaceKeys.BACK_SPACE
Ctrl KeyKeys.CONTROL
Alt keyKeys.ALT
DELETEKeys.DELETE
Enter KeyKeys.ENTER
Shift KeyKeys.SHIFT
SpacebarKeys.SPACE
Tab KeyKeys.TAB
Equals KeyKeys.EQUALS
Esc KeyKeys.ESCAPE
Home KeyKeys.HOME
Insert KeyKeys.INSERT
PgUp KeyKeys.PAGE_UP
PgDn KeyKeys.PAGE_DOWN
Function Key F1 – F12Keys.Fx (trong đó Fx – giá trị từ F1 – F12)
Ví dụ: Keys.F1

Mouse actions

#Phương thứcDiễn giảiVí dụ
1click()Thực hiện click chuột vào vị trí hiện tạiaction.click();
2doubleClick()Thực hiện double click vào phần tửaction.doubleClick();
3clickAndHold()Thực hiện click và giữ chuộtaction.clickAndHold();
4dragAndDrop(source, target)Kéo phần tử từ điểm này và thả xuống điểm khácaction.dragAnđrop(elementSource, elementTarget);
5dragAndDropBy(source, xOffset, yOffset)Nhấp và giữ tại vị trí của phần tử nguồn, di chuyển theo một độ lệch nhất địnhaction.dragAndDropBy(elementSource, xOffset, yOffset)
6moveByOffset(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 đã choaction.moveByOffset(x-offset, y-offset)
7moveToElement(toElement)Di chuyển con trỏ chuột đến trung tâm của phần tử
(mouse hover)
action.moveToElement(toElement);
8contextClick():Thực hiện click phải chuộtaction.contextClick();
9release()Nhả nút chuột trái đang nhấn tại vị trí chuột hiện tạiaction.release();

Scroll actions

  • Chức năng này chỉ hỗ trợ cho Chromium và Selenium từ phiên bản v4.2
  • Có 5 kịch bản để cuộn trên một trang như sau:
#Phương thứcDiễn giảiVí dụ
1scrollToElement(WebElement e)Đây là kịch bản phổ biến nhất. Không giống như các phương thức truyền thống như click() và sendKeys(), class Actions sẽ không tự động thực hiện cuộn đến phần tử đích và để chế độ xem, vì vậy phương pháp này sẽ cần được sử dụng nếu các phần tử chưa có trong chế độ xem.
Bất kể phần tử web đang ở trên hay dưới màn hình hiện tại, thì chế độ xem sẽ được cuộn đến phần dưới cùng của phần tử nằm ở cuối màn hình.
action.scrollToElement(element);
2scrollByAmoit(int delta x, int delta y)Đây là kịch bản phổ biến thứ hai để cuộn. Nhập giá trị delta x và delta y để biết mức độ cuộn theo hướng phải và đi xuống. Các giá trị âm tương ứng đại diện cho bên trái và đi lên.action.scrollByAmount(300,800);
3scrollFromOrgin(WheelInput.ScrollOrigin scrollOrigin, int deltaX, int deltaY)Kịch bản này thực sự là sự kết hợp của hai phương pháp scrollToElement() và scrollByAmount().
Để thực hiện điều này, hãy sử dụng phương thức “Scroll From”, phương thức này có 3 đối số.
– Cái đầu tiên đại diện cho điểm gốc mà chúng tôi chỉ định là phần tử
– Hai cái còn lại là các giá trị delta x và delta y.
Nếu phần tử nằm ngoài khung nhìn, nó sẽ được cuộn xuống cuối màn hình, sau đó trang sẽ được cuộn theo các giá trị delta x và delta y được cung cấp.
WheelInput.ScrollOrigin scrollOrigin = WheelInput.ScrollOrigin.fromElement(WebElement);

action.scrollFromOrigin(scrollOrigin,0,300);

Ví dụ sử dụng class Actions

Chúng ta đã hiểu cách khai báo cũng như các phương thức của class Actions, giờ chúng ta sẽ cùng thực hiện ví dụ sau nhé

Scenario

Truy cập vào trang https://devopsify.co/ thực hiện các hành động sau sử dụng phím và chuột thông qua class Actions

  1. Nhập thông tin tìm kiếm “selenium locator” vào ô Search
  2. Sao chép (Copy) lại nội dung tìm kiếm “selenium locator”
  3. Nhập lại nội dung tìm kiếm “javascript Executor”
  4. Nhập lại nội dung tìm kiếm bằng cách dán (paste) nôi dung “selenium locator” đã sao chép từ step 2.
  5. Nhấn phím ENTER để tìm kiếm
  6. Mouse hover chuột lên menu “Operation” và giữ 10 giây để xem nội dung danh sách bài viết Operation hiển thị
  7. Mouse hover chuột lên menu “Test” để xem nội dung hiển thị

Các bước thực hiện

_ Các bước truy cập vào trang web https://devopsify.co/ được thực hiện như các bài khác mình đã nói

Để thực hiện các hành động như yêu cầu, chúng ta sử dụng class Actions

  • Để nhập thông tin chúng ta có thể sử dụng phương thức sendKeys(“enter text”)
  • Để sao chép nội dung, đầu tiên chúng ta sẽ quét hết nội dung trong ô search (CTRL+A)
  • Để dán chúng ta sử dụng CTRL+C
  • Sau khi nhập nội dung tìm kiếm chúng ta sử dụng phím ENTER

Mouse hover chuột lên menu “Operation” và giữ 10 giây chúng ta dùng phương thức moveToElement() và pause()

Code

package SeleniumWebDriverTutorial;

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

import java.security.Key;
import java.time.Duration;

public class actionsAndActionExample {
    public static void main(String[] args) throws InterruptedException {
        WebDriverManager.chromedriver().setup();
        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();

        //Navigate to https://devopsify.co/
        driver.get("https://devopsify.co/");
        Actions action = new Actions(driver);

        WebElement searchTxt = driver.findElement(By.className("jeg_search_input"));


        action.moveToElement(searchTxt)
                .click()
                .sendKeys("selenium locator")
                .perform();

        action.keyDown(Keys.CONTROL)
                .sendKeys("A") //Select all (CTRL+A)
                .sendKeys("C") // CTRL+C
                .keyUp(Keys.CONTROL)
                .perform();

        action.sendKeys("javascript Executor").perform();
        Thread.sleep(500);

        action.moveToElement(searchTxt)
                .keyDown(Keys.CONTROL)
                .sendKeys("a")
                .keyUp(Keys.CONTROL)
                .keyDown(Keys.DELETE)
                .keyUp(Keys.DELETE)
                .keyDown(Keys.CONTROL)
                .sendKeys("V")
                .keyUp(Keys.CONTROL)
                .keyDown(Keys.ENTER)
                .perform();

        WebElement testNav = driver.findElement(By.xpath("//div[@class='jeg_mainmenu_wrap']/ul/li[3]"));
        WebElement operationNav = driver.findElement(By.xpath("//div[@class='jeg_mainmenu_wrap']/ul/li[5]"));
        action.moveToElement(operationNav)
                .pause(Duration.ofSeconds(10))
                .moveToElement(testNav)
                .perform();


    }
}

Cheers!

Tags: actions Classautomation testHandle keyboard actionhandle mouse action
Huyen Tran

Huyen Tran

Related Posts

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent
AI & Automation

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

by devopsify
16 Tháng 6, 2025
Selenium Tutorial – Java
AI & Automation

Selenium Tutorial – Java

by Huyen Tran
1 Tháng 5, 2025
Detox – gray box end-to-end testing automation framework cho ứng dụng React Native
AI & Automation

Detox – gray box end-to-end testing automation framework cho ứng dụng React Native

by Huyen Tran
1 Tháng 5, 2025
Next Post

Demo dựng CMS Sitecore trên môi trường on-premise

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Recommended

Các website demo hay được sử dụng cho thực hành Automation Test

Các website demo hay được sử dụng cho thực hành Automation Test

11 Tháng 6, 2025
Hướng dẫn cài đặt Kubernetes trên Ubuntu 22.04

Hướng dẫn cài đặt Kubernetes trên Ubuntu 22.04

1 Tháng 5, 2025
Cài đặt Maven trên Windows

Cài đặt Maven trên Windows

11 Tháng 6, 2025
Cài đặt Grafana – Loki – Promtail monitoring log Container

Cài đặt Grafana – Loki – Promtail monitoring log Container

1 Tháng 5, 2025
Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

16 Tháng 6, 2025
MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật

MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật

16 Tháng 6, 2025
DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

13 Tháng 6, 2025
GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

11 Tháng 6, 2025
DevOpsify

Cộng đồng DevOps Việt Nam chia sẽ kiến thức giúp tăng tốc quá trình phát triển ứng dụng và tự động hóa trong lĩnh vực Cloud DevOps & AI.

Bài viết mới

  • Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent
  • MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật
  • DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

Categories

  • AI & Automation
  • Bảo mật
  • Chưa phân loại
  • DevOps & Cloud
  • Tin tức
No Result
View All Result
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud

© 2025 DevOpsify