目录

按下单个按键

按下组合键

模拟鼠标单击

移动鼠标到指定位置

Alt + 空格 + X 最大化窗口

调用系统剪切板

KeyEvent  常用按键


1、java.awt 包中提供了许多自动化测试的 API,主要用于模拟用户按下键盘上的按键,或者模拟用户敲击鼠标等

import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

按下单个按键

/**
 * 模拟按下键盘单个按键,比如文档下一页:PgDn,上一页是PgUp等
 *
 * @param keycode:按键的值,如:KeyEvent.VK_PAGE_UP
 */
public static final void pressSingleKeyByNumber(int keycode) {
    try {
        /** 创建自动化测试对象  */
        Robot robot = new Robot();
        /**按下按键*/
        robot.keyPress(keycode);
        /**松开按键*/
        robot.keyRelease(keycode);
        /**可以稍作延时处理*/
        robot.delay(500);
    } catch (AWTException e) {
        e.printStackTrace();
    }
}

src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee 

按下组合键

   /**
     * 按下组合键,如 ctrl + c、ctrl + v、alt + tab 等等
     *
     * @param keycode:组合健数组,如 {KeyEvent.VK_CONTROL,KeyEvent.VK_V}
     */
    public static void pressMultipleKeyByNumber(int... keycode) {
        try {
            Robot robot = new Robot();

            //按顺序按下健
            for (int i = 0; i < keycode.length; i++) {
                robot.keyPress(keycode[i]);
                robot.delay(50);
            }

            //按反序松开健
            for (int i = keycode.length - 1; i >= 0; i--) {
                robot.keyRelease(keycode[i]);
                robot.delay(50);
            }
        } catch (AWTException e) {
            e.printStackTrace();
        }
    }

src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee 

模拟鼠标单击

InputEvent.BUTTON1_DOWN_MASK : 表示鼠标左键
InputEvent.BUTTON3_DOWN_MASK : 表示鼠标右键

/**
 * 模拟用户单击屏幕指定区域,默认单击屏幕最中央
 * 如果是右键,请使用:InputEvent.BUTTON3_DOWN_MASK
 * @param x:x坐标
 * @param y:y坐标
 */
public static final void clickScreenByXY(Integer x, Integer y) {
    try {
        /**创建工具包对象*/
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        /**创建自动化对象*/
        Robot robot = new Robot();
        /**利用工具包对象获取屏幕分辨率*/
        if (x == null) {
            x = toolkit.getScreenSize().width / 2;
        }
        if (y == null) {
            y = toolkit.getScreenSize().height / 2;
        }
        /**
         * 移动鼠标到指定位置
         * 然后按下鼠标左键,再松开,模拟单击操作
         */
        robot.mouseMove(x, y);
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
        robot.delay(100);
    } catch (AWTException e) {
        e.printStackTrace();
    }
}

移动鼠标到指定位置

/**
 * 自动将鼠标移动到指定的位置
 * 如果参数x与y为null,则默认将鼠标放在屏幕右侧中间隐藏
 *
 * @param x:x坐标 ,左上角 为0----设定值超过屏幕分辨率也没关系
 * @param y:y坐标 ,左上角 为0----设定值超过屏幕分辨率也没关系
 */
public static final void mouseMoveToXY(Integer x, Integer y) {
    try {
        /**创建工具包对象*/
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        /**创建自动化对象*/
        Robot robot = new Robot();
        /**利用工具包对象获取屏幕分辨率*/
        if (x == null) {
            x = toolkit.getScreenSize().width;
        }
        if (y == null) {
            y = toolkit.getScreenSize().height / 2;
        }
        /**
         * 移动鼠标到指定位置
         *  robot.delay(100);延时100毫秒
         */
        robot.mouseMove(x, y);
        robot.delay(100);
    } catch (AWTException e) {
        e.printStackTrace();
    }
}

src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee 

Alt + 空格 + X 最大化窗口

1、通常标准的窗口都提供了 窗口快捷键,如:Alt + 空格 +X——最大化窗口、Alt+空格+N(最小化窗口)、 Alt + F4 (关闭窗口) 等

