java.awt Robot 自动化测试 与 KeyEvent 常用按键,Clipboard 剪切板 |
您所在的位置:网站首页 › 键盘组合键是哪个 › java.awt Robot 自动化测试 与 KeyEvent 常用按键,Clipboard 剪切板 |
目录 Root 按下单个按键 Root 按下组合键 Root 模拟鼠标单击 Root 移动鼠标到指定位置 Root Alt + 空格 + X 最大化窗口 Clipboard 系统剪切板调用 KeyEvent 常用按键 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(); } }src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee.com 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(); } }src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee.com 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(); } }src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee.com 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(); } }src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee.com 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); }src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee.com src/main/java/com/wmx/yuanyuan/awt/KeyEventUtls.java · 汪少棠/yuanyuan - Gitee.com |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |