Skip to content

自动化小犬,它是一只成熟的狗子的大脑,手机/ 模拟器自动化

License

Notifications You must be signed in to change notification settings

zozero/auto-dog

Repository files navigation

自动化小犬

自动化小犬

你的手机模拟器是你的狗子,现在请让你狗子变得成熟吧!

功能

  • 通过一组预设的参数,让模拟器自动的完成一系列行为。
  • 解放双手,告别重复性作业
    • 如果你是一名手机应用的黑盒测试员,你可以用一套参数,重复测试相同的功能。
    • 如果你每天需要签到,但由于过于懒惰而忘记签到,那么,你每天只需要按一执行按钮就可以签到。
    • 如果你每天需要用手机做一些重复性行为,那么它可以解决这些烦人的事情。
  • 节约你的时间,让你的狗子享受愉快的重复性生活。

安装

要求

  • 你需要一台不错的电脑。
  • 你需要在电脑上面下载安卓模拟器。如果你可以获取安卓手机的 root 权限也可以。
  • 你需要到这里去下载执行端的代码,然后运行它。不过你使用方法一的话无需这步。

方法一

这是最简单的方法,你只需要点击百度网盘下载最新版本的自动化小犬完整版.zip文件就可以直接使用。

解压后双击运行接入口.exe,然后在双击运行自动化小犬.exe,最后打开你的模拟器。

这个方法让你无需下载执行端的文件。

方法二

可以直接下载我编译好的文件来使用,点击这里,再 GitHub 上下载auto-dog-windows.exe,下载后可以直接运行,但需要注意你必须先去这里下载执行端相关的文件。才能完整的使用。

方法二

如果你有足够的编程知识,你运行这些命令编译它。

下载源代码

$ git clone https://github.com/zozero/auto-dog

进入到项目目录

$ cd auto-dog

安装依赖

$ npm install

运行项目

$ npm run start

视频教程

IMAGE ALT TEXT

菜单说明

基础配置

  • 执行端表格
    • 只需要添加 IP 端口就行,如果你没有更改执行端的配置,则无需做任何事情。
  • 模拟器表格
    • 你可以添加一个你喜欢的名称,用于标识。
    • IP 端口可以查看具体手机模拟器或手机开放的端口,IP:如果是局域网那么可以打开命令行工具(cmd)查看,命令:ipconfig
    • 类型现在只有一种
    • 如果你下载的是模拟器那么也许不用更改
  • 项目表格
    • 项目名可以随意,但最好要容易识别。
    • 其他的输入框内容是前两项,可以直接选择你需要的。

执行规划

它的原始任务来源于执行端的对应项目下任务间的逗号分隔文件文件(csv 文件)。这个功能实现时相当复杂,可能无法预料发生问题或错误。不过我已经尽可能修复了。

如果没有数据,可到任务编辑里面去添加。你最好按照图片处理->方法编辑->步骤编辑->任务编辑->执行规划这个流程使用。

你可以把原始任务拖动到每天任务、每周任务、每月任务。而每天任务、每周任务、每月任务可以拖动到今日任务种,如果时间恰当它会自动添加到今日任务中。你也可以把每天任务、每周任务、每月任务、今日任务拖到删除任务中。

执行只会执行今日任务中的任务。暂停会停止任务,执行端也会一起停止判断,但它仍将运行,期待下一次执行。

清空任务和表格是十分危险按钮,因为它会删除所有项目的任务数据,不过你只需要重新添加就行。它不会删除任何执行端的文件。

图片处理

在使用之前请确保,你已经打开了手机模拟器和执行端。

模拟器截屏:点击后可以获取模拟的当前屏幕,之后你可以对其中内容进行裁剪。

裁剪区域:可以滚动放大或者缩小,可以直接用鼠标框选区域。

截图:选择需要裁剪的范围后可以点击这个按钮,它会跳出一个表单弹框,你可以选择你需要的匹配方法。具体可以查看下面的表格内容。你可以查看相应参数的帮助信息。请不要忘记输入图片的名称。提交后会再弹出一个添加步骤的表单,你可以不用添加,后续再添加也可以。添加步骤后如果自动执行开关开了那么会自动让模拟器执行一次。相应的参数也可以查看下面的表格,或者查看帮助图标

