Auto.js 半自动批量生成小程序抽奖

之前还是深度学习服务器和数据库,怎么这里就变成script kiddie了?————原来是上班了啊

是谁合同没签工资没发十点半被电话叫醒干活?

概要和需求

一共有30个单位,每一个单位有50个中奖名额,未中奖需要提示“祝你长命百岁”而不是简单的“可惜”。

在这里使用了叫做“抽奖助手”的微信小程序,但微信OS过于臃肿,且该小程序在PC端会白屏,因此使用Auto.js自动完成填写内容。
使用 Samsung S20 运行,复制粘贴部分使用微软三星跨设备剪贴板操作。

开始

Auto.js 基础

这就是个无障碍服务用js的套壳,因此没啥特殊的东西。

auto.waitFor()
toast("running");
var height = device.height;
var width = device.width;

等待无障碍服务,发送running的toast,并定义屏幕宽高变量用于划屏幕,定义基础内容

判断页面

var change_pic = text("更换图片").findOnce();
if (change_pic ) {
   //这里是代码主体部分,是下面一章节的内容
}
else {
    toast("未检查到页面");
    exit();
}

通过页面上有没有"更换图片"的文字按钮判断页面。微信是个很可怕的软件,说不定就因为没有判断页面,戳一戳了领导。

主体内容

更换banner图片

change_pic.click(); //点击更换图片按钮
sleep(1500);
click(150, 1460) //当然是从相册选择
sleep(1500); 
click(235, 283) //选中左上角最新图片
sleep(1500);
click(970, 138) //右上角确认
sleep(1500); 
click(537, 2302) // 裁剪

至此banner图片更换完成。为啥sleep一点五秒?因为小而美微信OS太卡了,有时间缩略图打开要卡好久。

添加奖品

sleep(1500)

click(850, 1850)
sleep(300);
setText("汤臣一品一栋")
click(1004, 2350) //收掉Gboard
sleep(1000);

click(955, 1950)
sleep(300);
setText("1")
click(545, 1640) //收掉微信OS数字键盘
sleep(300);

click(870, 2149) //选择发放方式
sleep(300);
click(587, 2133) //选择填写信息

这一部分是添加一等奖,使用了setText方法,输入了奖品和数量,选择让中奖者自行填写信息。

填写信息内容

sleep(1000);
click(255, 434)
sleep(1000);
click(540, 1553) //点击Gboard剪贴板最近复制
sleep(1000);
click(1004, 2350)  //收掉Gboard
sleep(1000);
click(725, 2295)

仅每次抽奖的第一次需要,设置中奖者填写的信息内容,比如“请在下方输入你的工号”,之后选中相同发放方式就不会跳出页面。

翻页并再添加下一等奖项

sleep(1000);
swipe(3, height-500 , 3, height-1460, 1000)
sleep(1300);
click(560, 1350)

swipe(x1,y,x2,y2,t)函数的使用方法:x1为x起点坐标,x2为x终点坐标,y1为y起点,y2为y终点,t为间隔时间。
使用本文章内调试好的坐标值,可以保证与第一个奖品信息的坐标一样,不再设置新坐标。

鼓励奖设置

可以通过简单的循环或者单纯复制黏贴重复上述添加奖品、翻页并再添加下一等奖项操作。但鼓励奖需要使用小程序内的“兑换码”功能。

sleep(300);
click(700, 1710) //点击“兑换码”表明该礼物是一句话
sleep(200);
click(850, 1850)
sleep(300);
setText("神秘礼物")
click(1004, 2350)  //收掉Gboard
sleep(1500);

在这里唯一的区别是多点击了一下兑换码按钮。

开奖设置

swipe(3, height-500 ,3, height-1460, 1000) //下滑一点
sleep(300);
click(855, 1860) //点击“即抽即中”
sleep(300);
swipe(3, height-500 , 3, height -1460, 1000)  //再下滑一点
sleep(300);
click(830, 1110)
sleep(300);
setText("50") //人数
click(545, 1640) //收掉微信OS数字键盘
sleep(300);
click(700, 1680) //点击发起人
sleep(3000);
click(311, 868) //选择第二个,会自动确认返回

设置了开奖方式,人数和抽奖公司名。

手动内容

至此,程序内容介绍完毕。需要手动添加以下内容

  1. 开奖截止日期
  2. 兑换码一行一句话。例子:共50人,奖品10人,需要40行“重在参与”粘贴进对话框。
  3. 抽奖详情介绍
  4. 高级版也需要自己设置启用
Edit with Markdown