脚本使用手册
选用适合的脚本语言
1.软件支持三种脚本语言,中控和 autojs(简称 js)和 easyclick(简称 ec):
- 中控脚本(含api)只适合短时简单互动,或实时性要求不高的场合,不需要安装配套 app;
- js 和 ec 适合复杂的操作,都需要装配套 app。ec 比 js 更适合不开无障碍模式操作;
2.本 api 只适用于中控脚本,【执行脚本】api 可以执行预保存的 js 与 ec 相关脚本,js 和 ec 推荐用官方原有的 api 操作
3.实际上只要手机能用的脚本语言都可以选用,本软件支持和不支持的脚本区别仅在于软件支持的脚本语言,可以直接在软件里修改脚本代码,不支持的需要在别的地方修改脚本,执行后没区别。
三、脚本仓库内有简单示例,autojs 和 easyclick 百度上有很多教程,具体请查看对应脚本语言手册
四、脚本手册链接
API命令
编写脚本
面板界面功能未说明部分请参考功能使用的【通用图标按钮说明】。
打开脚本管理
从菜单栏打开
点击软件右上角的【菜单栏】打开【脚本管理】;
从菜单栏打开
点击【工具条】的【扩展按钮】打开【脚本管理】。
创建脚本
新建按钮
2.输入脚本名称、脚本说明(可以省略不写)
3.在内容编辑区输入脚本在内容编辑区按空格键,会出现语句智能提示,可以用鼠标进行选择,滚动鼠标或拖动滚动条可以翻页查看
。当出现语句提示后,可以输关键字,会根据输入的关键字筛选相关语句
。一个脚本语句以回车键换行结束, 即一行一个脚本语句. 如果语句很长, 编辑器会自动显示成多行, 这种属于同一行.
。
4.点击保存按钮完成保存
执行脚本
3种执行方式:
1.在脚本管理器里点击执行按钮执行
2.在【工具条】【脚本管理面板】里点击和脚本相同名称的按钮执行
3.在【工具条】或【菜单栏】的【扩展按钮】里点击和脚本相同名称的按钮执行
停止脚本
2种停止方式:
1.在脚本管理器里点击停止按钮停止脚本
2.在【工具条】【脚本管理面板】里点击【停止脚本】按钮停止
修改脚本及名称
3步完成修改:
1.选择脚本管理器左侧列表里的脚本,列表过多可以用鼠标滚轮或拖动滚动条查看列表内容
2.编辑右侧对应的脚本内容和脚本名称
3.修改完成后按保存按钮进行保存
删除脚本
2步完成删除:
1.选择脚本管理器左侧列表里的脚本
2.点击删除按钮进行删除
录制脚本
4步完成录屏
1.选择要操作的设备,切换到大图模式
2.点击脚本管理器的录制脚本按钮,并切换到主窗口(不要关闭脚本管理器
)
3.在大图模式显示的设备上正常操作,操作的过程会录制下来
4.操作完成后,切换回脚本管理器窗口,点击停止录制脚本按钮后,内容编辑区会自动出现录制的脚本,然后输入脚本名称,进行保存即可。录制的脚本可能需要修改调试后才能使用,比如根据实现情况调整时间,加入循环、判断等,是高效编写脚本的的辅助工具,复杂操作可以分段录制,最后进行组合调试
。
脚本语句
语句格式约定
- 命令格式:如“命令 参数1,,[参数2],,[参数3],,...,,[参数n]
- 参数1:参数1没有在大括号里,表示必需要有的参数
- [参数2]:在大括号里面,表示可以有也可以没有
- [参数3]:在大括号里面,也可以有或没有,但是如果有参数3的情况下,参数2也必须要有,如果需要参数3,但不需要参数2,可以把参数2设置成参数1相同的值
- ,,...,,[参数n]:表示可以有任意多个参数
- ,,: 参数间隔符,当有两个以上的参数时,使用两个逗号,,分隔
- {}:花括号内的所有内容都是属于该语句。所有{和}的后面都要回车换行,
- [[xxx]]:以两个大括号开始和结束的语句是标记语句,执行时会跟据执行情况显示成对应的可变内容。
- //:以//开头的内容是注释说明语句, 是给脚本语句做解释说明/备忘用的, 不会执行, 注释在之后的示例中会经常看到。
- 嵌套:循环、判断、查找语句里可以再使用循环、判断、查找等语句。
- 预留符号:以上出现的符号都是系统指定的符号,除了以上规定的使用方法外,其它地方不能出现该符号,否则可能会出现语法错误。
- 查找区域:查找区域是指在查找判断时,为了提高准确率和效率,只在页面的某块位置进行查找判断。查找区域由左上角坐标和右下角坐标组成一个方形区域。当坐标参数都=0表示查找整个页面,坐标>0是查找指定的区域; 查找和判断一般用于确定当前页面是否是指定操作页面,比如点击了下一页,但因网速或设备卡顿等原因实际没有切换到下一页,这时就需要利用查找、判断某个特征或整页对比来确定是否正确进入了下一页; 查找和判断时尽量选择有明显特征,然后更小的查找区域,可以提高准确度和效率。
- 语句智能提示:尺寸按空格,使用语句的智能提示输入,提高效率和减少语法错误。
参数2、参数3的左上角坐标和参数4、参数5的右下角坐标两个坐标组成一个方形区域,如下图
设备
预置设备 [参数1],,[参数2],,...,,[参数n]
- 描述:1.设置要执行脚本的设备,不受当前选择设备数量和【工具条】上【脚本同步】状态的影响。
2.如果没有此语句,当【工具条】上【脚本同步】状态为同步时,在所有当前选择的设备上执行脚本,如果【脚本同步】状态是不同步,就只在当前主控设备(最后一次鼠标操作的设备)上执行脚本。 3.必须放在脚本的第一行(前面可以有注释语句,但不能有可执行语句)。
- 无参数:无参数时,会弹出分组选择对话框,当选择一个分组时,则该分组里的所有设备都会执行脚本。
- 有参数:有参数时,参数是设备的显示序号(编号),只执行指定编号的设备,每个设备编号以分隔符,,分隔
- [参数1]:设备编号
- [参数2]:设备编号
- [参数n]:设备编号
- 提示: 此语句只能出现1次。
无参数时弹出的分组选择对话框
//示例:选择一个分组,在分组的所有设备上执行点击操作。
预置设备
点击 500,,500,,0
//示例:在设备上2上执行点击操作。
预置设备 2
点击 500,,500,,0
//示例:在设备上1、2、3上执行点击操作。
预置设备 1,,2,,3
点击 500,,500,,0
顺序执行设备 参数1,,[参数2]
- 描述:添加该语句后,多个设备时依次脚本,一个设备执行完成后,再轮到下一个设备。不添加该语句时默认多个设备同时执行脚本,脚本内部的具体执行时间可以使用随机等待来控制。 顺序执行设备语句必须出前在【预置设置之后】或首行
- 参数1:等待时间,单位秒。
- [参数2]:最大等待时间,实际等待时间是参数1和参数2之间任意一个时间,如果省略则等待参数1的时间
- 提示: 此语句只能出现1次。
//示例:按设备依次执行脚本,一个设备完成后,间隔2秒再进行下一个设备。
顺序执行设备 2
//示例:按设备依次执行脚本,一个设备完成后,间隔1到5秒之间任意时间再进行下一个设备。。
顺序执行设备 1,,5
脚本
停止脚本
- 描述:强制停止脚本,脚本正常执行完成后会自动停止,也可以使用此命令来停止脚本。
- 提示: 一般不需要使用,为了使脚本看起来更清晰,可以用在判断语句中。
//示例:停止脚本执行。
停止脚本
设备导航
返回
- 描述:返回上一层,对应设备上的返回键。
//示例:返回上一层。
返回
回主页
- 描述:回到桌面主页,对应设备的HOME键。
//示例:回到桌面主页。
回主页
切换应用
- 描述:显示后台运行或最近打开的应用,可以关闭或切换当前应用窗口,对应设备的菜单键。
//示例:回到桌面主页。
切换应用
点击
点击 参数1,,参数2,,参数3
- 描述:点击一个坐标
- 参数1:坐标x(横向位置)
- 参数2:坐标y(竖向位置)
- 参数3:随机偏移多少个像素,0=不偏移
- 提示: 可以使用查看[工具条]的[区域截屏取坐标颜色]查看坐标, 或打开设备上开发人员选项的指针位置选项查看。
//示例:点击坐标x=500,y=500的位置,不进行偏移。
点击 500,,500,,0
//示例:点击坐标x=200,y=350的位置,随机偏移10像素。
点击 200,,350,,10
等待
等待 参数1,,[参数2],,[参数3]
- 描述:等待时间, 单位毫秒。为了达到更灵活的时间控制,等待时间可以是加减乘除(+-*/)计算表达式
- 参数1:等待时间。
- [参数2]:最大等待时间,实际等待时间是参数1和参数2之间任意一个时间,如果省略则等待参数1的时间
- [参数3]:值"add",在显示等待时间的同时加上前一次的提示消息。有参数3时,必须有参数2,如果不想随机时间,可以把参数2设备成和参数1相同的时间。
- 提示: 等待时间根据实际使用环境确定, 比如等待一个页面的加载, 测试APP加载同一个网页页面, 网速不同等待加载完成的时间也会不同, 而不同设备在同一个网络加载同一个页面的速度也会有差异。
//示例:等待1000毫秒=1秒。
等待 1000
//示例:等待0.5秒。
等待 500
//示例:等待3秒到10秒之间的随机任意时间。
等待 3000,,10000
//示例:等待2秒, 并且在显示等待时间的同时加上前一次的消息内容。
等待 2000,,2000,,add
//示例:等待3秒到10秒之间的随机任意时间, 并且在显示等待时间的同时加上前一次的消息内容。
等待 3000,,10000,,add
滑动
滑动 参数1,,参数2,,参数3,,参数4,,参数5,,参数6
- 描述:从一个坐标滑动到另一个坐标
- 参数1:起始坐标x
- 参数2:起始坐标y
- 参数3:结束坐标x
- 参数4:结束坐标y
- 参数5:随机偏移多少个像素,0=不偏移
- 参数6: 移动时长, 单位毫秒
- 提示: 滑动时长需要根据实际的使用环境确定。一般从几十毫秒到几秒不等
//示例:向下滑动, 不偏移, 滑动时长50毫秒。
滑动 700,,300,,400,,1300,,0,,50
//示例:向右滑动, 不偏移, 滑动时长50毫秒。
滑动 300,,700,,1300,,700,,0,,50
拖动
同[滑动]
- 把滑动时长加长即变成拖动效果
//示例:向右拖动APP图标位置, 不偏移, 滑动时长1秒。
滑动 300,,700,,1300,,700,,0,,1000
滚动
滚动 参数1,,参数2,,参数3,,参数4
- 描述:滚动页面, 在支持滚动效果的页面, 可以达到上下滚动页面或左右滚动页面的效果
- 参数1:滚动停留坐标x
- 参数2:滚动停留坐标y
- 参数3:上滚或下滚(也可以达到左滚右滚的效果)
- 参数4:滚动次数
- 提示: 如果看不到滚动条,但支持滚动功能的页面就可以使用此命令。比如设备有多个桌面, 滚动效果会是左右切换桌面. 上滚和下滚可以达到左滚右滚的效果, 具体对应关系以实际页面环境确定。
//示例:向上滚动2次。
滚动 800,,1000,,上滚,,2
//示例:向下滚动10次。
滚动 800,,1000,,下滚,,10
//示例:向右滚动1次。
滚动 800,,1000,,上滚,,1
//示例:向左滚动2次。
滚动 800,,1000,,下滚,,2
APP操作
启动APP 参数1
- 描述:直接启动APP
- 参数1:包名/Activity
- 提示: APP的包名可以先运行要启动的APP, 然后通过右键画面窗口标题,查看【查看设备信息】查看包名和Activity
//示例:启动设置,包名是com.android.settings,Activity是com.android.settings.Settings。
启动APP com.android.settings/com.android.settings.Settings
关闭APP 参数1
- 描述:直接关闭APP
- 参数1:包名
- 提示: APP的包名可以先运行要启动的APP, 然后通过右键画面窗口标题,查看【查看设备信息】查看包名
//示例:关闭设置。 关闭APP com.android.settings
安装APP 参数1,,参数2
- 描述:直接安装APP
- 参数1:安装包名称,包含完整路径。安装包的扩展名是.apk,文件路径和和文件名称里不能有汉字或括号之类的特殊符号,会导致安装失败,字母、数字、下划线、小数点不会影响安装。
- 参数2: 重装/不重装。则如果设备上已经安装了该APP,设置"重装"会自动卸载重新安装;设置"不重装"则在已安装的设备上会安装失败。因App不同,设备"重装"可能自动卸载而导致安装失败,就需要使用【卸载APP】语句先卸载再安装。
- 提示: 尽量单个设备依次安装,同时安装可能会占用大量资源而导向安装失败。
//示例:安装app,如果已存在就重新安装。 安装APP d:\temp\test0016.pak,,重装
卸载APP 参数1
- 描述:直接卸载APP
- 参数1:包名
- 提示: APP的包名可以先运行要启动的APP, 然后能过[设备菜单][查看设备信息]查看
//示例:卸载测试的app。 卸载APP com.lasttest.test16
输入
输入文本 参数1,,[参数2],,...,,[参数n]
- 描述:要输入的内容,可以除了预留分隔符(2个逗号,,)外的任意内容, 包括中文/英文/数字/符号等
- 参数1:要输入的内容1
- [参数2]:要输入的内容2, 当有2个以上的内容时, 输入时会随机选择一个进行输入
- [参数n]:要输入的内容n
- 提示:可以只有一个参数, 如果有多个参数时, 输入时会随机选择一个进行输入, 参数越多, 随机重复的概率越小。
//示例:输入"苹果"。
输入文本 苹果
//示例:随机输入3种水果的任意一种。
输入文本 香蕉,,苹果,,葡萄
输入数字文本 参数1
- 描述:输入以设备编号为基准的一对一连续数字文本
- 参数1:“设备编号+n”或“设备编号-n”
//示例:在1号设备上输入10,2号设备上输入11,3号设备上输入12。
输入数字文本 设备编号+9
//示例:在1号设备上输入1,2号设备上输入1,3号设备上输入3。
输入数字文本 设备编号+0
//示例:在10号设备上输入1,11号设备上输入2,12号设备上输入3。
输入数字文本 设备编号-9
输入顺序文本
- 描述:顺序输入文本文件或语库里的内容, 要先执行[打开文本文件]语句打开与设备号对应的文本文件, 然后每次按顺序输入一条文件里的内容
- 提示: 文本文件里的内容一行一句, 当回车换行为一行。
示例:文件名是"水果1.txt"的文件里有7句内容
![img](https://ks3-cn-beijing.ksyun.com/webps/attachment/LdRkYsVM0TBrgt5N)
//示例:
//4步在1号设备上输入文件名"水果1.txt"里的前2条内容;
//1.打开文件;
//2.输入第1条内容"香蕉";
//3.等待2秒;
//4.再次输入第2条内容"苹果"。
打开文本文件 水果[[设备序号]].txt
输入顺序文本
等待 2000
输入顺序文本
//4步在1号设备上输入语库"水果"里的任意2条内容;
//1.打开语库;
//2.随机输入1条内容;
//3.等待2秒;
//4.再次随机输入1条内容。
打开语库 [[语库:水果]]
输入顺序文本
等待 2000
输入顺序文本
输入随机文本
- 描述:随机输入文本文件或语库里的内容, 要先执行[打开文本文件]语句打开与设备号对应的文本文件, 然后每次随机输入一条文件里的内容
- 提示: 文本文件里的内容一行一句, 当回车换行为一行。
示例:文件名是"水果1.txt"的文件里有7句内容
//示例:
//4步在1号设备上输入文件名"水果1.txt"里的任意2条内容;
//1.打开文件;
//2.随机输入1条内容;
//3.等待2秒;
//4.再次随机输入1条内容。
打开文本文件 水果[[设备序号]].txt
输入随机文本
等待 2000
输入随机文本
//4步在1号设备上输入语库"水果"里的任意2条内容;
//1.打开语库;
//2.随机输入1条内容;
//3.等待2秒;
//4.再次随机输入1条内容。
打开语库 [[语库:水果]]
输入随机文本
等待 2000
输入随机文本
预置文本
- 描述:之前三种输入文本是在脚本执行前就已经设定好的,不能更改,预置文本可以在脚本执行时弹出文本输入框让其输入内容
- 提示: 预置文本在脚本里只出现1次,要写在预留设备之后一行或在脚本首行位置,并且和[[预置文本]]配合使用, 所有[[预置文本]]的地方都会显示成文本框输入的内容。
预置文本输入框
//示例:执行脚本时,通过预置文本,在文本框里输入”苹果“,则会在设备上输入”苹果熟了“、“1箱苹果”;如果文本框输入”草莓“,则会在设备上输入“草莓熟了”、“1箱草莓”。
预置文本
输入文本 [[预置文本]熟了
等待 2000
输入文本 1箱[[预置文本]
示例同预置文本
文件操作
打开文本文件 参数1
- 描述:打开指定的文本文件。如果是多个设备同时执行,每个设备要对应一个单独的文件,以标志语句[[设备序号]]代替文件名里与设备编号相对应的数字。
- 参数1:文件名,包含完整路径
- 提示: 文本文件是指存放文本内容的文件,文本文件的扩展名一般是是.txt,但是如果是别的扩展名或无扩展名,只要确定内容是文本格式即可。每一条内容一行,回车换行后为一行。
示例文件在电脑上的保存位置如下图
示例:2个文件名是"水果1.txt"、"水果2.txt"的文本文件存在D盘的temp\test6文件夹里
//示例:1号设备读取"水果1.txt",2号设备读取"水果2.txt",选择设备1和2执行即可;如果同时选择了设备3,而没有对应的"水果3.txt",脚本会在设备3上执行出错。
打开文本文件 D:\temp\test6\水果[[设备序号]].txt
//示例:只在设备3上读取"英文单词.txt"。
打开文本文件 D:\temp\test6\英文单词.txt
写入文件 参数1,,参数2
- 描述:把内容写入指定的文本文件。如果是多个设备同时执行,每个设备要对应一个单独的文件,以标志语句[[设备序号]]代替文件名里与设备编号相对应的数字
- 参数1:文件名,包含完整路径
- 参数2:要写入的内容
- 提示:文本文件说明与打开文本文件相同,一次写入的内容会保存成一行,内容不限长度。在调试时可以使用此语句把执行日志写入文件,方便调试。
//示例:在设备1、设备2上把"脚本的执行消息"写入"日志1.log"、"日志2.log"。
写入文件 D:\temp\test6\日志[[设备序号]].log,,[[设备消息]]
//示例:只在设备3上把"马到成功"写入"成语.txt"。
写入文件 D:\temp\test6\成语.txt,,马到成功
删除文件 参数1
- 描述:删除指定的文件,不限制文件类型。如果是多个设备同时执行,每个设备要对应一个单独的文件,以标志语句[[设备序号]]代替文件名里与设备编号相对应的数字
- 参数1:文件名,包含完整路径
- 提示:删除文件时,但要确保文件已经存在,并且没有正在被其它程序使用,否则会删除失败。
//示例:在设备1、设备2上删除删除对应的"日志1.log"、"日志2.log"。
删除文件 D:\temp\test6\日志[[设备序号]].log
//示例:只在设备3上删除"成语.txt"。
删除文件 D:\temp\test6\成语.txt
上传文件 参数1,,参数2
- 描述:把电脑文件上传到设备上。
- 参数1:要上传的文件名,包含完整路径,不限制文件类型。
- 参数2:上传到设备上文件的保存路径及名称。
- 提示: 参数1和参数2的文件路径和和文件名称里不能有汉字或括号之类的特殊符号,会导致安装失败,字母、数字、下划线、小数点不会影响安装。设备上尽量使用公共文件路径,涉及权限的路径可能会失败,具体要以实际设备系统为准。
//示例:把文件"a2.txt"上传到设备的"Download"目录里。
上传文件 D:\temp\test\a2.txt,/sdcard/Download/a2.txt
下载文件 参数1,,参数2
- 描述:把电脑文件上传到设备上。
- 参数1:要下载到电脑的文件名,包含完整路径,不限制文件类型。
- 参数2:下载后文件在到电脑上的保存路径及名称。
- 提示: 参数1和参数2的文件路径和和文件名称里不能有汉字或括号之类的特殊符号,会导致安装失败,字母、数字、下划线、小数点不会影响安装。设备上尽量使用公共文件路径,涉及权限的路径可能会失败,具体要以实际设备系统为准。
//示例:把设备上"Download"目录里的"a2.txt"文件下载到电脑,并给修改了文件名称。
下载文件 /sdcard/Download/a2.txt,,d:\temp\test\a2_[[设备序号]].txt
循环
循环 参数1,,{参数2} 次{ 参数3 }
- 描述:要重复多次的操作,可以使用循环。
- 参数1:要循环的次数,比如循环5次
- 参数2:最大循环次数,可省略,和参数1配合使用,表示循环次数是参数1和参数2之间的任意次数
- 参数3:要循环的脚本语句
- 提示: 注意循环次数的控制,如果需要强制停止循环时,可以使用【停止脚本】功能。如果要执行不确定次数的循环,可以把循环次数设置成大数据,比如999999
循环语句的两个花括号后都要回车换行,如下图
//示例:每隔2秒点击1次,一共点击10次。
循环10次{
点击 500,,500,,0
等待 2000
}
//示例:每隔2秒点击1次位置a,并且点击10次位置b,一共循环5到10之间的任意次数。
循环5,,10次{
点击 500,,500,,0
等待 2000
循环10次{
滑动 700,,700,,0
等待 1000
}
}
语库操作
打开语库 [[语库:参数1]]
- 描述:打开快捷语里指名称的语库,供【输入顺序文本】或【输入顺序文本】命令使用。
- 参数1:语库名称
- 提示: 语库功能参考快捷语教程。
//示例:打开叫水果名称的语库,然后输入把水果名称里的内容输入到设备上。
打开语库 [[语库:水果名称]]
输入顺序文本
打开配对语库 [[语库:参数1]]
- 描述:打开快捷语里指名称的语库,语库里的每条内容都要求有对应的设备号,格式为:<设备编号#>内容 ;; ;编号可以是任意顺序,也可以重复。供【输入顺序文本】或【输入顺序文本】命令使用。
- 参数1:语库名称
- 提示: 语库功能参考快捷语教程,。
//示例:打开叫水果名称的语库,然后输入把水果名称输入到对应的设备上。
//语库里的具体内容格式为:<设备编号#>内容,编号可以是任意顺序,也可以重复,如:
//<1#>苹果
//<2#>香蕉
//<3#>草莓
打开配对语库 [[语库:水果名称]]
输入顺序文本
标记语句
[[预置文本]]
- 描述:[[预置文本]]文本在预置文本之后使用,会把预置文本输入框里输入的文本显示在所有[[预置文本]]的地方。参见【预置文本】
- 提示:预置文本只能使用1次,而[[预置文本]]可以使用任意次。
//示例:执行脚本时,通过预置文本,在文本框里输入”苹果“,则会在设备上输入”苹果熟了“、“1箱苹果”;如果文本框输入”草莓“,则会在设备上输入“草莓熟了”、“1箱草莓”。
预置文本
输入文本 [[预置文本]熟了
等待 2000
输入文本 1箱[[预置文本]
[[设备编号]]
- 描述:会把当前执行的设备编号(序号)显示在所有[[设备编号]]的地方。
- 提示: 可以使用任意次,如果读取的文件名里有此标记,需要确保执行设备对应编号的文件是存在的,不然会出错。
/示例:1号和2号设备执行脚本后,分别读取的是"水果1.txt"和"水果2.txt",如果在设备3上执行,而没有对应的"水果3.txt",脚本会出错。
打开文本文件 D:\temp\test6\水果[[设备编号]].txt
[[设备标题]]
- 描述:会把当前执行的设备标题显示在所有[[设备标题]]的地方。
- 提示: 可以使用任意次,如果读取的文件名里有此标记,需要确保执行设备对应编号的文件是存在的,不然会出错。
/示例:1号和2号设备的标题分别是苹果和香蕉,执行脚本后,读取的是"苹果.txt"和"香蕉.txt",如果其它设备也有相同标题,也会读取对应文件。
打开文本文件 D:\temp\test6\水果[[设备标题]].txt
[[设备DeviceId]]
- 描述:会把当前执行的设备序列号显示在所有[[设备DeviceId]]的地方。
- 提示: 可以使用任意次。
/示例:1号和2号设备执行脚本后,把当前脚本执行日志写入"日志_s96saf56sad8fwwe5f2sd.log"和"日志_w01das118fsok5.log"里。
写入文件 D:\temp\test6\日志_[[设备DeviceId]].log,,[[设备消息]]
[[GUID]]
- 描述:把全局唯一标识符(即不会产生重复的字符串)显示在所有[[GUID]]的地方。
- 提示: 可以使用任意次。
/示例:1号和2号设备的序列号分别是"s96saf56sad8fwwe5f2sd"、"w01dsassa11d8fsok5",执行脚本后,把当前脚本执行日志写入"日志_6398A9817471301EF82620276A4B0238.log"和"日志_9E905C5CCCD99EE32FF8383914D2E6B6.log"里。
写入文件 D:\temp\test6\日志_[[设备ID号]].log,,[[设备消息]]
[[设备消息]]
- 描述:会把当前设备执行脚本的日志显示在所有[[设备消息]]的地方。
- 提示: 可以使用任意次。
/示例:1号和2号设备执行脚本后,把当前脚本执行日志写入是"日志1.log"和"日志1.log"里。
写入文件 D:\temp\test6\日志[[设备序号]].log,,[[设备消息]]
[[日期]]
- 描述:会把当前日期显示在所有[[日期]]的地方,22年3月1日显示格式:20220301
- 提示: 可以使用任意次。
/示例:输入当前日期。
输入文本 [[日期]]
[[时间]]
- 描述:会把当前时间显示在所有[[时间]]的地方,15点16分30秒在文本位置显示格式:为15:16:30;在不能有特殊字符的地方显示格式为:131630,如文件名
- 提示: 可以使用任意次。
/示例:输入当前时间。
输入文本 [[时间]]
[[日期时间]]
- 描述:会把当前日期时间显示在所有[[日期时间]]的地方,22年3月1日15点16分30秒在文本位置显示格式:为20220301_15:16:30;在不能有特殊字符的地方显示格式为:20220301_131630,如文件名
- 提示: 可以使用任意次。
/示例:输入当前日期时间。
输入文本 [[日期时间]]
消息
消息 参数1
- 描述:显示在每个设备窗口底部的提示消息,所有设备消息都显示在设备自己窗口的底部,互不干扰。当鼠标经过消息位置时,消息会自动消失。
- 参数1:显示的消息内容
- 提示: 显示的消息会被下一条消息所覆盖,如是需要消息停留的时间长一些,可以在消息后加一个语句,如“等待 5000,,5000,,add”。
消息显示位置如下图
//示例:显示消息"启动设置",并显示5秒后被其它消息替代。
消息 启动设置
等待 5000,,5000,,add
全局消息 参数1,,参数2
- 描述:显示全局消息,所有设备上的消息都统一显示在主窗口右上角位置。
- 参数1:消息类型:i=提示消息,w=警告消息,e=错误消息。i和w消息停留3秒后自动消失,e消息不会消失,需要鼠标移动到消息框上点击关闭按钮。
- 参数2:显示的消息内容
- 提示: 要显示全局消息时,可以加上标记语句[[设备序号]],方便知道是哪个设备发出的消息。
消息显示位置如下图
错误消息的关闭按钮
//示例:多个设备执行时,提示"启动完成",比如"1号设备启动完成"、"2号设备启动完成"。
全局消息 i,,[[设备序号]]号设备启动完成
消息框长宽和位置 参数1,,参数2,,参数3,,参数4
- 描述:设备窗口提示消息框的大小和位置,默认在设备窗口底部。
- 参数1:消息框的宽度,不要超要当前设备窗口的宽度
- 参数2:消息框的高度,不要超过当前设备窗口的高度
- 参数3:消息框与设备窗口左边的距离
- 参数4:消息框与设备窗口顶部的距离
- 提示: 当默认的显示大小和位置不满足查看需要时,可以用此调整。设备窗口尺寸可以查看【菜单栏】【系统设置】里的宽度设置,或【设备菜单】【查看设备信息】里的显示分辨率
//示例:加大消息框并显示在设备窗口顶部,假设设备窗口宽度是200,把消息框设置成宽180,高200,左边距10,顶边距20像素。
消息框长宽和位置 180,,200,,10,,50
消息最大显示字数 参数1
- 描述:设备窗口提示消息的最大显示字数。
- 参数1:显示的最大字数,超过这个数字会自动截取。
- 提示: 当消息字数超消息框的大小时,会出现显示不会的情况,可以通过此语句控制过长消息的显示长度或通过【消息框长宽和位置】加大消息框的宽高来处理。
//示例:把显示的消息控制在25字之内。
消息最大显示字数 25
消息显示时长 参数1
- 描述:设备窗口内显示的提示消息会在指定时间后自动消失。
- 参数1:消息提示框停留的时间,单位毫秒,为0时不自动消失。
//示例:提示消息在5秒后消失。
点击 500,,500,,0
等待 3000,,3000,,[add]
消息显示时长 5000
数据采集
写入表格 参数1,,参数2,,[参数3],,[参数4],,...,,[参数2]
- 描述:通过xpath求值表达式,把当前页面的数据保存到到数据表里,一个表达对应一项数据(即一列),一行对应一个页面数据。完成后可以通过【表格数据管理】导出到Excel。
- 参数1:存放数据的文件名,系统会自动添加扩展名,单个设备或多个设备的数据都保存在这同一个数据文件里,在记录数据时,会自动记录设备号进行区分。
- 参数2:列名1及对应xpath求值表达式1,列名和xpath表达以双等号==分隔,写做"列名1==xpath表达式1",可以通过【菜单栏】【UI界面调试】获取xpath求值表达式,然后根据实际情况进行测试调整,也可以直接根据xpath语法进行测试调整。
- [参数3]:列名2及对应xpath求值表达式2
- [参数4]:列名3及对应xpath求值表达式3
- [参数n]:列名n及对应xpath求值表达式n
- 提示: 由于页面结构差异性很大,有可能出现采集失败的情况,当出现失败时,需要尝试多种方案配合使用。
保存后的数据格式示例,一个行对应一个页面的所有数据,一行里的一列对应一个xpath表达式取的数据。
//示例:把采集的所有数据保存到数据文件"data"里,页面的所有元素文本内容对应第1列"内容1",页面所有元素资源id对应第2列"资源2"的列,页面所有元素坐标对应第3列"坐标3",总共采集10个页面,每采集完1个页面后点击下一页并等待2秒。
循环10次{
写入表格 d:\temp\testexel\data,,内容1==//node/@text,,资源2==//node/@resource-id,,坐标3==//node/@bounds
点击 800,,1700,,0
等待 2000
}
查找
查找图片 参数1,,参数2,,参数3,,参数4,,参数5,,参数6,,参数7,,{ 包含{ 参数8 } 不含{ 参数9 }};
- 描述:判断当前页面里是否有和指定图片一样的地方。
- 参数1:要和当前页面对比的图片文件名,需要完整路径。图片像素可以和当前页面像素相同,或小于当前页面,但不能大于当前页面。对比图片可以通过【工具条】【截全屏】和【区域截屏取坐标颜色】获取,也可以是其它任何图像。
- 参数2:查找区域左上角坐标x值
- 参数3:查找区域左上角坐标y值
- 参数4:查找区域右下角坐标x值
- 参数5:查找区域右下角坐标y值
- 查找区域:详见【语句格式约定】
- 参数6:对比的相似度(百分比),可以0-100的数,100表示100%一样才能判定为包含(即找到),90表示90%以上的相似度就判定为包含,图像处理会有误差,推荐85%或90%,以实际测试效果为准。
- 参数7:输入"点击"或"不点击",点击是指当包含相同图片时,就在该图片的位置执行点击操作。
- 参数8:当判定包含时,要执行的其它脚本语句
- 参数9:当判定不包含时,要执行的其它脚本语句
- 提示:查找时尽量缩小查找区域,多尝试不同的相似度。
//示例:在当前整个页面里查找和图片abc相同的地方,只要85%相似就算包含有相同的地方,然后点击这个相信的位置。当判定包含时就提示"找到了相同的图片",判定不包含时提示"没找到图片"。
查找图片 d:\abc\abc.jpg,,0,,0,,0,,0,,85,,点击{
包含{
消息 找到了相同的图片
}
不含{
消息 没找到了图片
}
}
//示例:在当前页面中间区域里查找和图片abc相同的地方,只要90%相似就算包含有相同的地方,然后不用点击操作。当判定包含时就提示"找到了相同的图片",判定不包含时提示"没找到图片"。
查找图片 d:\abc\abc.jpg,,300,,500,,900,,1200,,90,,不点击{
包含{
消息 找到了相同的图片
}
不含{
消息 没找到了图片
}
}
查找颜色 参数1,,参数2,,参数3,,参数4,,参数5,,参数6,,参数7,,{ 包含{ 参数8 } 不含{ 参数9 }};
- 描述:判断当前页面里是否包含指定的颜色。
- 参数1:要和当前页面对比的颜色值。颜色值通过【工具条】【区域截屏取坐标颜色】或【UI界面测试】获取,也可以利用其它方式取值。
- 参数2:查找区域左上角坐标x值
- 参数3:查找区域左上角坐标y值
- 参数4:查找区域右下角坐标x值
- 参数5:查找区域右下角坐标y值
- 查找区域:详见【语句格式约定】
- 参数6:对比的相似度(百分比),可以0-100的数,100表示100%一样才能判定为包含(即找到),90表示90%以上的相似度就判定为包含,图像处理会有误差,推荐85%或90%,以实际测试效果为准。
- 参数7:输入"点击"或"不点击",点击是指当包含相同颜色时,就在该颜色的位置执行点击操作。
- 参数8:当判定包含时,要执行的脚本语句
- 参数9:当判定不包含时,要执行的脚本语句
- 提示: 查找时尽量缩小查找区域,多尝试不同的相似度。
//示例:在当前整个页面里查找纯白色,只要一个地方白色有85%相似就算包含,然后点击这个位置。当判定包含时就提示"找到了白色按钮",判定不包含时提示"没找到白色按钮"。
查找颜色 #ffffff,,0,,0,,0,,0,,85,,点击{
包含{
消息 找到了白色按钮
}
不含{
消息 没找到白色按钮
}
}
//示例:在当前页面右下角查找纯红色,只要90%相似就算包含有相同的地方,然后不用点击操作。当判定包含时就提示"找到了红色按钮",判定不包含时提示"没找到红色按钮"。
查找颜色 #FF0000,,800,,1700,,1080,,1920,,90,,不点击{
包含{
消息 找到了红色按钮
}
不含{
消息 没找到红色按钮
}
}
判断
判断文本 参数1,,参数2,,参数3,,参数4,,参数5,,参数6,,参数7,,{ 相同{ 参数8 } 不同{ 参数9 }};
- 描述:判断当前页面里是否有和指定内容相同的地方,相同是指页面上单的一句话、一个词语做为一个单位和指定内容进行相同比较,比如一个按钮的名称"水果"和要判断内容"果"是不相同的,结果就判定为不相同。
- 参数1:要判断的内容。
- 参数2:查找区域左上角坐标x值
- 参数3:查找区域左上角坐标y值
- 参数4:查找区域右下角坐标x值
- 参数5:查找区域右下角坐标y值
- 查找区域:详见【语句格式约定】
- 参数6:页面上可能有多个相同内容的地方,这里指定点击第n个结果的位置,值是单个数字或以-号间隔的数字区间; 单个数字,如1:点击第1个相同内容的位置; 数字区间如2-8:循环点击找到的第2个到第8个相同内容的位置,比如列表,当点击一次后会执行判断结果里的语句,判断结果语句执行完成后,再次点击下一个位置。
- 参数7:输入"点击"、"循环点击"或"不点击"。"不点击"时,参数6不起作用,单数字或数字区间都可以;"点击时"参数6是单个数字;"循环点击"时参数6需要数字区间。
- 参数8:当判定相同时,要执行的脚本语句
- 参数9:当判定不同时,要执行的脚本语句
- 提示: 查找时尽量缩小查找区域,推荐优先选用此相同语句,当多次尝试判断失败时,再使用判断文本的包含语句,判断文本包含语句有多种处理方式。
//示例:判断当前整个页面是否有单独"水果"这个词的地方,然后点击这个1个找到的位置。如果找到了就提示"找到了水果",没找到就提示"没有水果"。
判断文本 水果,,0,,0,,0,,0,,1,,点击{
相同{
消息 找到了水果
}
不同{
消息 没有水果
}
}
//示例:判断页面的指定区域是否有单独"水果"这个词的地方,然后从第2个位置开始点击进入下一页,并执行相同结果里的语句:等待2秒、点击下一页里的测试按钮、等待1秒、返回到判断页面;再次点击第3个位置继续上述操作,直到点击完第9个位置并执行相同结果里的语句。
判断文本 水果,,200,,300,,1000,,1100,,2-9,,循环点击{
包含{
等待 2000
//点击下一页里的测试试按钮位置
点击 500,,500,,0
等待 1000
返回
}
不含{
消息 没找到内容
}
}
判断文本 参数1,,参数2,,参数3,,参数4,,参数5,,参数6,,参数7,,{ 包含{ 参数8 } 不含{ 参数9 }};
- 描述:判断当前页面里是否包含指定的内容,包含是指页面上单的一句话、一个词语做为一个单位和指定内容进行包含比较。比如一个按钮的名称"水果"包含了要判断内容的"果"字,结果就判定为包含。
- 参数1:要查找的内容。
- 参数2:查找区域左上角坐标x值
- 参数3:查找区域左上角坐标y值
- 参数4:查找区域右下角坐标x值
- 参数5:查找区域右下角坐标y值
- 查找区域:详见【语句格式约定】
- 参数6:值是单个数字,指定有n个地方包含指定内容,才判定为包含。
- 参数7:7种判断包含文本的处理方式,分别对应数字0、1、2、3、4、5、6; 6处理时间最长,准确率最高,不同方式处理效率、准确率受实际页面影响,需要多种尝试,达到最佳效果; 推荐尝试顺序5、0、1、2、3、4、6
- 参数8:当判定包含时,要执行的脚本语句
- 参数9:当判定不含时,要执行的脚本语句
- 提示: 查找时尽量缩小查找区域,推荐优先选用判断文本的相同语句,当多次尝试判断失败时,再使用此包含语句。
//示例:使用类型5判断当前整个页面是否包含"水果"2个字,如果有1个地方包含就判定包含。如果包含就提示"发现了水果",不包含就提示"没有水果"。
判断文本 水果,,0,,0,,0,,0,,3,,6{
包含{
消息 发现了水果
}
不含{
消息 没有水果
}
}
//示例:使用类型6判断当前页面指定区域是否包含"水果"2个字,需要有3个地方包含才判定包含。如果包含就提示"发现了水果",不包含就提示"没有水果"。
判断文本 水果,,100,,150,,900,,1000,,3,,6{
包含{
消息 发现了水果
}
不含{
消息 没有水果
}
}
判断元素 参数1,,参数2,,参数3{ 存在{ 参数4 } 不存在{ 参数5 }};
- 描述:在当前页面使用xpath表达式查找元素,找到了就判定存在。
- 参数1:xpath元素表达式,xpath表达式不限类型,表达式写成相同或包含都可以。可以使用【菜单栏】【UI界面调试】的自动生成表达及【测试表达式】功能进行快速测试。
- 参数2:页面上可能有多个相同内容的地方,这里指定点击第n个结果的位置,值是单个数字或以-号间隔的数字区间; 单个数字,如1:点击第1个相同内容的位置; 数字区间如2-8:循环点击找到的第2个到第8个相同内容的位置,比如列表,当点击一次后会执行判断结果里的语句,判断结果语句执行完成后,再次点击下一个位置。
- 参数3:输入"点击"、"循环点击"或"不点击"。"不点击"时,参数6不起作用,单数字或数字区间都可以;"点击时"参数6是单个数字;"循环点击"时参数6需要数字区间。
- 参数4:当判定存在时,要执行的脚本语句
- 参数5:当判定不存在时,要执行的脚本语句
- 提示: 查找时尽量缩小查找区域,推荐优先选用判断文本的相同语句,当多次尝试判断失败时,再使用此包含语句。
//示例:判断当前页面是否存在"设备"这个元素,存在就点击该元素,存在和不存在的花括号里不输入其它语句就表示不做其它操作
判断元素 /hierarchy[1]/node[1]/node[3][@text='设置'],,1-10,,点击{
存在{
}
不存在{
}
}
//示例:判断当前页面所有node节点的text属性否含"果"字的元素,然后从第2个位置开始点击进入下一页,并执行存在结果里的语句:等待2秒、点击下一页里的测试按钮、等待1秒、返回到判断页面;再次点击第3个位置继续上述操作,直到点击完第9个位置并执行存在结果里的语句。
判断文本 //node[contains(@text,'果')],,2-9,,循环点击{
存在{
等待 2000
//点击下一页里的测试试按钮位置
点击 500,,500,,0
等待 1000
返回
}
不存在{
消息 没找到元素
}
}
判断设备号 参数1,,[参数2],,[参数3],,[参数n]{ 包含{ 参数4 } 不含{ 参数5 }};
- 描述:在判断当前执行窗口是否是的设备号。
- 参数1:设备号1。
- 参数2:设备号2,可省略;
- 参数n:设备号n,可省略;
- 提示: 判断设备号可以在同一脚本中让不同设备执行不同的操作。
//示例:判断当前执行窗口是不是2号或3号窗口,是就点击指定位置后返回,不是就立即返回
判断设备号 2,,3{
包含{
点击 500,,500,,0
等待 1000
返回
}
不含{
返回
}
}
截屏
截屏 参数1
- 描述:截取当前设备窗口的屏幕画面,清晰度根据当前设备的分辨率确定,如果要截取原图请开大图高清画质或使用adb命令。
- 参数1:文件名,包含完整路径,扩展可以是.jpg或.png。
- 提示:操作时, 请确保指定位置没有相同的文件名存在,否则图像会保存失败。
//示例:把设备窗口当前图像保存成图片文件1.jpg。
截屏 d:\abc\1.jpg
其它操作
执行 重启
- 描述:重启设备。
//示例:重启设备。
执行 重启
执行 打开Wifi
- 描述:打开wifi开关,不同设备系统权限不同,可能会有权限确认提示。
//示例:打开wifi开关。
执行 打开Wifi
执行 关闭Wifi
- 描述:打开wifi开关。
//示例:关闭wifi开关。
执行 关闭Wifi
执行 展开通知栏
- 描述:展开设备顶部的通知栏,不同设备系统会有差异。
//示例:展开通知栏。
执行 展开通知栏
执行 展开通知栏
- 描述:收起备顶部的通知栏,不同设备系统会有差异。
//示例:收起通知栏。
执行 收起通知栏
adb命令
adb语句
- 描述:此处adb语句指针对具体设备的操作(即在多设备时在cmd下需要-s xxxxx的语句,这脚本里省略不加-s xxxxx)。
//示例:返回主页。
adb shell input keyevent HOME
//示例:清除testAPP缓存。
adb shell pm clear com.testcom.test
按键操作
连续按键 参数1
- 描述:连续按键,
- 参数1:按键内容,可输入字符为英文字母、数字,英文符号(./![]+-*=_^%$#|等)。
- 提示:操作时, 请确保指定位置没有相同的文件名存在,否则图像会保存失败。
//示例:输入[hello] 。
连续按键 [hello]
连续删除 参数1
- 描述:删除字符,相当于退格键。
- 参数1:要删除的字符个数。
//示例:删除10个字符。
连续删除 10
按键操作
- 描述:具体按钮查看示例清单,不同设备系统效果不同,以实际调试为准。。
//按钮操作语句清单
按0键
按1键
按2键
按3键
按4键
按5键
按6键
按7键
按8键
按9键
按*键
按#键
按A键
按B键
按C键
按D键
按E键
按F键
按G键
按H键
按I键
按J键
按K键
按L键
按M键
按N键
按O键
按P键
按Q键
按R键
按S键
按T键
按U键
按V键
按W键
按X键
按Y键
按Z键
按,键
按.键
按左软键
按右软键
按拨号键
按挂机键
按上导航键
按下导航键
按左导航键
按右导航键
按确定键
按音量增加键
按音量减小键
按电源键亮屏熄屏
按拍照键
按Clear键
按左Alt键
按右Alt键
按左Shift键
按右Shiftt键
按Tab键
按空格键
按回车键
按退格键
按`键
按-键
按=键
按[键
按]键
按\键
按;键
按'键
按/键
按@键
按Num控制键
键拍照对焦键
按+键
按菜单键
按通知键
按搜索键
按多媒体键播放暂停
按多媒体键停止
按多媒体键下一首
按多媒体键上一首
按多媒体键快退
按多媒体键快进
按话筒静音键
按向上翻页键
按向下翻页键
按游戏手柄按钮A键
按游戏手柄按钮B键
按游戏手柄按钮C键
按游戏手柄按钮X键
按游戏手柄按钮Y键
按游戏手柄按钮Z键
按游戏手柄按钮L1键
按游戏手柄按钮R1键
按游戏手柄按钮L2键
按游戏手柄按钮R2键
按LeftThumbButton键
按RightThumbButton键
按游戏手柄按钮Start键
按游戏手柄按钮Select键
按游戏手柄按钮Mode键
按ESC键
按删除键
按左Ctrl键
按右Ctrl键
按大写锁定键
按滚动锁定键
搂BreakPause键
按光标移动到开始键
按光标移动到末尾键
按插入键
按Forward键
按多媒体键播放键
按多媒体键暂停键
按多媒体键关闭键
按多媒体键弹出键
按多媒体键录音键
按F1键
按F2键
按F3键
按F4键
按F5键
按F6键
按F7键
按F8键
按F9键
按F10键
按F11键
按F12键
按小键盘锁键
按小键盘0键
按小键盘1键
按小键盘2键
按小键盘3键
按小键盘4键
按小键盘5键
按小键盘6键
按小键盘7键
按小键盘8键
按小键盘9键
按小键盘/键
按小键盘*键
按小键盘-键
按小键盘+键
按小键盘.键
按小键盘,键
按小键盘回车键
按小键盘=键
按小键盘(键
按小键盘)键
按扬声器静音键
按放大键
按缩小键
按TV键
按Window键
按Guide键
按DVR键
按Bookmark键
按Togglecaptions键
按Settings键
按游戏手柄按钮1键
按游戏手柄按钮2键
按游戏手柄按钮3键
按游戏手柄按钮4键
按游戏手柄按钮5键
按游戏手柄按钮6键
按游戏手柄按钮7键
按游戏手柄按钮8键
按游戏手柄按钮9键
按游戏手柄按钮10键
按游戏手柄按钮11键
按游戏手柄按钮12键
按游戏手柄按钮13键
按游戏手柄按钮14键
按游戏手柄按钮15键
按游戏手柄按钮16键
按剪切键
按复制键
按粘贴键