今天文章的内容是在小平台上注册账号的脚本,脚本没啥具体用处,纯属练手,之所以选择小平台去注册,是不需要接收手机验证码,这样批量注册号码就没有什么成本。
先来看看效果展示:
注册账号的基本流程是这样的:
①清除app缓存数据,这样每次打开app都是未登录状态
②打开注册页面,这个过程可以是模拟手动,像我这篇文章的例子那样一步步点击,也可以包名组件跳转,对接直接跳转我也做不到每个app都能实现,所以为了通用我一般会选择模拟手动操作的方式。
③输入账号和密码
一般来说现在app注册都是要求手机号作为账号的,密码有的自己设置,也有不需要密码的,而是需要接收短信验证码的。
如果不需要手机短信验证的,账号直接生成随机的位的数字,考虑到手机号前几位相对固定,可以直接随机后位。
对于需要接收短信验证的,可以对接接码平台。
密码部分,为了方便可以设置一个简单易记的。
④保存账号和密码
这一步看需求,需要存储就存一下,不需要就不存,存储格式一般是这样。
下面是我写的代码:
Import "shanhai.lua"If Dir.Exist("/sdcard/pictures/password.txt")= Then file.Write("/sdcard/pictures/password.txt")End IfDim user=RndPhone()Dim pw=Rndpw()Sys.ClearAppCache ("vyq.ouvjpjuv.xmrezmz")Delay RunApp("vyq.ouvjpjuv.xmrezmz")Delay Tap , 点确定Delay Tap , 点允许Delay Tap , 点会员中心Delay Tap , 点注册账号Delay Tap , 激活账号输入框Delay InputText userDelay Tap , 激活密码输入框Delay InputText pwDelay Tap , 再次激活密码输入框Delay InputText pwDelay Tap , 点注册Delay Tap , 点确定Delay Tap , 激活账号输入框Delay InputText userDelay Tap , 激活密码输入框Delay InputText pwDelay Tap , 点登录Delay file.Append("/sdcard/pictures/password.txt",user&"----"&pw&" ")Function RndPhone() Dim adr={"","","","","","","","","","","","","","","","","",""} TracePrint len(adr) Dim line="" For Dim rndnum=int(*rnd()) line=line&rndnum Next TracePrint line RndPhone=adr(int(len(adr)*rnd()))&lineEnd FunctionFunction Rndpw() Dim line="" For Dim rndnum=int(*rnd()) line=line&rndnum Next TracePrint line Rndpw=lineEnd Function
因为是练手,代码没有任何容错机制,每一个页面之间的切换都是点击+延迟的结构。
考虑到写太多tap命令后,不知道每个tap点击的是什么,所以在命令后面加上注释,标注此tap点击的内容(位置),这样后期测试时,如果出现需要微调,能够容易找到对应的代码段。
在测试脚本时会发现有些页面的切换时间间隔并不是固定的,有时候会快点,有时候会慢点,这就要求在添加时间间隔(delay)的时候,要填写较长时间作为间隔参数。
忽快忽慢的情况通常出现在和服务器有数据交换的页面,因为这个操作受到网络影响最直接。
比如注册账号过程中的点击“提交注册”按钮,这一步是把页面填写的数据发送给服务器,如果此时网络断开连接了,那么数据就发送不出去,就会卡到这个页面。
类似这种需要和服务器数据交互的页面受网络影响比较大,在填写页面加载的延迟时尽量留出富余量。
这个脚本的代码对新手可能有参考价值的内容,可能是生成随机手机号的部分。
Function RndPhone() Dim adr={"","","","","","","","","","","","","","","","","",""} TracePrint len(adr) Dim line="" For Dim rndnum=int(*rnd()) line=line&rndnum Next TracePrint line RndPhone=adr(int(len(adr)*rnd()))&line End Function
如果你也需要生成随机手机号,可以直接调用这个函数,这种相对通用的功能我会封装成函数,以后在别的脚本中也能直接使用。
大家平时在写脚本的时候也可以这样做,好了本期内容就这些