java.awt Robot 自动化测试 与 KeyEvent 常用按键,Clipboard 剪切板

您所在的位置:网站首页 键盘组合键是哪个 java.awt Robot 自动化测试 与 KeyEvent 常用按键,Clipboard 剪切板

java.awt Robot 自动化测试 与 KeyEvent 常用按键,Clipboard 剪切板

2024-07-17 13:16| 来源: 网络整理| 查看: 265

目录

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

KeyEvent  常用按键 java.awt.event.KeyEvent 常用按键 编号按键事件描述对应数值1KeyEvent.VK_PAGE_UPPgUp (下一页)332KeyEvent.VK_PAGE_DOWNPgDn(下一页)343KeyEvent.VK_HOMEHome 键364KeyEvent.VK_ENDEnd 键355KeyEvent.VK_CONTROLCtrl 键176KeyEvent.VK_ALTAlt 键187KeyEvent.VK_SPACE空格 键328KeyEvent.VK_A字母 A,VK_A 到 VK_Z 与 ASCII 的 ‘A’ 到 ‘Z’ (0x41 - 0x5A)  对应65-909KeyEvent.VK_0数字 0,VK_0 到 VK_9 与 ASCII 的 ‘0’ 到 ‘9’ (0x30 - 0x39) 对应48-5710KeyEvent.VK_F1F1 键,VK_F1 到 VK_F12 对应键盘上的 F1 到 F12 键112-12311KeyEvent.VK_BACK_SPACEBackspace 键812KeyEvent.VK_DOWN 非数字键盘向下箭头键4013KeyEvent.VK_LEFT非数字键盘向左箭头键3714KeyEvent.VK_UP非数字键向上箭头键3815KeyEvent.VK_RIGHT非数字键向右箭头键3916KeyEvent.VK_ENTER回车键1017KeyEvent.VK_ESCAPEEsc 建2718KeyEvent.VK_INSERTInsert 键15519KeyEvent.VK_SHIFTShift 键1620KeyEvent.VK_TABTab 键921KeyEvent.VK_WINDOWS"Windows" 键524

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



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3