大家可能会遇到这样的情景:
# 也许你是一个通过App的销售人员,需要不断靠App的点击率来拿利润
# 也许你是一个个人开发者,想要自己写个脚本点击banner广告
# 也许你是一个业务经理,你的API是应用内某模块点击率超过X万次
…………
那么你就可以来看看这篇帖子了。
言归正传
利用bat脚本模拟用户操作,需要用到两点:
①就是adb命令了,adb命令可以用来模拟用户在手机上的操作
②bat语言,就是批处理语言,主要用来进行逻辑处理,跟众多语言语法一样,批处理语言也包括for循环、if语句之类的语法;
一、adb命令
首先我们来介绍模拟用户在手机上操作的adb命令
用法说明:
adb shell input keyevent “value”
usage: input ...
input text <string> //在EditText中输入字符串
input keyevent <key code number or name> //模拟back键、home键、音量键等操作
input tap <x> <y> //模拟点击事件
input swipe <x1> <y1> <x2> <y2> //模拟滑动事件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
看看上面的这四个命令是不是已经满足你日常使用了呢?
先列举 input keyevent 几个比较常用的code值:
input keyevent 3 // Home
input keyevent 4 // Back
input keyevent 19 //Up
input keyevent 20 //Down
input keyevent 21 //Left
input keyevent 22 //Right
input keyevent 23 //Select/Ok
input keyevent 24 //Volume+
input keyevent 25 // Volume-
input keyevent 82 // Menu 菜单
下面来举个栗子:
①你可以先进入到adb shell中,再执行input keyevent "value",如下,看看是不是执行了home键的操作呢:
②你也可以不进入adb shell中,直接执行(在bat脚本中写的时候当然要用这种啦~),如下:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【快速获取想要点击图标像素点的技巧:】想要点击某个button,但是怎么快速获取该button的像素位置呢?
一般Android在[设置--高级设置--开发者选项]中,或者[设置--开发人员选项]中,有“指针位置”这一项,打开该开关
如上图,方框的位置就是你所点击的区域坐标点,注意,原坐标[0, 0]就是手机屏幕的左上角。
还有一点,如果你在屏幕滑动了一段距离,你想知道滑动距离的坐标数值差,也可以看到:
就是上图中的红色数值,[dX, dY]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二、bat语言,批处理语言
1,基础语法
①.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。
②.批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。
③.批处理的编程能力远不如C语言等编程语言,也十分不规范。
④.每个编写好的批处理文件都相当于一个DOS的外部命令,把它所在的目录放到DOS搜索路径(path)中,即可在任意位置运行。
⑤.C:AUTOEXEC.BAT 是每次系统启动时都会自动运行的,可以将每次启动时都要运行的命令放入该文件中。
⑥.大小写不敏感(命令符忽略大小写)
⑦.批处理的文件扩展名为 .bat 或 .cmd。
⑧.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。
2,如何执行批处理文件
新建一个txt文本文件,写完代码之后,保存为XXX.bat文件,然后双击该文件就行~~~
3,先来几个常用的语法:
①注释:Rem或::
②打印个log啥的:echo命令
语法: echo [{on|off}] [message]
③ @命令
表示不显示@后面的命令,(在入侵过程中自然不能让对方看到你使用的命令啦)
@ 与 echo off 相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。
④ title 命令
给cmd窗口设置title
设置前:
⑤ color命令:设置背景及字体颜色
语法: color bf
b 是指定背景色的十六进制数字; f 指定前景颜色(即字体颜色)。
颜色值: 0:黑色 1:蓝色 2:绿色 3:湖蓝 4:红色 5:紫色 6:黄色 7:白色
8:灰色 9:淡蓝 A:淡绿 B:浅绿 C:淡红 D:淡紫 E:淡黄 F:亮白
如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时的颜色。
如果两参数一样,视为无效输入。只有一个参数时,设置字体。
⑥ Pause命令:
可以自己试一下,挺有用的功能,会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续
⑦打开某网站
⑧延时执行下一句语句:
执行该语句,就会延迟执行N-1秒
4,For语句
For语句是比较重要的语法,网上已经有很多人做了各种解释说明,我就不再做重复的轮子了,找了两篇介绍的比较清楚易懂的for语句帖子供大家交流:
http://blog.csdn.net/pigchan/article/details/5066098
http://www.jb51.net/article/17908.htm
5,Set语句
同上,set语句的帖子:http://blog.csdn.net/anye3000/article/details/8443738
6,If语句
if 表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:
① IF
语法: if [not] "参数" == "字符串" 待执行的命令
参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
② if exist
GEQ - 大于或等于
7,Goto语句
语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
指定跳转到标签行,找到标签行后,程序将处理从下一行开始的命令。
label标签的名字可以随便起,但是最好是有意义的,字母前必须加个冒号“:”来表示这个字母是标签。
goto命令就是根据这个冒号来寻找下一步跳到到那里。经常与 if 配合使用,根据不同的条件来执行不同的命令组。
Call 命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后再继续执行原来的批处理,类似于java中的方法调用,还可以传递参数,跟goto语句还是有区别的。
语法: call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
参数: [Drive:][Path] FileName 指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。
调用另一个批处理程序,并且不终止父批处理程序。
如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令。
call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。
请参考如下帖子:http://blog.csdn.net/stpeace/article/details/9041453
三、举个栗子
下面来举个栗子,是一个循环自动登录的功能,从一个文档中,提取用户名、密码,把用户名密码一次输入App的EditText中,最后点击登录。
首先,登录界面如下:
然后呢,我们准备了10条数据,别人给我的时候是存在excel表里的,如下