-
细节1
click('扫一扫'),click(x, y),后者只会在 基于坐标 的环境下生效,默认不是。// 必现要在前面设置屏幕宽高 setScreenMetrics(1600, 900); // 点击指定坐标才会生效,否则只能按控件的点击事件进行生效 click(point.x, point.y) -
细节2
如果正常运行代码到
app没问题,但是打包之后出现无效果或者闪退等问题,又看不到输出日志,可以通过trycatch包裹最前沿的代码通过自带的日志面板看输出。 -
细节3:通过
click(x, y)的方式不知道具体点了什么位置在使用基于坐标操作时,不知道具体点了什么位置,屏幕上也没有能看到的反馈提示,可以通过开启录屏功能,开启后点击时,会有点击标记出现,能知道准确的点击了哪里。
-
细节4:
launch相关的启动函数失效在使用
launch()、launchApp()、launchPackage()... 等启动函数时,发现调用了正确的app 名称(例如:钉钉)与包名(getPackageName('钉钉'))无法打开对于app。解决方案:原因是因为
app权限问题,需要到设置 -》 应用管理 -》钉钉 -》权限 -》打开关联启动这样就可以通过上面的函数调起了,要不然只能通过定位方式打开app。// 开了权限后可以使用这种方式打开 launchApp('钉钉'); // 没开权限,只能这么打开,得保证 钉钉 在当前屏幕上可见 const dingding = desc('钉钉').findOne(); click(dingding.bounds().centerX(), dingding.bounds().centerY());但是在一些
app内部的按钮上,可以使用click('登录'),发现的区别就是这个按钮desc、text是没值的可以点击到,有值的点击不到。 -
细节5:
click("钉钉")无法打开当前屏幕上的app这个应该还是权限问题,但是暂时没找到对应权限,也有可能是
autox.js基础库版本原因,有知道可以留言告知下,但是有替代方案,取出当前这个app元素组件,通过点击组件中心位置进行点击,也是一样的效果。const dingding = desc('钉钉').findOne(); click(dingding.bounds().centerX(), dingding.bounds().centerY()); -
细节6:
require('./utils.js')方式获取其他js模块的代码报错找不到该模块原因是路径问题,因为电脑与手机的环境问题,导致路径不对,可以通过
vscode中autox.js插件自带的辅助指令,创建一个项目,在项目中进行互相引用,其实也就是要保证到手机后是在一个文件夹内,要不然单个脚本可能只会运行单个脚本到手机内,导致引入的模块并没有在同一个目录。快捷键command + shift + p或control + shift + p换出下面的菜单。 -
错误1
Can't find method com.stardust.autojs.core.image.ColorFinder.findMultiColors(boolean,number,number,org.opencv.core.Rect,[I)原因是:使用了截图函数,并传入了保存地址,截图函数传入保存地址后则不会返回
images对象。var img = captureScreen("/sdcard/screencapture.png"); var point = findMultiColors(img, "#123456", [[10, 20, "#ffffff"], [30, 40, "#000000"]], { region: [0, 960, 1080, 960] }); if(point){ toast("找到了"); } else { toast('未找到'); }改为一下即可,如果一定要存储,可以改为存储后,再读取出来使用图片
var img = captureScreen(); var point = findMultiColors(img, "#123456", [[10, 20, "#ffffff"], [30, 40, "#000000"]], { region: [0, 960, 1080, 960] }); if(point){ toast("找到了"); } else { toast('未找到'); } -
错误2
Error: out of region: region = [1092,100,113,144], image.size = [900,1600]原因是:查找的图色坐标超过了,尤其是使用图色查找助手的需要注意,图色助手的值可能没问题,但是代码中的截图可能有问题,因为横竖屏截图尺寸不一样,截出图的自然就没法进行对比。
requestScreenCapture(false); var img = captureScreen(); // 确认一下尺寸,尤其是ipad上,会存在尺寸相反的问题 console.log(img.getWidth(), img.getHeight()); -
后续再补充...