前言
很多人刚接触EasyClick,就很想了解它和auto.js的区别。
auto.js有个脚本引擎对象。每个脚本都有一个脚本引擎对象。当主脚本调用子脚本时,会生成子脚本的引擎对象。通过这个对象,可以对子脚本进行一些操作。
同时,auto.js调用子脚本可以传递参数。
这一节来研究EasyClick脚本间的参数传递的两种方式。
本地存储
既然execScript()不能传参,我们可以尝试使用本地存储的方式来进行参数传递。
这样虽然麻烦了一点,但是能达到目的。
在子脚本运行之前,先将需要传递的参数,写入配置项中。
子脚本运行后,读取配置项中的参数即可。
主脚本代码:
function main() {
//如果自动化服务正常
if (!autoServiceStart(3)) {
loge("自动化服务启动失败,无法执行脚本")
exit();
} else {
logd("开始执行脚本...")
}
};
main();
let url = './awemeViewHotVideo.js'
var x = http.httpGetDefault(url, 10 * 1000);
if (x.length > 0) {
let infoKey = 'taskInfo';
let infoValue = {
"task_id": "24504",
"module_name": "某音_随机浏览热门视频",
"module_url": "./awemeViewHotVideo.js",
"module_group_id": null,
"module_param": {
"module_id": "54",
"group_name": "某音",
"module_url": "",
},
};
if (setStorageData(infoKey, JSON.stringify(infoValue))) {
if (execScript(2, x)) {
logi('执行脚本成功');
// 获取任务结果
let resultKey = 'taskResult';
let resulValue = getStorageData(resultKey);
logd('任务结果:' + resulValue);
} else {
loge('执行脚本失败');
}
} else {
loge('传参失败');
}
}
子脚本运行完成后,如果需要回传执行结果,可以同样使用本地存储的方式,将参数写入配置项,供主脚本读取。
子脚本代码:
/*
* @Description:
* @Version: 1.0
* @Autor: 飞云
* @LastEditTime: 2020-12-08 18:43:52
*/
let infoKey = 'taskInfo';
let infoValue = JSON.parse(getStorageData(infoKey))
logd('任务参数:' + getStorageData(infoKey));
if (infoValue) {
awemeFace();
// 回传任务结果
let resultKey = 'taskResult';
let resulValue = {
"task_id": "24504",
"result": "true",
};
setStorageData(resultKey, JSON.stringify(resulValue));
} else {
loge('未取到任务参数')
};
setExceptionCallback(function (msg) {
logd(" 异常停止消息: " + msg)
});
setStopCallback(function () {
logd("我是停止回调")
});
// 测试版本:13.8.0
function awemeFace() {
home();
let packageName = 'com.ss.android.ugc.aweme';
launch(packageName);
let pages = random(3, 5); //指定需浏览的视频随机数量
logi('需浏览 ' + pages + '个视频');
for (let i = 0; i < pages; i++) {
let activity = getRunningActivity();
switch (activity) {
case 'com.ss.android.ugc.aweme.main.MainActivity':
let times = random(5000, 10000); //单个视频浏览时长
logd('等待 ' + times + '毫秒');
sleep(times);
// 设定坐标,注意避开悬浮窗
let x = device.getScreenWidth() * 7 / 10;
let y = device.getScreenHeight() * 8 / 10;
let x1 = device.getScreenWidth() * 7 / 10;
let y1 = device.getScreenHeight() * 1.5 / 10;
// 随机滑屏
let jumpNum = random(1, 5);
for (let j = 0; j < jumpNum; j++) {
if (j != jumpNum - 1) {
logd('跳过第 ' + (j + 1) + '屏');
}
// 滑动屏幕,注意避开悬浮窗
if (rndSwipe(x, y, x1, y1, 100, 200, 200)) {
sleep(3000);
}
}
logi('浏览第 ' + (i + 1) + '个视频');
break;
default:
break;
}
}
}
运行日志:
[2020-12-08 19:17:30.234]【远程设备】准备运行工程...
[2020-12-08 19:17:30.241]【远程设备】开始启动...
[2020-12-08 19:17:30.331]【远程设备】开始执行,请稍等
[2020-12-08 19:17:30.648]【远程设备】执行 main class: com.js.main
[2020-12-08 19:17:30.656]【远程设备】执行class: com.js.main
[2020-12-08 19:17:30.656]【远程设备】运行模式:无障碍
[2020-12-08 19:17:30.656]【远程设备】开始执行脚本...
[2020-12-08 19:17:30.885]【远程设备】(tmp-dynamic.js#10)任务参数:{"task_id":"24504","module_name":"某音_随机浏览热门视频","module_url":"./awemeViewHotVideo.js","module_group_id":null,"module_param":{"module_id":"54","group_name":"某音","module_url":""}}
[2020-12-08 19:17:30.891]【远程设备】(tmp-dynamic.js#37)启动应用...
[2020-12-08 19:17:36.536]【远程设备】(tmp-dynamic.js#37)启动成功
[2020-12-08 19:17:36.546]【远程设备】(tmp-dynamic.js#37)应用版本号:13.8.0
[2020-12-08 19:17:36.546]【远程设备】(tmp-dynamic.js#40)需浏览 4个视频
[2020-12-08 19:17:36.550]【远程设备】(tmp-dynamic.js#47)等待 7754毫秒
[2020-12-08 19:17:44.314]【远程设备】(tmp-dynamic.js#60)跳过第 1屏
[2020-12-08 19:17:47.342]【远程设备】(tmp-dynamic.js#60)跳过第 2屏
[2020-12-08 19:17:53.389]【远程设备】(tmp-dynamic.js#68)浏览第 1个视频
[2020-12-08 19:17:53.393]【远程设备】(tmp-dynamic.js#47)等待 7677毫秒
[2020-12-08 19:18:01.70]【远程设备】(tmp-dynamic.js#60)跳过第 1屏
[2020-12-08 19:18:07.108]【远程设备】(tmp-dynamic.js#68)浏览第 2个视频
[2020-12-08 19:18:07.112]【远程设备】(tmp-dynamic.js#47)等待 8277毫秒
[2020-12-08 19:18:15.394]【远程设备】(tmp-dynamic.js#60)跳过第 1屏
[2020-12-08 19:18:18.421]【远程设备】(tmp-dynamic.js#60)跳过第 2屏
[2020-12-08 19:18:21.456]【远程设备】(tmp-dynamic.js#60)跳过第 3屏
[2020-12-08 19:18:27.504]【远程设备】(tmp-dynamic.js#68)浏览第 3个视频
[2020-12-08 19:18:27.506]【远程设备】(tmp-dynamic.js#47)等待 5720毫秒
[2020-12-08 19:18:33.238]【远程设备】(tmp-dynamic.js#60)跳过第 1屏
[2020-12-08 19:18:36.262]【远程设备】(tmp-dynamic.js#60)跳过第 2屏
[2020-12-08 19:18:39.291]【远程设备】(tmp-dynamic.js#60)跳过第 3屏
[2020-12-08 19:18:42.328]【远程设备】(tmp-dynamic.js#60)跳过第 4屏
[2020-12-08 19:18:48.376]【远程设备】(tmp-dynamic.js#68)浏览第 4个视频
[2020-12-08 19:18:48.385]【远程设备】执行脚本成功
[2020-12-08 19:18:48.385]【远程设备】任务结果:{"task_id":"24504","result":"true"}
[2020-12-08 19:18:48.391]【远程设备】(tmp-dynamic.js#31)我是停止回调
[2020-12-08 19:18:49.638]【远程设备】运行结束
全局变量
温馨提示:此处内容需要登录后才能查看!
主脚本代码:
function main() {
//如果自动化服务正常
if (!autoServiceStart(3)) {
loge("自动化服务启动失败,无法执行脚本")
exit();
} else {
logd("开始执行脚本...")
}
};
main();
var infoValue = {
"task_id": "24504",
"module_name": "某音_随机浏览热门视频",
"module_url": "./awemeViewHotVideo.js",
"module_group_id": null,
"module_param": {
"module_id": "54",
"group_name": "某音",
"module_url": "",
},
};
var x = http.httpGetDefault(infoValue.module_url, 10 * 1000);
if (x.length > 0) {
if (execScript(2, x)) {
logi('执行脚本成功');
// 获取任务结果
logd('任务结果:' + JSON.stringify(resultValue));
} else {
loge('执行脚本失败');
}
}
子脚本代码:
/*
* @Description:
* @Version: 1.0
* @Autor: 飞云
* @LastEditTime: 2020-12-08 18:43:52
*/
awemeFace();
// 回传任务结果
var resultValue = {
"result": "true",
};
setExceptionCallback(function (msg) {
logd(" 异常停止消息: " + msg)
});
setStopCallback(function () {
logd("我是停止回调")
});
// 测试版本:13.8.0
function awemeFace() {
home();
let packageName = 'com.ss.android.ugc.aweme';
launch(packageName);
let pages = random(3, 5); //指定需浏览的视频随机数量
logi('需浏览 ' + pages + '个视频');
for (let i = 0; i < pages; i++) {
let activity = getRunningActivity();
switch (activity) {
case 'com.ss.android.ugc.aweme.main.MainActivity':
let times = random(5000, 10000); //单个视频浏览时长
logd('等待 ' + times + '毫秒');
sleep(times);
// 设定坐标,注意避开悬浮窗
let x = device.getScreenWidth() * 7 / 10;
let y = device.getScreenHeight() * 8 / 10;
let x1 = device.getScreenWidth() * 7 / 10;
let y1 = device.getScreenHeight() * 1.5 / 10;
// 随机滑屏
let jumpNum = random(1, 5);
for (let j = 0; j < jumpNum; j++) {
if (j != jumpNum - 1) {
logd('跳过第 ' + (j + 1) + '屏');
}
// 滑动屏幕,注意避开悬浮窗
if (rndSwipe(x, y, x1, y1, 100, 200, 200)) {
sleep(3000);
}
}
logi('浏览第 ' + (i + 1) + '个视频');
break;
default:
break;
}
}
}
运行日志:
[2020-12-08 19:26:43.638]【远程设备】准备运行工程...
[2020-12-08 19:26:43.643]【远程设备】开始启动...
[2020-12-08 19:26:43.725]【远程设备】开始执行,请稍等
[2020-12-08 19:26:43.768]【远程设备】执行 main class: com.js.main
[2020-12-08 19:26:43.768]【远程设备】执行class: com.js.main
[2020-12-08 19:26:43.768]【远程设备】运行模式:无障碍
[2020-12-08 19:26:43.768]【远程设备】开始执行脚本...
[2020-12-08 19:26:43.911]【远程设备】(tmp-dynamic.js#26)启动应用...
[2020-12-08 19:26:49.177]【远程设备】(tmp-dynamic.js#26)启动成功
[2020-12-08 19:26:49.177]【远程设备】(tmp-dynamic.js#26)应用版本号:13.8.0
[2020-12-08 19:26:49.180]【远程设备】(tmp-dynamic.js#29)需浏览 3个视频
[2020-12-08 19:26:49.182]【远程设备】(tmp-dynamic.js#36)等待 9350毫秒
[2020-12-08 19:26:58.549]【远程设备】(tmp-dynamic.js#49)跳过第 1屏
[2020-12-08 19:27:01.588]【远程设备】(tmp-dynamic.js#49)跳过第 2屏
[2020-12-08 19:27:04.606]【远程设备】(tmp-dynamic.js#49)跳过第 3屏
[2020-12-08 19:27:07.653]【远程设备】(tmp-dynamic.js#49)跳过第 4屏
[2020-12-08 19:27:13.701]【远程设备】(tmp-dynamic.js#57)浏览第 1个视频
[2020-12-08 19:27:13.702]【远程设备】(tmp-dynamic.js#36)等待 6155毫秒
[2020-12-08 19:27:19.867]【远程设备】(tmp-dynamic.js#49)跳过第 1屏
[2020-12-08 19:27:25.925]【远程设备】(tmp-dynamic.js#57)浏览第 2个视频
[2020-12-08 19:27:25.930]【远程设备】(tmp-dynamic.js#36)等待 5782毫秒
[2020-12-08 19:27:31.723]【远程设备】(tmp-dynamic.js#49)跳过第 1屏
[2020-12-08 19:27:37.771]【远程设备】(tmp-dynamic.js#57)浏览第 3个视频
[2020-12-08 19:27:37.780]【远程设备】执行脚本成功
[2020-12-08 19:27:37.792]【远程设备】(tmp-dynamic.js#20)我是停止回调
[2020-12-08 19:27:37.792]【远程设备】任务结果:{"result":"true"}
[2020-12-08 19:27:38.331]【远程设备】运行结束
EasyClick免费云控
全动云是淘美科技旗下2021年最新的免费云控脚本管理系统。提供设备分组、设备管理、脚本分组、脚本管理、任务管理、素材管理等强大功能。支持用户上传自定义EasyClick脚本。
全动云大数据智能营销管理系统
相关链接
EasyClick脚本开发教程(1)IntelliJ IDEA Ultimate的安装方法
EasyClick脚本开发教程(2)安装开发工具并创建项目
EasyClick脚本开发教程(3)连接设备与屏幕映射
EasyClick实现某音直播间刷屏喊话,循环发送随机话术
EasyClick实现某音发送指定语音,发送好友私信,引流脚本必备技术
EasyClick交流群
QQ群号:737066890
1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » EasyClick脚本开发教程(21)主脚本和子脚本传递参数
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » EasyClick脚本开发教程(21)主脚本和子脚本传递参数