重置:可以重置图片的位置。

图片展馆

它就是一个稍微好看的图片瀑布流,然而除了查看和删除外并没有什么用处。

方法编辑

展示所有的方法表格,你可以直接再表格中编辑大部分的参数,还有删除,修改后默认是自动保存,橙色开关可以关闭自动保存。当前有四种匹配方式。

图片匹配

用截取的图片来再指定的位置匹配到截取的图片。它会返回图片所在位置的中心点。本质上它会先把图片转成灰度图,再调用匹配方法,详情查看计算机可视化开源库(opencv)

二值图片匹配

同图片匹配方法相同,只不过它添加了阈值,是先将图片变成黑白色的,之后再进行匹配。

匹配再匹配

先匹配一次图片匹配或者二值图片匹配让后再匹配一次图片匹配,通过第一次匹配来确定大体的位置,然后再添加一个范围(X 偏移、Y 偏移),后再次匹配。

无图匹配

截图时图片的中心位置,它只记录这个中心位置和图片无关,也就是说你可以随便指定一个位置让后去执行一些行为。

多图匹配

多张截取的图片去匹配同一场景,找到了就返回找到的位置,然后执行。

你只看一次

每一个分类都将新建一个模型,这是由于模型训练时可能会改变所有权重,而导致之前训练的作废。所以一个模型就代表一个分类。请注意基础模型时一个经过训练的预训练模型,这个模型之前就有分类,所以自己的分类的编码是固定等于80的。

你必须先去训练才能使用,训练后你可以点击预测来判断训练效果。训练过程耗时取决于你个分类截取图片的数量,还有你的电脑性能。程序会自动的使用cpu或者gpu,支持多张gpu训练。

步骤编辑

你可以直接再表格种编辑已有的项目,你可以对具体步骤进行测试,看看是否符合预期。加号可以添加新的步骤表。

添加步骤

点击添加按钮,然后输入相应参数,提交即可。

开关

橙色的是自动保存开关,绿色的是自动执行开关,自动执行只会在提交的时候触发。

其他

参数请查看参数说明

任务编辑

你可以直接再表格种编辑已有的项目,你可以测试一整个任务。加号可以添加新的任务表。任务是由许多步骤组成的。它可以是一整步骤表。

其他问题可以查看视频教程。

参数说明

图片匹配

参数名 示例 说明
序号 1 用于在其他表格中定位该行数据
图片名 请随意 图片的名字,无需后缀,它不能重复。你最好明白这种图所表述的意义。点击名称可以查看图片。
范围 379 226 587 432 截取范围是左上和右下的坐标,格式:x1 y1 x2 y2,用空格隔开,x1和y1是搜索时的起始位置,可以是整数(包括负数,意味着反过来加减)和分数,分数意味着按照模拟器屏幕大小的百分比进行计算。也可以直接使用参数值,参数值是根据截图时大小向外扩了200像素。
算法 5 匹配时使用的算法类型,公式可以在opencv里面看,使用该数值即可
最低相似度 0.8 相似度太低可能会导致匹配错误的位置,太高可能匹配不到,0.8是常用数字。
额外补充 0 0表示不会触发增加使用图片之间结构相似度算法。1表示会使用,建议0。它可以在图片内容相同,但颜色不同时做出正确的匹配。

二值图片匹配

参数名 示例 说明
序号 1 用于在其他表格中定位该行数据
图片名 请随意 图片的名字,无需后缀,它不能重复。你最好明白这种图所表述的意义。点击名称可以查看图片。
范围 379 226 587 432 同上
阈值 180 用于将图片二值化的阈值,0-255之间。
阈值类型 0 一种计算阈值的算法,这里是默认0即可,把图片灰度之后再选择留下的颜色。具体情况需要查看opencv的算法才能明白。这些算法是非常容易理解。
算法 5 匹配时使用的算法类型,公式可以在opencv里面看,使用该数值即可
最低相似度 0.8 相似度太低可能会导致匹配错误的位置,太高可能匹配不到,0.8是常用数字。

匹配再匹配

参数名 示例 说明
序号 1 用于在其他表格中定位该行数据
前编码 A1 第一次匹配用的编码,这个编码是其他匹配类型的编码。
后编码 A2 第二次匹配用的编码,可以和前编码是同一种匹配方式,也可以不同。
X偏移 500 可以是负数,但必须是整数,两次匹配,第一次定位,公式:左上角x+预先截图的宽度+X偏移。必须要注意偏移的范围包含了后编码的图片,不然可能匹配不到。
Y偏移 500 可以是负数,但必须是整数,两次匹配,第一次定位,公式:左上角y+预先截图的高度+Y偏移。必须要注意偏移的范围包含了后编码的图片,不然可能匹配不到。

无图匹配

参数名 示例 说明
序号 1 用于在其他表格中定位该行数据
图片名 请随意 图片的名字,无需后缀,它不能重复。图片是用查看的,名字是为了以后好回忆是做什么用的。
X轴 1200 X轴上的坐标,默认是给截取的图片X轴的中心点。必须是自然数,可以直接填入
Y轴 500 Y轴上的坐标,默认是给截取的图片Y轴的中心点。必须是自然数,可以直接填入

多图匹配

参数名 示例 说明
序号 1 用于在其他表格中定位该行数据
图片名 请随意 图片的名字,无需后缀,它不能重复。你最好明白这种图所表述的意义。点击名称可以查看图片。
数量 3 图片的数量。图片主要是xxx-n.jpg,其中n就是第几张图片,由此来重复判断。
范围 0 0 1.0 1.0 截取范围是左上和右下的坐标,格式:x1 y1 x2 y2,用空格隔开,x1和y1是搜索时的起始位置,可以是整数(包括负数,意味着反过来加减)和分数,分数意味着按照模拟器屏幕大小的百分比进行计算。也可以直接使用参数值,参数值是根据截图时大小向外扩了200像素。
算法 5 匹配时使用的算法类型,公式可以在opencv里面看,使用该数值即可
最低相似度 0.8 相似度太低可能会导致匹配错误的位置,太高可能匹配不到,0.8是常用数字。
额外补充 0 0表示不会触发增加使用图片之间结构相似度算法。1表示会使用,建议0。它可以在图片内容相同,但颜色不同时做出正确的匹配。

你只看一次

参数名 示例 说明
序号 1 用于在其他表格中定位该行数据
分类 随便 分类名字,可以是中文。尽可能中文,如果是英文请不要与预设的重复,预设可以查看执行端相应文件,位置:
资源存放屋/你只看一次/基础配置.yaml
训练是根据每种类别分开训练的,你可以后续在相同的类别里面添加图片。再次训练,这样会把一起的图片一起加进来训练。
轮回数 160 训练一遍意味着把所有的图片和标签训练了一遍,之后又会重复相同的操作,这样的操作的次数就是轮回次数。160次是个不错的次数。
置信度 0.2 和相似度类似,低于的就算错误,高于的才算是要找的分类。相同分类下,用来训练的物体越接近可以越高,物体差别越大则越低。

光学字符识别

参数名 示例 说明
序号 1 用于在其他表格中定位该行数据
图片名 随便 不能与其他图片名重复,主要是来便于查看截取的图片。
文本 文本1 你需要识别的文本,采取的判断方式包含,只要包含文本就意味着识别到了。
范围 0 0 100 100 截取范围是左上和右下的坐标,格式:x1 y1 x2 y2,用空格隔开,x1和y1是搜索时的起始位置,可以是整数(包括负数,意味着反过来加减)和分数,分数意味着按照模拟器屏幕大小的百分比进行计算。也可以直接使用参数值,该参数值是之际截取的位置。
语种 0 识别的文字是什么语言,0表示中文简体,1表示中文繁体。其他语言需要自行处理。
最低相似度 0.1 你可以在添加数据时点击眼睛图标后可以获得所有预测的概率。自动填充的概率会减少0.1

步骤表格

参数名 示例 说明
序号 1 用于在其他表格中定位该行数据
名称 请随意 步骤的名字,随便的名称,但最好是中文,且不要重复。在开头加*号来避免没有找到就退出任务的逻辑。
界面编码 A10 由匹配方法的编码,加具体的序号,例如A10,表示《图片匹配.csv》文件 的序号为10的那条数据。可以为空。A是图片匹配方法。也可以是其他方法。
方法编码 A10 和界面编码相同。找到后会直接执行行为编码的行动。
行为编码 A 执行某个动作,A表示点击,B表示滚动(例如:B150Y,数字是滑动量,X表示延宽滑动量,正数表示从左往右划,负数表示从右往左划,Y表示延高滑动量,正数表示手指由上到下,负数表示由下到上,可以是负数,如果X和Y都没有)。C是返回按钮,D是回到主界面的按钮。可以为空,意味着不执行任何动作。它只会在有方法编码的前提下才会触发。
动后编码 A1Z0 前面A1和界面编码相同,后面Z表示找到了,0表示无限次循环,也可以是其它数字,找到了就继续循环直到没找到为止,在这期间它会重复执行行为编码的行为,直到找不到为止。但它还可以是J,表示没有找到就继续循环、执行行为。可以为空。
循环次数 0 循环多少次,如果没有找到就会循环,0表示无限次,次数用尽没找到会退出当前任务。可以在名称前面加*号来避免。
循环间隔 1.0 每次循环间隔多久,单位是秒。必须要有一个时间,不然可能会飞速的让你电脑卡机!!!

任务表格

参数名 示例 说明
序号 1 用于在表格中定位该行数据。
名称 某个步骤文件名 它只能是步骤文件名。
编号 0 步骤文件内各步骤对应的序号,如果是0表示整个文件是一个步骤组,会从第一个步骤执行到最后一个步骤。
2 表示成功执行后需要前往的序号,该序号是任务里的序号。-1表示立即停止整个任务,0表示从头开始执行任务,大于零的数字表示具体的序号步骤。请注意它可能会导致无限循环!!!所以一定要小心让大的序号跳转到小的序号上。
-1 表示成功失败后需要前往的序号,该序号是任务里的序号。-1表示立即停止整个任务,0表示从头开始执行任务,大于零的数字表示具体的序号步骤。请注意它可能会导致无限循环!!!所以一定要小心让大的序号跳转到小的序号上。

方法编号表格

方法名 编号 说明
图片匹配 A 使用图片去匹配指定屏幕范围内的内容。找到了就返回。
二值图片匹配 B 先把图片变成黑白图后,在执行和图片匹配一样的模板匹配方法。
匹配再匹配 C 先执行一遍图片匹配,然后根据匹配到的图片位置,再在偏移的范围内在次匹配找到图片出现的位置。可能后续会更改,将不同方法匹配不同方法,或者相同方法匹配相同方法。
无图匹配 D 无需图片,它会直接返回真和固定位置,以方便执行。
多图匹配 E 可以使用多张图片去同一个范围内找到所需的内容。一般用于动图,或者一些列表页面中。
你只看一次 F 使用你只看一次(yolo)版本8的图像识别模型,训练时可能需要对电脑有一定要求。
光学字符识别 G 使用的EasyOCR识别,对应模型会自动下载。当前只支持简体、繁体+英,其他语种支持需要在执行端进行修改。特别是需要将GBK编码全部换成utf8为妙。为了方便用xlsx打开csv文件我采用了gbk编码。

行为动作编号表格

方法名 编号 示例 说明
点击 A A 手机中点击一下的操作
滑动 B B500Y 可以向上向下、向左向右滑动。示例表示沿纵轴上往下滑动。
返回 C C 手机中全局的返回按钮。
主界面 D D 可以直接回到的手机的主界面,相当于手机中home键。
长按 E E1.5 长按住识别的位置点。示例1.5表示1.5秒

注意

该项目只适合个人使用,因为它没有做任何权限管理,切勿将其暴露在公网当中,尽可能在局域网内使用它。

如果非要这么做,请务必在路由器管理界面中指定来源的 ip 地址或者媒体存取控制位址(mac 地址),这样可以直接避免未知来源的电脑访问到你的程序。(请搜索“端口转发”相关的知识。)

如果你使用的是手机,最好找一台没有任何个人信息和财产的无用手机。

关于编码的问题。我在项目中 csv 文件使用 gbk 编码,这是为了方便使用 excel 直接打开 csv 文件。

赞助

微信赞赏码

许可证

许可证是特别的,你几乎可以无条件使用这个开源库。你可以在这里查看许可证。

关于angular-electron框架的许可证,请在这里查看