Java实战:Robot脚本自动写博客

  • Java实战:Robot脚本自动写博客
    • Robot类
    • 常用API
      • 鼠标:
      • 键盘
      • 屏幕
      • 控制
    • 小技巧
    • 实战代码
      • 先上代码:
      • 用法:
      • 注意:
      • 效果:

Java实战:Robot脚本自动写博客

Robot类

Robot类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。

Java中使用Robot类时,需要导入java.awt包,如下:

import java.awt.*;

Robot类和其他类实例化方法一样:

//类名 对象名 = new 类名();
Robot robot = new Robot();

常用API

鼠标:

// 将鼠标指针移动到指定屏幕坐标
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 hereRobot writer = new Robot();writer.delay(5000);//5秒钟内把IDE最小化,以免鼠标乱点for(int i=0;i<10;i++) {//titlefor (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);//contentwriter.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 releasewriter.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》的博客都是这个脚本写的。

Java实战:Robot脚本自动写博客相关推荐

  1. postman自动打开_postman---postman自动发博客

    前面写了一篇如何通过Cookies值去登录博客园,今天我们来通过登录博客园之后,我们进行通过Postman自动写博客 自动写博客 1.打开Postman.填写博客园对应的Cookies: 2.抓取编写 ...

  2. 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...

    版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...

  3. python博客项目评论_Python 爬虫入门——小项目实战(自动私信博客园某篇博客下的评论人,随机发送一条笑话,完整代码在博文最后)...

    之前写的都是针对爬虫过程中遇到问题的解决方案,没怎么涉及到实际案例.这次,就以博客园为主题,写一个自动私信博客下的评论人员(在本篇留下的评论的同学也会被自动私信,如果不想被私信,同时又有问题,请私信我 ...

  4. Java技术大咖为什么都有写博客的习惯呢?

    把自己的设计.思路.总结都写到日记里(我用evernote),便于自己思路的整理,很多时候人脑的缓存是真不够用,后面回来找思路的时候,细节也都在笔记里面. 1.让我思维更清晰,表述更有条理 我生活中不 ...

  5. 写博客是一种乐趣,一种需要培养的乐趣,Java程序员最大的悲哀是什么

    3.可以和大家进行交流,这个还是挺有意思的 这个篇<为什么很多人不愿意用hibernate了?>是我最火的文章,但,已成往事,在谩骂中成长,在博弈中进步,这就是博客的乐趣,这才是互联网最重 ...

  6. 最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础...

    最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础,加油吧 距离去北京还有23天 转载于:https://www.cnblogs.com/AceIsSunsh ...

  7. 如何从现在开始写博客?

    在前不久知名博主<纯洁的微笑>在博客园分享了他写博客的心得,获得了读者圈的广泛共鸣,同时也引起了一些老生常谈的争议,这样的讨论在我们长沙.NET技术社区内部也经常发生. 1.写博客的好处 ...

  8. 使用Jenkins自动部署博客

    使用Jenkins自动部署博客 title: 使用Jenkins自动部署博客 toc: true comment: true date: 2017-12-17 19:48:10 tags: ['Jen ...

  9. minio搭建图床 配合typora实现写博客图片自动上传

    minio搭建图床 配合typora实现写博客图片自动上传 1.搭建minio 查看博客:http://www.weinigb.cn/#/info?blogOid=32 2.使用脚本(python) ...

最新文章

  1. AngularJS之ng-class(十一)
  2. c# 计算空格宽度像素_Adv. Mater:2D材料缺陷工程实现全光控存储和神经形态计算...
  3. TCP协议-相关面试题
  4. Python生成随机高斯模糊图片
  5. LeetCode 5377. 将二进制表示减到 1 的步骤数
  6. 自己动手、丰衣足食!面试表
  7. 中国首枚芯片邮票问世;苹果开源 Swift System | 极客头条
  8. UVA12602 Nice Licence Plates【进制】
  9. 赋能行业 共建生态 阿里巴巴首次亮相义乌标准展
  10. Opencv实现的简易绘图工具
  11. C语言 5个数最值问题
  12. 微信小程序发送模板消息限制的问题
  13. 系统安全中主要风险有哪些,弱密码怎么解决?
  14. ldap 身份认证 概念和原理介绍
  15. WIN10教育版怎么可以变更为专业版
  16. 《创业36条军规》读书笔记
  17. 立陶宛央行抢跑数字货币背后:前瞻的区块链战略 中国已有企业布局
  18. 俄罗斯FAC认证介绍
  19. 人脸识别之DeepID模型
  20. 解决win10系统便签提示无法打开这个应用,以及win10下照片查看器的问题

热门文章

  1. PHP -----微擎内置方法生成二维码和下载二维码
  2. 看信息时代机器人教育的研发之路
  3. 魅族魅蓝x2简单开启usb调试模式的流程
  4. IoT + 5G , 在游玩中给你拍下美丽的vlog
  5. 饥荒进别人房间服务器无响应,饥荒黑科技:能秒杀大多数BOSS的BUG,终因太强而被修复...
  6. java敏感词过滤源代码_Java实现敏感词过滤代码
  7. python 数组字典定义_使用python数组字典
  8. 华为荣耀6计算机,华为荣耀6怎么开启和打开usb调试模式
  9. 中国石油大学(北京)-《 修井工程》第三阶段在线作业
  10. Linux检查安全策略