首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java.awt.Robot 類控制滑鼠與鍵盤實戰

     編輯:Java 相關知識

java.awt.Robot 類用於控制滑鼠與鍵盤。一旦獲得控制權,你能透過 Java 代碼執行任何滑鼠鍵盤操作,常用於自動化測試。下面代碼示範 Robot 類處理鍵盤事件:運行後打開記事本,你將看到「HI CAOER」。

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class RobotExp {
    public static void main(String[] args) {
        try {
            Robot robot = new Robot();
            robot.delay(5000); // 5 秒延遲以便打開記事本
            robot.keyPress(KeyEvent.VK_H);
            robot.keyPress(KeyEvent.VK_I);
            robot.keyPress(KeyEvent.VK_SPACE);
            robot.keyPress(KeyEvent.VK_C);
            robot.keyPress(KeyEvent.VK_A);
            robot.keyPress(KeyEvent.VK_O);
            robot.keyPress(KeyEvent.VK_E);
            robot.keyPress(KeyEvent.VK_R);
        } catch (AWTException e) { e.printStackTrace(); }
    }
}

網友完善版本,增加按鍵釋放、大寫鎖定、自動啟動記事本、關閉應用等功能:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.IOException;

public class RobotExp {
    public static void pressKey(Robot robot, int keyvalue) {
        robot.keyPress(keyvalue);
        robot.keyRelease(keyvalue);
    }
    public static void pressKeyWithShift(Robot robot, int keyvalue) {
        robot.keyPress(KeyEvent.VK_SHIFT);
        robot.keyPress(keyvalue);
        robot.keyRelease(keyvalue);
        robot.keyRelease(KeyEvent.VK_SHIFT);
    }
    public static void closeApplication(Robot robot) {
        robot.keyPress(KeyEvent.VK_ALT);
        robot.keyPress(KeyEvent.VK_F4);
        robot.keyRelease(KeyEvent.VK_ALT);
        robot.keyRelease(KeyEvent.VK_F4);
        robot.keyPress(KeyEvent.VK_N);
        robot.keyRelease(KeyEvent.VK_N);
    }
    public static void main(String[] args) throws IOException {
        try {
            Robot robot = new Robot();
            Runtime.getRuntime().exec("notepad");
            robot.delay(3000);
            for (int i = 0; i < 100; i++) {
                pressKeyWithShift(robot, KeyEvent.VK_H);
                pressKey(robot, KeyEvent.VK_I);
                pressKey(robot, KeyEvent.VK_SPACE);
                pressKeyWithShift(robot, KeyEvent.VK_I);
                pressKey(robot, KeyEvent.VK_SPACE);
                pressKey(robot, KeyEvent.VK_A);
                pressKey(robot, KeyEvent.VK_M);
                pressKey(robot, KeyEvent.VK_SPACE);
                pressKey(robot, KeyEvent.VK_T);
                pressKey(robot, KeyEvent.VK_H);
                pressKey(robot, KeyEvent.VK_E);
                pressKey(robot, KeyEvent.VK_SPACE);
                pressKey(robot, KeyEvent.VK_J);
                pressKey(robot, KeyEvent.VK_A);
                pressKey(robot, KeyEvent.VK_V);
                pressKey(robot, KeyEvent.VK_A);
                pressKey(robot, KeyEvent.VK_SPACE);
                pressKey(robot, KeyEvent.VK_R);
                pressKey(robot, KeyEvent.VK_O);
                pressKey(robot, KeyEvent.VK_B);
                pressKey(robot, KeyEvent.VK_O);
                pressKey(robot, KeyEvent.VK_T);
                pressKey(robot, KeyEvent.VK_ENTER);
            }
            closeApplication(robot);
        } catch (AWTException e) { e.printStackTrace(); }
    }
}

注意:keyPress 後必須配對 keyRelease,否則按鍵會卡住。實際自動化測試中建議使用更高層級的測試框架(如 Selenium),Robot 類適合簡單桌面自動化場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved