工具下载

官网地址

连接模拟器

studio连接

首先要先下载ADB模拟器连接IDE,注意,这里一定要用官网提供的ADB,安卓开发的adb不行!!!

下载好之后,打开studio,输入Access Key按照下面步骤执行

android底层通过指令触摸屏幕 安卓触屏测试代码_lua

如果出现以下这种情况重复执行上面步骤

android底层通过指令触摸屏幕 安卓触屏测试代码_数据库_02

第一步,先进入到下载的目录下执行 adb connect 127.0.0.1:7555

运行完用adb devices查看是否连接,如果出现offline要断开重连,断开语句adb disconnect 127.0.0.1:7555

android底层通过指令触摸屏幕 安卓触屏测试代码_剪贴板_03

第二步,执行显示nLog日志.bat,然后执行执行连接编辑器.bat

android底层通过指令触摸屏幕 安卓触屏测试代码_shell_04

第三步,安卓端运行触动精灵

常用模拟器端口号

android底层通过指令触摸屏幕 安卓触屏测试代码_shell_05

注意:mumu模拟器默认为横屏,可以通过设置屏幕为720*1080来实现竖屏

android底层通过指令触摸屏幕 安卓触屏测试代码_数据库_06

查看官网连接模拟器

在设备一栏中新增127.0.0.1,然后右击连接

android底层通过指令触摸屏幕 安卓触屏测试代码_shell_07

连接成功标示

android底层通过指令触摸屏幕 安卓触屏测试代码_shell_08

这里注意把虚拟机时间设为网络同步。

拾色器

连接好Studio后,连接拾色器,输入127.0.0.1:50005,注意这里一定要为50005!!!连接成功后窗口消失。点击抓图即可。

android底层通过指令触摸屏幕 安卓触屏测试代码_shell_09

颜色比对常用api

拾色器快捷键

常用快捷键

  • `(数字1左边那个键)
    取一点颜色到剪贴板,取色后直接可以粘贴,默认情况下,该操作不会有可视化表现
  • 数字键(1 2 3 4 5 6 7 8 9 0)
    多点取色到剪贴板,以上十个数字键分别取 10 点色,取色之后直接 Ctrl + V 即可把取好的点色粘贴到脚本中
  • Shift + (1 2 3 4 5 6 7 8 9 0)
    清除相应位置的点色信息(会重置剪贴板中的内容)
  • 方向键(↑ ↓ ← →)
    移动鼠标指针定位 1 个像素
  • Shift + 光标键(↑ ↓ ← →)
    移动鼠标指针定位 10 个像素
  • Ctrl + 光标键(↑ ↓ ← →)
    移动鼠标指针定位 100 个像素
  • 回车键
    取色到剪贴板的第一个空白位置(如果没有空白位置则不会取色)
  • Ctrl + 鼠标左键-点击
    与上一条 回车键 功能一样
  • -
    缩小视图
  • =
    放大视图
  • R
    刷新列表中的已有坐标的颜色并使用简易标签于图像上标出相应的位置
  • W
    把取色列表重新写入剪贴板

其他快捷键

模拟点击事件

用取色器获取某个点的坐标,模拟点击按钮,代码如下



init(0)  --初始化(0,0)坐标
mSleep(3*1000)  --睡眠三秒,防止坐标没初始化好
--[[模拟点击事件]]--
touchDown(1080,582)  -- 点下某个像素点
mSleep(20)  -- 睡眠20ms
touchUp(1080,582)   --  从像素点上抬起抬起



智能找色脚本

用到findMultiColorInRegionFuzzy方法,即区域多点找色

android底层通过指令触摸屏幕 安卓触屏测试代码_android底层通过指令触摸屏幕_10

 游戏:萌犬变变变

首先用颜色拾取器将箱子的三个点取下来(相当于识别物体),然后按住shift框选识别区域。点击生成脚本,复制最后一栏。

android底层通过指令触摸屏幕 安卓触屏测试代码_shell_11

代码如下



init(0)  -- 启动初始坐标
mSleep(3*1000)   -- 睡眠三秒防止没有初始化成功
while (true) do  -- 无限执行
    --[[刚才颜色拾取器生成的脚本,返回的是第一个值的坐标]]--
    x,y = findMultiColorInRegionFuzzy( 0xbd8c5a, "-29|-47|0xbd8c5a,-51|-2|0x000000", 90, 34, 196, 668, 1042) 
    if(x~= -1 and y~= -1)  -- 根据多点颜色区域模糊查色返回的结果
    then
        touchDown(x, y)   -- 点击事件
        mSleep(20)
        touchUp(x, y)
    end
end



TSLib库

这个是触动精灵自己的,用法要看官方文档

首先在最上面加载TSLib库



require("TSLib")



封装一些通用函数



-- 根据坐标点击
function click(x,y)
    if(x~= -1 and y~= -1)  -- 根据多点颜色区域模糊查色返回的结果
    then
        touchDown(x, y)   -- 点击事件
        mSleep(20)
        touchUp(x, y)
    end
    mSleep(5*1000)
end
-- 打印坐标,调试用
function showClick(x,y)
    dialog('返回视屏坐标x'..x..','..y)
end



multiColor

多点比色,用来判断界面

android底层通过指令触摸屏幕 安卓触屏测试代码_lua_12



require "TSLib"--使用本函数库必须在脚本开头引用并将文件放到设备 lua 目录下
--全部坐标点和颜色一致时返回 true,== true 可省略不写
--判断是否为某个界面
if multiColor({{75, 1026, 0x9b9b9b},{214,1028,0x9b9b9b},{341,1038,0xff3031},{357,1037,0xfff6f6},{507,1028,0x9b9b9b},{642,1032,0x9b9b9b}},80,false) == true then
        x,y = findMultiColorInRegionFuzzy( 0x191f25, "1|0|0x191f25,2|0|0x191f25,3|0|0x191f25", 90, 22, 190, 690, 958) --  查找指定区域内黑色的文字
     --showClick(x,y); 调用封装的函数,显示坐标轴
     click(x,y) --点击进入视屏
     mSleep(3*1000) --观看3分钟
     click(40,74); --点击返回
     touch():on(354,646):move(348,414):off()
     mSleep(5*1000)
end



便捷UI

便捷UI文档 

信息提示脚本

官网文档

信息提示脚本主要用于调试用,注意手机要开启悬浮框权限

dialog

阻塞式信息,会阻塞脚本,慎用

android底层通过指令触摸屏幕 安卓触屏测试代码_lua_13

toast

异步信息,建议用这个,toast显示几秒,后面要用mSleep等待几秒,不然下面取色取到toast可能会出问题

android底层通过指令触摸屏幕 安卓触屏测试代码_数据库_14

逐行获取文本文件数据

逐行读取文本代码如下



for line in io.lines("main.lua") do
   print(line)
end



控制台输出指定文件的数据 



--获取文件路径,serPath为触动精灵所在目录
local file = userPath().."/res/密令.txt"  
    if file then 
        for line in io.lines(file) do  -- 遍历文件里的内容
            inputText(line)  -- 输出到控制台
            mSleep(2000)
        end
        dialog("输入完毕", 1)
        lua_exit()  -- 退出lua程序
    end



防锁屏

判断屏幕是否为锁定状态 

android底层通过指令触摸屏幕 安卓触屏测试代码_lua_15

代码如下



flag = deviceIsLock();      --如果要在设备自启动时解锁屏幕直接使用 unlockDevice 函数即可
if flag == 0 then
    dialog("未锁定",3);
else
    unlockDevice(); --解锁屏幕
end



主屏幕按键

API



pressHomeKey();    --Android 系统不需要填参数,自动点击抬起



报错友善提示



function main(...)
    error("这是一个错误演示!",2)  -- 手动抛出一个异常
    return 0
end

neo,errmsg = pcall(main)   -- 保护模式调用,第一个参数为是否返回异常,第二个参数为返回的异常信息
if neo then   -- 如果不返回异常
    dialog(errmsg, time)  
else 
    --返回异常时弹出友善提示框
    user_Choosen = dialogRet('很抱歉辅助出现异常,是否将错误信息写入剪切板以回报开发者!',"积极回报","残忍拒绝" ,"",0)   
    if user_Choosen == 0  then   -- 如果点击确定
        writePasteboard(errmsg)  -- 复制到粘贴板
        dialog('错误信息已经写入剪切板!',5)  -- 提示用户
    end
end



调用Http发送数据



local url = string.format("http://www.***com:9002/pubApi/uLogin?uName=%s&pWord=%s", account, password)  -- 生成url
local code, header, body = http.get(url, 10)  --发送请求,10秒超时.code、header、body不解释
if code == 200 then  -- 如果返回为200时
    if body == "False" then 
        return false
    end
    return true
end