赞
踩
手机端:auto.js(百度即可)
PC端: VS Code JDK SDK Tools(定位工具: Uiautomatorviewer)
注:
VS Code 用于代码编写 Uiautomatorviewer用于元素定位,也就是APP的界面分析
下载地址:
VS code:https://code.visualstudio.com/
JDK网盘64位下载地址: https://pan.baidu.com/s/1dfhaoMVQLDqSOAj45aP4Lg
SDK下载(Android集成开发环境)链接:https://pan.baidu.com/s/1zYTq5Zv2yFjDyI8XyKoMUw 提取码:zovb
(JDK安装配置教程:https://blog.csdn.net/qq_41742494/article/details/99709605)
SDK环境配置步骤:此电脑右键–>属性–>高级系统设置–>环境变量–>找到"Path"编辑–>新建–>浏览(找到Android集成开发环境的解压路径,定位到sdk目录级。如:E:\免安装软件\adt-bundle-windows-x86_64-20131030\adt-bundle-windows-x86_64-20131030\sdk)–>一路确定出来–>Dos命令行输入adb–>不提示adb不是内部命令就成功了
1. 通过USB数据线将手机连接到电脑
2. 打开adb.exe sdk安装目录 \ platform-tools \ adb.exe 输入命令(查看手机连接状态):
adb devices |
3. 运行uiautomatorviewer.bat sdk安装目录 \ tools \ bin \ uiautomatorviewer.bat
4. uiautomatorviewer不能截取手机屏幕解决办法
(1)在电脑桌面创建两个文本文档并更改后缀名app.uix app.png
(2)在电脑桌面文本文档并更改后缀名为 bat 右键编辑 > 输入以下内容 > 保存
@echo off >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( echo 请求管理员权限... goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B :gotAdmin @echo on adb shell uiautomator dump /sdcard/app.uix adb pull /sdcard/app.uix C:/Users/hjfdzd/Desktop/app.uix adb shell screencap -p /sdcard/app.png adb pull /sdcard/app.png C:/Users/hjfdzd/Desktop/app.png
5. 打开uiautomatorviewer点击打开 app.uix app.png 即可分析app界面
1. PC端打开VS Code 点击EXTENSIONS 搜索Auto.js点击安装
2. 开启Autojs服务 Ctrl + Shift + P > Autojs start server
3. 手机端打开Autojs开启无障碍服务,点击连接电脑输入电脑IP进行连接
1.分析界面如下
2.找出视频红包对应右上角的 2 ,并点击视频红包进行金币的赚取
等待视频看结束点击关闭按钮,返回界面
3.代码如下:
/** * 定义控件btn,父控件btnParent, 关闭控件btnClose * 区域左上角顶点 boundLeft,boundTop 区域右下角顶点 boundRight,boundBottom * 手机适配比: 屏宽比 wRatio 屏高比 hRatio * 计数变量 count * 视频可点击总次数 total(需查找的控件 2 ) * 最终点击坐标点 pointX,pointY */ var btn,btnParent,btnClose,boundLeft,boundTop,boundRight,boundBottom,wRatio,hRatio,count,total,pointX,pointY,flag; //屏幕比用2280X1080的屏幕适配其他 wRatio = device.width / 1080; hRatio = device.height / 2280; /** * 通过uiautomatorviewer分析获得 2 所在控件 bounds=[219,1194][270,1245] * 其中: * boundLeft = 219 * boundTop = 1194 * boundRight = 270 * boundBottom = 1245 * 适配其他机型 只需横坐标乘以 wRatio 纵坐标乘以 hRatio */ boundLeft = 219 * wRatio; boundTop = 1194 * hRatio; boundRight = 270 * wRatio; boundBottom = 1245 * hRatio; /** * UiSelector.boundsInside(left, top, right, buttom) * 在bound区域内查找控件 * 在bound区域内查找className("android.view.View") 即 2 所在控件 */ btn = className("android.view.View").boundsInside(boundLeft,boundTop,boundRight,boundBottom).findOne(500); //如果btn不为空 if(btn){ flag = true; while (flag) { //获取文本控件 即 2 total = btn.text(); if (total!=null) { //寻找父控件 btnParent = btn.parent().parent().parent(); //找到父控件的区域 boundLeft = btnParent.bounds().left; boundTop = btnParent.bounds().top; boundRight = btnParent.bounds().right; boundBottom = btnParent.bounds().bottom; //随机点击坐标 pointX = Math.random()*(boundRight-boundLeft)+boundLeft; pointY = Math.random()*(boundBottom-boundTop)+boundTop; //点击 click(pointX,pointY); console.log(pointX+","+pointY); //等待1s sleep(1000); //等待视频观看完毕 while (flag) { //查找关闭按钮 btnClose = id("com.xiangzi.jukandian:id/tt_video_ad_close_layout").findOne(500); if (btnClose) { //点击关闭 btnClose.click(); sleep(1000); //标识符置为false跳出循环 flag = false; } //查找关闭按钮 btnClose = className("android.widget.TextView").text("关闭广告").findOne(500); if (btnClose) { //点击关闭 btnClose.click(); sleep(1000); //标识符置为false跳出循环 flag = false; } //查找关闭按钮 btnClose = id("jump_tv").text("跳过").findOne(500); if (btnClose) { //点击关闭 btnClose.click(); sleep(1000); //标识符置为false跳出循环 flag = false; } } flag = true; }else{ flag = false; } } }
1.电脑编码容易便捷
2.uiautomatorviewer界面分析清晰,可轻易找到控件
3.uiautomatorviewer还有好多控件属性尚未列出,可结合autojs悬浮窗进行界面分析
注:
若有帮助,请关注本号,持续分享
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。