2、下面程序以按下 Alt+空格+X 最大化窗口为例

/**
     * 自动化-最大化窗口,模拟按 Alt+ 空格 + X
     * 切记当同时按有顺序的组合键时,应该在间隔处添加细微的延时,否则容易引起失败(因为按键速度太快,导致混乱)
     */
    public static void automaticFullScreen() {
        try {
            /**clickScreenByXY(null, null);*/
            LogWmxUtils.writeLine("Automatic full screen start.....");
            Robot robot = new Robot();
            robot.keyPress(KeyEvent.VK_ALT);
            robot.delay(200);
            robot.keyPress(KeyEvent.VK_SPACE);
            robot.delay(200);
            robot.keyPress(KeyEvent.VK_X);
            robot.delay(200);
            robot.keyRelease(KeyEvent.VK_ALT);
            robot.delay(200);
            robot.keyRelease(KeyEvent.VK_SPACE);
            robot.delay(200);
            robot.keyRelease(KeyEvent.VK_X);
            robot.delay(200);
            LogWmxUtils.writeLine("Automatic full screen finish.....");
        } catch (AWTException e) {
            e.printStackTrace();
        }
    }

src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee 

调用系统剪切板

    /**
     * 调用系统剪切板粘贴内容
     *
     * @param :需要被放入到系统剪切板粘贴的内容
     * @throws Exception
     */
    public static void pasteContent(String content) throws Exception {
        //创建字符串选择器,并将需要放入剪切板的内容传给它
        StringSelection stringSelection = new StringSelection(content);

        //创建系统剪贴板,并设置内容,相当于把内容放入系统的剪切板中,用户也可以手动 ctrl + v 找他
        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        clipboard.setContents(stringSelection, null);

        for (int i = 3; i > 0; i--) {
            System.out.println(i + " 秒后自动粘贴内容.");
            TimeUnit.SECONDS.sleep(1);
        }

        //最后按 Ctrl + v 快捷键,将系统剪切板中得内容粘贴出来.
        pressMultipleKeyByNumber(KeyEvent.VK_CONTROL, KeyEvent.VK_V);
    }

src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee 

KeyEvent  常用按键

java.awt.event.KeyEvent 常用按键
编号按键事件描述对应数值
1KeyEvent.VK_PAGE_UPPgUp (下一页)33
2KeyEvent.VK_PAGE_DOWNPgDn(下一页)34
3KeyEvent.VK_HOMEHome 键36
4KeyEvent.VK_ENDEnd 键35
5KeyEvent.VK_CONTROLCtrl 键17
6KeyEvent.VK_ALTAlt 键18
7KeyEvent.VK_SPACE空格 键32
8KeyEvent.VK_A字母 A,VK_A 到 VK_Z 与 ASCII 的 ‘A’ 到 ‘Z’ (0x41 - 0x5A)  对应65-90
9KeyEvent.VK_0数字 0,VK_0 到 VK_9 与 ASCII 的 ‘0’ 到 ‘9’ (0x30 - 0x39) 对应48-57
10KeyEvent.VK_F1F1 键,VK_F1 到 VK_F12 对应键盘上的 F1 到 F12 键112-123
11KeyEvent.VK_BACK_SPACEBackspace 键8
12KeyEvent.VK_DOWN 非数字键盘向下箭头键40
13KeyEvent.VK_LEFT非数字键盘向左箭头键37
14KeyEvent.VK_UP非数字键向上箭头键38
15KeyEvent.VK_RIGHT非数字键向右箭头键39
16KeyEvent.VK_ENTER回车键10
17KeyEvent.VK_ESCAPEEsc 建27
18KeyEvent.VK_INSERTInsert 键155
19KeyEvent.VK_SHIFTShift 键16
20KeyEvent.VK_TABTab 键9
21KeyEvent.VK_WINDOWS"Windows" 键524

src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee

更多推荐

java.awt Robot 自动化测试 与 KeyEvent 常用按键