/*
软件作者:https://xuhss.com/oxox/pro
*/
/**
*作者QQ: 1811588980
*完成时间: 2019年6月7日 上午12:23:21
*API: 27
*备注: 运行自动精灵生成的脚本文件zjs
*需要你自己改文件路径。
简单的写了一个框架,已经实现
,点击 ok
,滑动 ok
,找图 ok
,控制执行 ok
的简单功能。
还只是个框架,大部分功能还没完全实现。
有兴趣的可以看看完善完善。
基本思路就在那摆着呢。
**/
console.show();
//zjs_
/*
var j_ = {
delay: ()=>{},
press: () => {},
swipe: ()=>{},
findImg: () => {},
base64Img: () => {},
};
*/
auto();
if (!requestScreenCapture()) {
toast("请求截图失败");
exit();
};
let j_ = {
//需要用到的功能函数。
log:log,
delay: sleep,
stop: function(){
log("停止");
exit();
},
press: function(p, d) {
log(p, d);
press(p.x, p.y, d);
},
swipe: function(p1, p2, d) {
log(p1, p2, d);
swipe(p1.x, p1.y, p2.x, p2.y, d);
},
findImg: findImg,
base64Img: function(base64) {
return images.fromBase64(base64);
},
};
//读取自动精灵zjs源文件。
let step_ary = readFile("./iop.zjs");
let constData = step_ary.shift();
/*
{
"repeatCount": -1,
"pauseOnFail": true,
"count": 5,
"description": "sndkdkjd",
"minVerCode": 1,
"screenWidth": 1080,
"screenHeight": 2280,
"screenDpi": 3
}
*/
let currentStepIndex = 0;
constData.repeatCount = constData.repeatCount >= 0 ? constData.repeatCount : 1;
for (let i = 0; i < constData.repeatCount; i++) {
currentStepIndex = 0;
while (currentStepIndex < step_ary.length) {
let obj = step_ary[currentStepIndex];
zjs_动作(obj);
currentStepIndex++;
};
};
//函数部分~~~~~~~~~~~~——————————————————————
//~~~~~~~~~~~~~~~~~~——————————————————————
//~~~~~~~~~~~~~~~~~~——————————————————————
//~~~~~~~~~~~~~~~~~~——————————————————————
//~~~~~~~~~~~~~~~~~~——————————————————————
//~~~~~~~~~~~~~~~~~~——————————————————————
//~~~~~~~~~~~~~~~~~~——————————————————————
function readFile(path) {
let textFile = open(path, "r");
let step_ary = textFile.readlines();
textFile.close();
return step_ary.map(function(str) {
return JSON.parse(str);
});
};
function zjs_动作(obj) {
//重复次数默认为1。
let repeatCount = 1;
if (obj.repeatCount) {
repeatCount = obj.repeatCount >= 0 ? obj.repeatCount : 1;
};
f1: for (let i = 0; i < repeatCount; i++) {
switch (obj.type) {
case "点击":
zjs_点击(obj);
break;
case "滑动":
zjs_滑动(obj);
break;
case "点击图片":
zjs_点击(obj);
break;
case "点击文字":
break;
case "控制执行":
zjs_控制执行(obj);
break f1;
break;
};
};
};
function zjs_点击(obj) {
/*
"type": "点击",
"duration": 123,
"delay": 132,
"delayUnit": 1,
"posData": {
"type": "location",
"x": "59%",
"y": "63%"
}
*/
let duration = obj.duration || 100;
zjs_delay(obj);
if (!obj.condition || zjs_condition(obj.condition)) {
let point = zjs_posData(obj.posData);
j_.press(point, duration);
};
};
function zjs_滑动(obj) {
let duration = obj.duration || 100;
zjs_delay(obj);
if (!obj.condition || zjs_condition(obj.condition)) {
let startPoint = zjs_posData(obj.startPos);
let endPoint = zjs_posData(obj.endPos);
j_.swipe(startPoint, endPoint, duration);
};
};
function zjs_控制执行(obj) {
/*
{
"type": "控制执行",
"delay": 789,
"delayUnit": 1,
"controlRunType": "pause"
} {
"type": "控制执行",
"delay": 467,
"delayUnit": 1,
"controlRunType": "stop"
} {
"type": "控制执行",
"delay": 89,
"delayUnit": 1,
"controlRunType": "jumpTo",
"jumpToPosition": "3"
}
*/
zjs_delay(obj);
if (!obj.condition || zjs_condition(obj.condition)) {
switch (obj.controlRunType) {
//没办法暂停和停止都使用了停止。
case "pause":
j_.stop();
break;
case "stop":
j_.stop();
break;
case "jumpTo":
zjs_jumpTo(obj.jumpToPosition);
break;
};
};
};
function zjs_jumpTo(str) {
//跳转。
let num = parseInt(str.replace(/\+|\-/g, ""));
if (str.indexOf("+") >= 0) {
currentStepIndex += (num-1);
} else if (str.indexOf("-") >= 0) {
currentStepIndex -= (num+1);
} else {
currentStepIndex = num - 2;
};
j_.log(currentStepIndex);
};
function zjs_delay(obj) {
//延迟。
if (obj.delay) {
let delay = obj.delay;
switch (obj.delayUnit) {
case 1:
delay = delay * 1000;
break;
case 2:
delay = delay * 60 * 1000;
break;
};
j_.delay(delay);
};
};
function zjs_condition(obj) {
//条件判断。
switch (obj.type) {
case "image":
return zjs_condition_image(obj);
break;
case "textFount":
return zjs_condition_textFount(obj);
break;
case "conditionSet":
return zjs_condition_conditionSet(obj);
break;
};
};
function zjs_condition_image(obj) {
//找图条件。
let imageData = obj.imageData;
let img = j_.base64Img(imageData.data);
let k = false;
if (obj.limitArea) {
let region = obj.limitArea.split(" ");
region = region.map(function(str) {
return zjs_pos_p(str);
});
region[0] = region[0] * constData.screenWidth;
region[1] = region[1] * constData.screenHeight;
region[2] = region[2] * constData.screenWidth;
region[3] = region[3] * constData.screenHeight;
region[2] = region[2] - region[0];
region[3] = region[3] - region[1];
k = new j_.findImg(img).region(region).exists();
} else {
k = new j_.findImg(img).exists();
};
img.recycle();
if (obj.runWhenFalse) {
k = !k;
};
return k;
};
function zjs_condition_textFount(obj) {
//找文字条件。不会写。
/*
{
"type": "textFount",
"text": "文字出现。"
}
*/
//不会搞。
var k = false;
if (obj.runWhenFalse) {
k = !k;
};
return true;
};
function zjs_condition_conditionSet(obj) {
//多个条件。
/*
"type": "conditionSet",
"conditions": [{
*/
var k = false;
if (obj.matchMode == "and") {
for (let
AutoJs源码-运行自动精灵的zjs→
需积分: 1 72 浏览量
2022-11-16
20:06:42
上传
评论
收藏 4KB 7Z 举报
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
[虚幻私塾】
- 粉丝: 335
- 资源: 1559
最新资源
- Java项目-电影院售票管理系统(java+Servlet+JSP+JDBC+Mysql)
- SSM整合开发-图书管理系统
- 计二202301020210蒋怡.zip
- 基于74LS160的70进制计数器仿真节线图
- 基于74LS160的30进制与70进制转化仿真节线图
- 【用360解压工具解压】springboot+vue实验室(预约)管理系统【www.java1234.com】.zip
- commodity.cpp
- WordPress主题JustNews v6.01自适应自媒体博客主题免授权
- C语言开发小游戏案例 - 弹跳球
- Delphi 12 控件之TMS VCL UI Pack v13.1.3.2.7z
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)