Android手机上,利用bat脚本模拟用户操作 |
您所在的位置:网站首页 › 手机运行的脚本是什么 › Android手机上,利用bat脚本模拟用户操作 |
转载自:http://blog.csdn.net/up7cr/article/details/50577559
大家可能会遇到这样的情景: # 也许你是一个通过App的销售人员,需要不断靠App的点击率来拿利润 # 也许你是一个个人开发者,想要自己写个脚本点击banner广告 # 也许你是一个业务经理,你的API是应用内某模块点击率超过X万次 ………… 那么你就可以来看看这篇帖子了。 言归正传 利用bat脚本模拟用户操作,需要用到两点: ①就是adb命令了,adb命令可以用来模拟用户在手机上的操作 ②bat语言,就是批处理语言,主要用来进行逻辑处理,跟众多语言语法一样,批处理语言也包括for循环、if语句之类的语法;
一、adb命令 首先我们来介绍模拟用户在手机上操作的adb命令 input keyevent //发送键盘事件 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~用法说明: adb shell input keyevent “value” usage: input ... input text //在EditText中输入字符串 input keyevent //模拟back键、home键、音量键等操作 input tap //模拟点击事件 input swipe //模拟滑动事件 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 看看上面的这四个命令是不是已经满足你日常使用了呢?
先列举 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键的操作呢: [html] view plain copy ![]() [html] view plain copy ![]() ![]() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 【快速获取想要点击图标像素点的技巧:】想要点击某个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或:: [html] view plain copy ![]() 语法: echo [{on|off}] [message] 1), ECHO [message] 显示信息,此句可以用来打log,例子如下: 默认是on,on时会显示如下 如果改成off,off时会显示如下 3), ECHO 显示当前回显设置。 [html] view plain copy ![]() ![]() 表示不显示@后面的命令,(在入侵过程中自然不能让对方看到你使用的命令啦) @ 与 echo off 相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。 [plain] view plain copy ![]() ④ title 命令 给cmd窗口设置title [plain] view plain copy![]() ⑤ 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...的提示,等待用户按任意键后继续 ⑦打开某网站 [plain] view plain copy![]() ![]() 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表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号) [plain] view plain copy![]() ![]() ![]() ![]() ![]() GEQ - 大于或等于
7,Goto语句 语法:goto label (label是参数,指定所要转向的批处理程序中的行。) 指定跳转到标签行,找到标签行后,程序将处理从下一行开始的命令。 label标签的名字可以随便起,但是最好是有意义的,字母前必须加个冒号“:”来表示这个字母是标签。 goto命令就是根据这个冒号来寻找下一步跳到到那里。经常与 if 配合使用,根据不同的条件来执行不同的命令组。 [plain] view plain copy![]() Call 命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后再继续执行原来的批处理,类似于java中的方法调用,还可以传递参数,跟goto语句还是有区别的。 语法: call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] 参数: [Drive:][Path] FileName 指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。 调用另一个批处理程序,并且不终止父批处理程序。 如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令。 call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。 [plain] view plain copy![]() 请参考如下帖子:http://blog.csdn.net/stpeace/article/details/9041453
三、举个栗子 下面来举个栗子,是一个循环自动登录的功能,从一个文档中,提取用户名、密码,把用户名密码一次输入App的EditText中,最后点击登录。 首先,登录界面如下:
然后呢,我们准备了10条数据,别人给我的时候是存在excel表里的,如下
![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |