文章

要正常使用本APP,您需要进行简单的权限配置,具体需要设置的内容在APP中会有提示,并会自动打开设置页面,根据提示设置允许即可。

需要进行的额外设置

小米手机需要进行一项单独设置,否则不能通过命令打开其他APP

设置页面:设置 – 应用设置 – 应用管理 – 知奇手机模拟操作 – 权限管理

请将“后台弹出界面”设置为允许。

会自动提示的设置

无障碍

手动设置页面(以华为手机为例):系统 – 辅助功能 – 无障碍

将页面拉到最下方,会有“下载服务”的应用列表,选择“知奇手机模拟操作”,进入后开启服务并确认

悬浮窗

手动设置页面:系统 – 应用 – 应用管理 – 知奇手机模拟操作

在页面下方找到“显示在其他应用的上层”并允许

忽略电池优化

为了应用能稳定地在后台运行,需要进行电池优化设置,此设置在运行脚本时会进行提示,请选择允许

基本语法

脚本以换行分割,一行一个命令。

每一行以一个命令开始,大部分命令与参数之间用空格分开,参数与参数之间用半角逗号分隔,以换行结束。格式为:命令<空格>参数<逗号>参数……

如:

delay 2000
tap 300,500

目前脚本支持整数(int)以及文本(string)类型,整数值可直接输入,字符串必须以半角双引号包括。

如:

tapByCd 1,"按钮"

目前脚本支持整数以及文本变量,变量命名规则为以$开始的文字,通常使用字母或字母加数字

如:

$abc=100
$str = "变量值"

系统内置了一些常量,您可以直接调用,常量为文本字符串,通常为大写,直接使用,不需要加双引号或$符号

如:

if DISPLAY_WIDTH>1280
……
endIF

您可以在任何位置添加注释,但是必须以双斜线“//”开始,在本行内,“//”之后的所有内容都会被忽略

如:

//我的注释
$abc = 100  //设置变量$abc的值为100 


基本命令

$变量名称 = (int | string)变量值

变量赋值,添加变量并设定其值为,如果变量已存在,则修改其值。

示例:

$a = 30

delete $变量名称

删除指定的变量

示例:

delete $a 

setAppName (string)APP包名

设置要操作的APP包名,有很多其他命令是基于此处设置来实现的,例如打开APP、根据ID或文本的控件操作、判断前台应用

示例:

setAppName com.example.hello

runApp

打开所设置APP包名的APP应用


模拟命令

tap (int) X,(int) Y

点击位置 ,参数X、Y可以为整数或整数范围,整数范围格式如:1-10,将在1和10(包括)之间取一个随机数。在整个语法中,除了指定要求(如精确匹配)之外的所有int型都支持整数范围

示例:

tap 300,500   

tap 300-400,500-550

tapByCd (int) 是否精确匹配,(string)寻找内容

根据文本(content-desc)寻找控件点击,参数一赋值“1”为精确匹配

示例:

tapByCd  1,"搜索" 

tapByText (int) 是否精确匹配,(string) 寻找内容

根据文本(text) 寻找控件点击 ,参数一赋值“1”为精确匹配

示例:

tapByText  1,"搜索"  

tapById (string) 控件ID

根据ID寻找控件并点击

示例: t

apById  "viewId"  

longTap (int) 按下时长,(int) X,(int) Y

长按指定位置

示例:

longTap  2000,100,100

swipe (int)开始X,(int)开始Y,(INT)结束X,(int)结束Y,(int)滑动时长

滑动屏幕

示例:

swipe 10,20,300,400,200

或在范围内随机取值:

swipe 10-20,30,300,400,200-800

paste (string) 文本

在当前界面的第一个输入框粘贴指定文本

示例:

paste "你好"

pasteByCd (string)寻找内容,(string)文本

根据文本(content-desc)判断粘贴文本

示例:

pasteByCd "输入","要粘贴的文本"

pasteByText (string)寻找内容,(string)文本

根据文本(text)判断粘贴文本

示例:

pasteByText "输入","要粘贴的文本"

pasteById (string)控件ID,(string)文本

根据文本控件ID判断粘贴文本

示例:

pasteById  "view1","要粘贴的文本"

流程控制

delay (int)时长

延迟指定的时间(毫秒)

示例:

delay 2000;

或在指定范围内随机延迟:

delay 2000-3000

for (int)循环次数 或 条件表达式

next

循环,可指定次数,或根据条件表达式判断,直到执行到循环尾部标志“next”

示例:

for 10
       ……区块内的代码将被循环执行 
next  
for $i<10
    $i = $i+1
        ……区块内的代码将被循环执行 
next

while 条件表达式

wend

判断循环,根据条件表达式判断,直到执行到循环尾部标志“wend”

示例:

while $i<10
       ……区块内的代码将被循环执行 
wend

break

跳出循环,使循环体不再进行。

必须处于循环区块内

continue

跳到循环尾部,进行下一次循环。

必须处于循环区块内


if (int)参数A 运算符 (int)参数B

……

else

……

endIf

条件判断,目前只支持两个参数的整数型逻辑表达式,支持的符号和优先级顺序为:<(小于)、 >(大于)、 ==(等于)、 !=(不等于)

示例:

if $a>30
         ……条件成立执行的内容 
 else 
         ……条件不成立执行的内容 
 endIf 

或:

if $==$b
         ……条件成立执行的内容 
 endIf 

全局操作

back

按下物理键:返回


home

按下物理键:Home


notify

下拉通知栏


recents

打开最近任务



其他

random (int)最小数,(int)最大数,$变量名

从给定的范围取随机数,并赋值给变量

示例:

random 1,100,$b

checkCurrentApp

检查前台APP是否为设定的APP,如果不是,则进行等待,如果是的话继续执行下一条命令


isCurrentApp $变量名

检查前台APP是否为设定的APP,并将结果写入参数变量,

结果:1.是 0.不是

示例:

isCurrentApp $a

findById (string)ID,$变量名

查找屏幕区域内是否包含指定控件ID,并将结果写入到指定变量

结果:1.包含 0.不包含

示例:

findById "ID",$A

findByText (int) 是否精确匹配 ,(string)寻找内容,$变量名

查找屏幕区域内是否包含指定文本内容(text),并将结果写入到指定变量

结果:1.包含 0.不包含

示例:

findByText 1,"查找内容",$A

findByCd (int) 是否精确匹配 ,(string)寻找内容,$变量名

查找屏幕区域内是否包含指定文本内容(content-desc),并将结果写入到指定变量

结果:1.包含 0.不包含

示例:

findByCd 1,"查找内容",$A 

常量

DISPLAY_WIDTH

DISPLAY_HEIGHT

设备屏幕显示区域宽度

设备屏幕显示区域高度