java.awt Robot 自动化测试 与 KeyEvent 常用按键
目录
按下单个按键
按下组合键
模拟鼠标单击
移动鼠标到指定位置
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.com
按下组合键
/*** 按下组合键,如 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.com
模拟鼠标单击
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.com
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.com
调用系统剪切板
/*** 调用系统剪切板粘贴内容** @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.com
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 |
src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee.com
java.awt Robot 自动化测试 与 KeyEvent 常用按键相关推荐
- JAVA工具篇--java.awt.Robot模拟微信批量添加好友
前言:java.awt.Robot可以控制鼠标和键盘,本文基于此通过模拟认为添加微信好友的过程实现批量添加微信好友,并最终输出微信号/手机号是否有好友及好友的基本信息,本文代码示例禁用学习交流使用: ...
- 使用java.awt.Robot实现java版的自动点击事件
1.最近遇到了一个需要人工点击的事情,很麻烦,于是找了一下资料,写了一个自动的鼠标点击的程序 使用的包: java.awt.Robot 具体的代码 Robot robot = new Robot(); ...
- java.awt.robot api,像java.awt.Robot中的Android API
Is there an Android API analogous to java.awt.Robot, i.e. an API allowing to take screenshots? 解决方案 ...
- java actionchains,UI自动化测试:模拟组合按键操作的2种方式
前言 在UI自动化测试的时候,可能会遇到键盘按键的组合操作,比如ctrl+c,ctrl+v等,类似于我们手动操作的快捷键.可以有两种方式实现:一种是selenium中自带的ActionChains结合 ...
- java awt robot
Robot 类用于生成本机系统输入事件,用于测试自动化,自动运行演示和需要鼠标和键盘控制的其他应用程序. Robot的主要目的是为了方便Java平台实现的自动化测试. 经过封装后的 Robot api ...
- Java:使用Robot类模拟键盘, 以Alt码方式输出汉字
Java:使用Robot类模拟键盘, 以Alt码方式输出汉字 文章目录 Java:使用Robot类模拟键盘, 以Alt码方式输出汉字 java.awt.Robot类 使用Alt码输出汉字 尝试 `Al ...
- Mac环境下用Java(Sikuli+Robot)实现页游自动化
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ Sikulix(以前叫Sikuli)在Mac电脑的环境配置步骤如下: 1.从官网上下载Sikuli ...
- import java.awt.BorderLayout;_import java.awt
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.awt.AWTException; import java.awt.BorderLayout; import java.awt.C ...
- Java AWT中常用的三种布局管理器
文章目录 布局管理器 一.流程布局管理器(FlowLayout) 二.边界布局管理器(BorderLayout) 三 .网格布局管理器 四. 综合实例运用 布局管理器 在java.awt 包中提供了5 ...
- java中Robot
用者本身这个系统事件,或根据使用者的需要(例如程序需要自动展示一些功能等)来控制鼠标或键盘. 在 Robot 这个类中产生的事件有别于在AWT元件中的事件,在AWT 元件中的事件(例如 MouseE ...
最新文章
- 使用canvas操作图像
- OpenCV分配与释放图像空间
- LeetCode 52.N-Queens II
- LAMP+LNMP(四)PHP安装实践
- HDU多校2 - 6763 Total Eclipse(贪心+并查集)
- 当知识图谱遇上推荐系统(总述和推荐)
- Opencv--bitwise_and、bitwise_not等图像基本运算及掩膜
- 我的docker随笔23:修改容器时区和添加中文支持
- android 表格xml,【Android】利用表格布局,Android中xml文件与java的交互制作登录界面...
- c#中using 和new
- 我的Linux系统开始学习的过程
- 根据需求增加或删除表格行
- python123第四章第五题_Python123
- 17. CSS 框模型概述
- mysql优化 知乎_MYSQL优化
- 找到Linux共享文件夹的实际位置
- OFDM链路自适应算法 注水算法简单c++实现
- Vue.js 核心精要实战解析
- gcc4.7.4降级编译
- 如何使用R语言拟合ANOVA模型
热门文章
- 定向搜索(beam search)
- 牛顿法为什么比梯度下降法求解需要的迭代次数更少?
- java判断数组值类型,判断(1分) Java语言中的数组元素只能是基本数据类型而不能为对象类型。...
- cass有坐标文件生成里程文件_【视频】南方cass9.0进阶教程74.3生成里程文件3
- 拓端tecdat|R语言用极大似然和梯度下降算法估计GARCH(p)过程
- 拓端tecdat|R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数
- mysql driver pdo_关于 php mysql pdo cannot find driver 解决方案
- python实现图像检索的三种(直方图/OpenCV/哈希法)
- 三种激活函数以及它们的优缺点
- 【Caffe代码解析】Blob