java.awt-Robot-自动化测试-与-KeyEvent-常用按键,Clipboard-剪切板
目录
java.awt Robot 自动化测试 与 KeyEvent 常用按键,Clipboard 剪切板
目录
1、java.awt 包中提供了许多自动化测试的 API,主要用于模拟用户按下键盘上的按键,或者模拟用户敲击鼠标等
import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
Root 按下单个按键
/**
* 模拟按下键盘单个按键,比如文档下一页: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();
}
}
Root 按下组合键
/**
* 按下组合键,如 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();
}
}
Root 模拟鼠标单击
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();
}
}
Root 移动鼠标到指定位置
/**
* 自动将鼠标移动到指定的位置
* 如果参数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();
}
}
Root 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();
}
}
Clipboard 系统剪切板调用
1、可以读取系统剪切板中的内容,也可以向系统剪切板写入内容。
/**
* 调用系统剪切板粘贴内容
*
* @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);
}
KeyEvent 常用按键
java.awt.event.KeyEvent 常用按键
编号 | 按键事件 | 描述 | 对应数值 |
1 | KeyEvent.VK_PAGE_UP | PgUp (下一页) | 33 |
2 | KeyEvent.VK_PAGE_DOWN | PgDn(下一页) | 34 |
3 | KeyEvent.VK_HOME | Home 键 | 36 |
4 | KeyEvent.VK_END | End 键 | 35 |
5 | KeyEvent.VK_CONTROL | Ctrl 键 | 17 |
6 | KeyEvent.VK_ALT | Alt 键 | 18 |
7 | KeyEvent.VK_SPACE | 空格 键 | 32 |
8 | KeyEvent.VK_A | 字母 A,VK_A 到 VK_Z 与 ASCII 的 ‘A’ 到 ‘Z’ (0x41 - 0x5A) 对应 | 65-90 |
9 | KeyEvent.VK_0 | 数字 0,VK_0 到 VK_9 与 ASCII 的 ‘0’ 到 ‘9’ (0x30 - 0x39) 对应 | 48-57 |
10 | KeyEvent.VK_F1 | F1 键,VK_F1 到 VK_F12 对应键盘上的 F1 到 F12 键 | 112-123 |
11 | KeyEvent.VK_BACK_SPACE | Backspace 键 | 8 |
12 | KeyEvent.VK_DOWN | 非数字键盘向下箭头键 | 40 |
13 | KeyEvent.VK_LEFT | 非数字键盘向左箭头键 | 37 |
14 | KeyEvent.VK_UP | 非数字键向上箭头键 | 38 |
15 | KeyEvent.VK_RIGHT | 非数字键向右箭头键 | 39 |
16 | KeyEvent.VK_ENTER | 回车键 | 10 |
17 | KeyEvent.VK_ESCAPE | Esc 建 | 27 |
18 | KeyEvent.VK_INSERT | Insert 键 | 155 |
19 | KeyEvent.VK_SHIFT | Shift 键 | 16 |
20 | KeyEvent.VK_TAB | Tab 键 | 9 |
21 | KeyEvent.VK_WINDOWS | “Windows” 键 | 524 |