Java里鲜为人知的“机器人”类库

Posted java1234_小锋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java里鲜为人知的“机器人”类库相关的知识,希望对你有一定的参考价值。

小伙伴们,大家好,今天锋哥来给大家介绍下Jdk里很少用到的一个“机器人”类库-Robot。
图片

RoBot简介

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

Robot可以模拟鼠标和键盘的输入,相当于Java版的按键精灵。
图片
核心就是自动化;
在这里插入图片描述

Robot在我工作中的应用

我这边有个应用案例,给大家看看;

在这里插入图片描述
我几年前开始搞在线教育的时候,录制了很多视频,基础课程全免费,我比较穷,没钱,就用免费基础课程给自己引流,打打广告,然后项目实战课程就是收费的,人性不可揣测,所以视频必须加密,因为我课程也单卖,也可以vip一起卖,所以一个课程对应一个密码,开始有几个课程还好,我人工搞,一个一个生成,后来懵逼了,课程10几个,一个一个生成,还得3,4分钟,有时候还搞错。

图片
所以想办法解决这个问题,第一个是请人工搞,要花钱,第二个就是用程序帮我干这种死活。
图片
最终找到了jdk里的Robot类库,自己代码功底可以,干了1小时,就写完了代码,测试下,爽死;
在这里插入图片描述
涉及一些个人搞事隐私,所以GIF画质模糊点,大家请担当。

Robot技术文档介绍

学习使用的话,大家要结合Jdk API文档;
(我这边就截图偷懒下,懒得调整格式)

类介绍
图片

构造方法摘要和方法摘要
图片
键盘上的每一个键,都可以通过KeyEvent的常量来标识:

Robot入门案例

最后锋哥给出一个入门案例,大家可以学习体验下:
图片
实现功能
用Robot模拟双击打开一个指定位置的文本文件,
然后文本里输入一段文字,
最后模拟用户保存文件。

实现效果
在这里插入图片描述

实例代码

package com.java1234;

import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

/**
 * @author java1234_小锋
 * @site www.java1234.com
 * @company Java知识分享网
 * @create 2021-06-07 18:30
 */
public class Test {

    private final static int x=38; // x坐标

    private final static int y=38; // y坐标

    private final static int []keys={   // 输入字母
            KeyEvent.VK_J,KeyEvent.VK_A,KeyEvent.VK_V,KeyEvent.VK_A,
            KeyEvent.VK_1,KeyEvent.VK_2,KeyEvent.VK_3,KeyEvent.VK_4,
            KeyEvent.VK_SPACE,
            KeyEvent.VK_N,KeyEvent.VK_I,KeyEvent.VK_U,KeyEvent.VK_B,
            KeyEvent.VK_I,KeyEvent.VK_L,KeyEvent.VK_I,KeyEvent.VK_L,
            KeyEvent.VK_T,KeyEvent.VK_Y
    };


    public static void main(String[] args) throws Exception{
        Robot robot = new Robot();  // new一个机器人

        // 模拟双击打开一个指定位置的文本文件
        robot.mouseMove(38,38);  // 模拟移动鼠标到指定位置
        robot.delay(100); // 休息0.1秒
        robot.mousePress(InputEvent.BUTTON1_MASK);  // 模拟双击打开文本文件
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.delay(1000); // 休息0.1秒

        // 模拟输入文字
        for(int i=0;i<keys.length;i++){
            robot.keyPress(keys[i]);
            robot.keyRelease(keys[i]);
            robot.delay(100);
        }

        // 模拟保存
        robot.delay(1000); // 休息0.1秒
        robot.keyPress(KeyEvent.VK_CONTROL);  // 模拟 ctrl+s
        robot.keyPress(KeyEvent.VK_S);
        robot.keyRelease(KeyEvent.VK_S);
        robot.keyRelease(KeyEvent.VK_CONTROL); // 模拟释放 ctrl+s
    }
}

感谢小伙伴们看完,奥利给!!!
图片

微信搜一搜【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。

以上是关于Java里鲜为人知的“机器人”类库的主要内容,如果未能解决你的问题,请参考以下文章

细细讲述Java技术开发的那些不为人知的规则

Atitit.jdk java8的语法特性详解 attilax 总结

怎样在java代码里获取一个json对象,然后对其进行排序,排好了之后,再返回给json?

Azure 机器人微软Azure Bot 编辑器系列 : 机器人/用户提问回答模式,机器人从API获取响应并组织答案 (The Bot Framework Composer tutorial(代码片段

你知道市面上机器人都用哪些操作系统吗

AJAX相关JS代码片段和部分浏览器模型