移动端数据简介
移动端爬取数据的背景
随机互联网的发展,数据不仅仅只是存在于PC端。移动端的数据在这几年的占比以及势头发展趋势呈现几何倍数的增长。对于做数据分析、用户画像、市场调研来说仅仅参考PC端的数据是远远不够的。那么于此同时移动的数据就显得尤为的重要
获取移动端数据的作用
- 数据分析
- 用户画像
- 商业竞争
- 统计系统
UIAutomator的介绍
UIAutomator是google提供的用来做安卓自动化测试的一个java库
UIAutomator的缺陷
- 测试脚本只能用Java语言开发
- 测试脚本要打包成jar包或者apk包上传到设备上才能实现
UIAutomato2的优势
- UI自动化编写采用Python,学习成本低
- UI控件识别有专门的工具 weditor
- 环境搭建简单
- UI自动化脚本运行稳定
- 项目地址https://github.com/openatx/uiautomator2
UIAutomator2的执行流程
- 在PC端来编写脚本(相当于发送HTTP请求到移动设备的server端)
- 移动设备通过wifi或usb接收到了PC上发来的HTTP请求,执行定制的操作
- 在移动设备上安装atx-agent(守护进程),随后atx-agent启动ui2服务(默认7912端口)进行监听
adb的简介和u2的基本操作
adb的安装与使用
Adb又称Android debug bridge ,用于通过电脑端或者是设备之间的交互的一个工具
- Adb client 命令行程序 ‘adb’用于从shell或脚本中运行adb命令
- Adb server adb server 是运行在PC的一个后台程序
- Adbd 程序 adbd作为一个后台进程在Android设备或模拟器系统中运行
adb有什么作用
- 安装卸载apk文件
- 移动设备和PC之间拷贝文件
- 查看设备上安装的应用信息
- 文件管理
- 按键操作
adb如何使用
把adb的bin目录添加到环境变量当中
adb devices 查看链接的移动设备
adb kill-server 关闭链接的移动设备
adb install apk文件路径 安装app应用
adb shell pm list packages 查看应用包名
adb uninstall 应用包名 卸载应用
UIAutomator2快速入门
python -m uiautomator2 init 初始化移动设备
Uiautomator-server: 就是谷歌原声的 uiautomator
Atx-agent: uiautomator的守护进程
minicap和minitouch 中2个包是atx-agent增加远程控制功能的依赖
UIAutomator2控制移动设备
u2.connect_wifi('172.17.100.15') 通过wifi 手机ip怎么查找?在waln界面点设置
u2.connect_usb('127.0.0.1:62025') 通过usb(手机序列号)
u2.connect_adb_wifi('172.17.100.15:5555') 通过adb wifi
UIAutomato2启动手机app
使用aapt工具进入这个路径输入
aapt dump badging apk的文件名
找到包名
d.app_start('包名')
停止
d.app_stop('包名')
UIAutomator2自动化工具基本操作
d.service('uiautomator').running() uiautomator运行状态
d.service('uiautomator').start() 启动uiautomator
d.service('uiautomator').stop() 停止uiautomator
d.app_install(data='apk地址') 安装app
d.app_current() 获取当前前台app的信息
d.app_stop('包名') 停止当前app
d.app_clear('包名') 清除缓存
d.app_uninstall('包名') 卸载app
d.app_list() 获取所有app的信息
d.app_stop_all() 停止所有app
d.app_uninstall_all() 卸载所有app
weditor的基本操作
什么是Activity?
Activity是Android系统中的四大组件之一,可以用于显示View。Activity是一个与用户交互的系统模块
An activity is a single, focused thing that the user can do. Almost all activities interact with the user, so the Activity class takes care of creating a window for you in which you can place your UI with setContentView(View).
Activity的控件
- TextView 显示文字
- EditText 输入框
- ImageView 显示图片
- Button 按钮
- CheckBox 复选框
- RadioButton 单选按钮
weditor的使用
pip install weditor -i https://pypi.douban.com/simple
在命令行输入 weditor
weditor的界面包括
- 移动设备选择区
- 控件属性区域
- 代码展示区
- 层级关系和结果展示区域
UiSelector和控件定位
定位方式
1 UiSelector
2 Xpath
Andrid基本布局
线性布局 linearLayout
相对布局 RelativelLayout
帧布局 FrameLayout
表格布局 TableLayout
绝对布局 AbsoluteLayout
控件的属性
index | int | 索引 | 0 |
---|---|---|---|
instance | int | 实例 | 5 |
class | String | 类名 | android.widget.TextView |
package | String | 包名 | com.tl.kaoyan |
check | boolean | 控件勾选状态 | false/true |
enable/clickable | boolean | 控件可点击 | false/true |
focused/focusable | boolean | 焦点 | false/true |
Scrollable | boolean | 滚动条 | false/true |
Long-clickable | boolean | 长按 | false/true |
selected | boolean | 选择状态 | false/true |
文本定位的方式
Text 全文本匹配
textContains 文本包含
textMatches 正则表达式
textStartsWith 起始文本
ClassName定位的方式
className classNmae的值
classNameMatches 正则表达式匹配 classNmae的值
资源id进行定位
resourcdId 资源id
混合定位的方式
文本定位 资源id ClassName等可以配合使用来进行定位
坐标点定位法
坐标点定位法分为2种方式 一种是通过原始的坐标点来呈现。一种是通过%号的方式来呈现
xpath定位的方式
d.xpath(‘xpath语句’)