本文共 5284 字,大约阅读时间需要 17 分钟。
Robot类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。
Java中使用Robot类时,需要导入java.awt包,如下:
import java.awt.*;
Robot类和其他类实例化方法一样:
//类名 对象名 = new 类名();Robot robot = new Robot();
// 将鼠标指针移动到指定屏幕坐标void mouseMove(int x, int y)/** * 按下/释放一个或多个鼠标按钮, 参数说明: * buttons: 鼠标按钮掩码, 一个或多个以下标志的组合: * InputEvent.BUTTON1_DOWN_MASK 鼠标左键 * InputEvent.BUTTON2_DOWN_MASK 鼠标中键 * InputEvent.BUTTON3_DOWN_MASK 鼠标右键 */void mousePress(int buttons)void mouseRelease(int buttons)// 在配有滚轮的鼠标上旋转滚轮void mouseWheel(int wheelAmt)
/** * 按下/释放键盘按键, 参数说明: * keycode: 键盘键值常量, 定义在 KeyEvent.VK_XXX 中 */void keyPress(int keycode)void keyRelease(int keycode)
// 获取指定屏幕坐标处的像素颜色Color getPixelColor(int x, int y)// 截屏, 截取指定的矩形区域BufferedImage createScreenCapture(Rectangle screenRect)
// 睡眠指定的时间, 相当于 Thread.sleep(long ms)void delay(int ms)// 在处理完当前事件队列中的所有事件之前, 一直等待void waitForIdle()// 设置此 Robot 在生成一个事件后是否自动调用 waitForIdle()// 设置为 true, 表示添加的事件逐个按顺序执行(执行完一个再执行下一个)void setAutoWaitForIdle(boolean isOn)boolean isAutoWaitForIdle()// 设置此 Robot 每在生成一个事件后自动睡眠的毫秒数void setAutoDelay(int ms)int getAutoDelay()
robot.delay(114514);Point point = MouseInfo.getPointerInfo().getLocation();System.out.println(point);//在114.514秒内将你的鼠标放在你想要获得坐标的位置,别动,程序执行完毕后会在控制台输出坐标。
for (int j = 0; j < 5; j++) { //循环次数不宜过多,以免给CPU造成较大负担 writer.mouseMove(140, 100);}
writer.keyPress(KeyEvent.VK_C);writer.keyRelease(KeyEvent.VK_C);writer.delay(500);//0.5秒的响应时间writer.keyPress(KeyEvent.VK_E);writer.keyRelease(KeyEvent.VK_E);writer.delay(500);writer.keyPress(KeyEvent.VK_S);writer.keyRelease(KeyEvent.VK_S);writer.delay(500);writer.keyPress(KeyEvent.VK_H);writer.keyRelease(KeyEvent.VK_H);writer.delay(500);writer.keyPress(KeyEvent.VK_1);writer.keyRelease(KeyEvent.VK_1);
package com.company;import java.awt.*;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.security.Key;public class Main { public static void main(String[] args) throws AWTException { // write your code here Robot writer = new Robot(); writer.delay(5000);//5秒钟内把IDE最小化,以免鼠标乱点 for(int i=0;i<10;i++) { //title for (int j = 0; j < 5; j++) { writer.mouseMove(140, 100); } writer.mousePress(InputEvent.BUTTON1_DOWN_MASK); writer.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); writer.delay(1000); writer.keyPress(KeyEvent.VK_1); writer.keyRelease(KeyEvent.VK_1); writer.delay(3000); //content writer.mouseMove(140, 300); writer.mousePress(InputEvent.BUTTON1_DOWN_MASK); writer.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); writer.keyPress(KeyEvent.VK_CONTROL); writer.keyPress(KeyEvent.VK_V); writer.keyRelease(KeyEvent.VK_CONTROL); writer.keyRelease(KeyEvent.VK_V); writer.delay(3000); //go to release writer.mouseMove(1400, 100); writer.mousePress(InputEvent.BUTTON1_DOWN_MASK); writer.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); //选择专栏 writer.mouseMove(650, 305); writer.delay(500); writer.mousePress(InputEvent.BUTTON1_DOWN_MASK); writer.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); writer.delay(1000); writer.keyPress(KeyEvent.VK_C); writer.keyRelease(KeyEvent.VK_C); writer.delay(500); writer.keyPress(KeyEvent.VK_E); writer.keyRelease(KeyEvent.VK_E); writer.delay(500); writer.keyPress(KeyEvent.VK_S); writer.keyRelease(KeyEvent.VK_S); writer.delay(500); writer.keyPress(KeyEvent.VK_H); writer.keyRelease(KeyEvent.VK_H); writer.delay(500); writer.keyPress(KeyEvent.VK_1); writer.keyRelease(KeyEvent.VK_1); //select 文章类型 writer.mouseMove(730, 588); writer.delay(2000); writer.mousePress(InputEvent.BUTTON1_DOWN_MASK); writer.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); writer.delay(2000); writer.mouseMove(730, 591); writer.mousePress(InputEvent.BUTTON1_DOWN_MASK); writer.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); writer.delay(2000); writer.mouseMove(980, 800); writer.mousePress(InputEvent.BUTTON1_DOWN_MASK); writer.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); writer.delay(500); //one more :-) for (int j = 0; j < 5; j++) { writer.mouseMove(900, 560); } writer.delay(1000); writer.mousePress(InputEvent.BUTTON1_DOWN_MASK); writer.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); writer.delay(300000);//五分钟写一篇 } }}
将准备写的内容复制到剪贴板上—>打开Intellij IDEA—>点击run—>5秒内最小化,切换到CSDN博客编辑页面(全屏)—>开始脚本的表演
由于屏幕大小及分辨率因人而异,使用脚本之间请根据你自己的屏幕调整鼠标移动的坐标参数。
参见我的博客中的《测试》专栏,里面标题为《1》的博客都是这个脚本写的。
转载地址:http://uywai.baihongyu.com/