**
文末有小礼物!
**
希望此次分享能够帮助小伙伴们,按照当前文章可自主搭建APP自动化测试环境和实现计算机控制模拟器APP执行操作!
(一)环境依赖(jdk、sdk)
- 安装jdk(地址):jdk下载地址→https://www.oracle.com/cn/java/technologies/downloads/archive/
2. jdk系统环境变量配置 右键我的电脑或此电脑→属性→高级系统设置→环境变量→在系统变量下新建(JAVA_HOME)变量值为jdk安装的路径名→点击确定→在系统变量中找到path双击 →将(%JAVA_HOME%\bin)添加到path中
检查jdk是否安装成功:java -version
出现下面类似的信息代表jdk安装成功
-
安装SDK:SDK下载地址→https://www.androiddevtools.cn/
4.SDK与jdk环境变量配置方式相同,最终需要将(%ANDROID_SDK_HOME%\platform-tools 和 %ANDROID_SDK_HOME%\tools 都加到path中)5.点击SDK Manager.exe (SDK Manager用来更新android sdk api,比如安卓系统出新系统,就需要更新这边sdk api版本(api和系统对应关系29=》10.0、30=》11.0、31=》12)
需要下载的工具:
(二)python+pycharm安装
- 安装python:python下载地址→http://www.python.org/download/
点击图中的windows
选择需要下载的python,下载安装包
点击upgrade now,等待安装。
出现下面这个界面代表安装成功
配置python环境变量:将安装python的路径复制下来,放到path的环境变量中去
打开命令行窗口→win+R,出现以下信息代表配置成功
2. 安装pycharm:https://www.jetbrains.com/pycharm/download/#section=windows
3. 找到下载PyCharm的路径,双击.exe文件进行安装,点击下一步
4.尽量不要选择带中文和空格的目录
5. 进入 Installation Options(安装选项)页面,全部勾选上。点击 Next,直至安装完成。(建议将…to the path勾选上,这样就省去了配置环境变量的过程)
配置解释器,点击settings,按照图中指示选择python解释器,我下载的是python3.8
(三)Appium安装
2.这就是appium的主界面了,点击Edit Configurations进行基础配置
3. 如果按照上面安装的步骤和操作的话,你的配置和我的配置是一毛一样的,如果没有配置系统环境变量的话,就需要手动填入所对应的路径地址了。
(四)夜神模拟器安装
- 夜神模拟器安装:https://www.yeshen.com/
(五)adb命令验证设备连接成功
1.**adb devices** ---查看是否连接到设备
如果出现如下情况,按照图中操作即可:
2.获取包名的命令:
可直接获取到正在运行的APP包名:
adb shell dumpsys window | findstr mCurrentFocus
(六)真机连接以及相关基础操作
1.找到手机版本号,多次点击进入开发者模式,进入开发者选项,将USB调试模式打开(如果都打开了还是检查不到设备,需要将连接改为USB传输文件格式)
2.使用adb devices命令查看手机连接情况
3.使用adb命令安装apk以及卸载软件
(1)安装APP
adb -s 设备名 install apk的路径
(2)卸载APP
获取APP包名,运行安装的APP,在命令行进入shell环境,adb -s 设备名 shell
进入命令行后输入,dumpsys window | grep mCurrent
找到包名,输入以下命令卸载apk
获得所有应用的包名。adb shell pm list packages
adb -s 设备名 uninstall 包名
4.adb相关命令
(1)获得包名和活动页信息
打开APP,进入shell环境,输入命令dumpsys window | grep mCurrentFocus
可直接获取到运行的APP包名和活动页信息
(2)直接打开上述查询到的活动页
在shell环境内输入,am start -n com.tencent.mm/com.tencent.mm.ui.LauncherUI
(3)清空当前APP缓存。adb shell pm clear 包名
(4)传输文件
adb push 电脑路径 手机路径
adb pull 手机路径 电脑路径
理解:以电脑为对象,推送时从电脑推送,拉取文件时想从哪拉取,当前解释为第一个路径位置
(5)adb命令查看日志
V - 明细 verbose (最低优先级)
D - 调试 debug
l - 信息 info
W - 警告 warn
E - 错误 error
F - 严重错误 fatal
S - 无记载 silent (最高优先级,绝不会输出任何内容)
adb logcat 打印默认日志数据
adb logcat -v tims 打印时间
adb logcat -v color 使用不同的颜色来显示每个优先级
adb logcat -f 将日志输出到文件
adb logcat > log.log 保存日志到PC上
adb logcat -c 清理已存在的日志
(6)查看性能指标
adb shell dumpsys cpuinfo 查看CPU的占用情况
adb shell dumpsys meminfo 查看系统内存占用情况
adb shell top | findstr “包名” 查看某个软件的性能指标
(7)adb+monkey
adb -s 001 127.0.0.1:62001 shell monkey -p com.ulang.jjk
–pct-touch 60 --pct-motion 20 --pct-majornav 10 --pct-anyevent 10
-s 12 --throttle 500
–ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --ignore-native-crashes
-v -v -v 100 > D:\jjk_monkey1.txt
指定一个APP执行压力测试,延时操作300毫秒
(常用事件)
命令 | 解释 |
---|---|
–pct-touch | 触摸、点击屏幕 |
–pct-motion | 滑动(一般是直线滑动,途经若干个坐标点) |
–pct-trackball | 无规则的轨迹球滑动(曲线滑动) |
–pct-syskeys | 系统级事件,系统按键,比如Home键、音量键、Back回退、Menu菜单键、下拉通知栏 |
–pct-nav | 方向导航事件,比如光标上移 |
–pct-majornav | 主要导航事件操作,比如应用中的菜单选项,返回按钮(虚拟键操作) |
–pct-appswitch | App切换窗口,比如应用内部窗口切换、应用之间的窗口切换 |
–pct-flip | 键盘事件,比如键盘弹起、收回 |
–pct-anyevent | 其它事件 |
–pct-pinchzoom | 缩放事件,比如多指触控 放大、缩小 |
–ignore-crashes | 忽略崩溃 |
–ignore-timeouts | 忽略超时(由于未响应) |
–ignore-security-exceptions | 忽略安全异常 |
–monitor-native-crashes | 监控本地崩溃代码 |
–ignore-native-crashes | 忽略本地崩溃 |
根据关键词查找分析日志,关键词:
anr(应用无响应)、crash(崩溃)、exception(异常)、error(错误)、GC(内存异常:内存溢出-GC Error 内存空间满了,空间回收不及时)、force_closed(强制退出)…
(七)实现用代码控制APP
from time import sleep
from appium import webdriver
# 连接移动设备必须的参数
desired_caps = {}
k = 1 #不清楚为什么要加k=1,去掉的话你就发现还是加上比较好
# 当前要测试的设备名称
desired_caps["devicename"] = "127.0.0.1:62001"
# 要启动的APP的包名
desired_caps["appPackage"] = "com.android.settings" #设置的包名
# 要启动APP哪个页面
desired_caps["appActivity"] = ".Settings" #设置界面
# 操作系统
desired_caps["platformName"] = "Android"
# android系统的版本
desired_caps["platformVersion"] = "5.1.1"
driver = webdriver.Remote(command_executor="http://127.0.0.1:4723/wd/hub", desired_capabilities=desired_caps)
sleep(3)
driver.close_app()
driver.quit()
问题记录:
1.在pycharm中run显示–Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
有可能是appium未打开的结果
2.如果出现–AttributeError: can’t set attribute
可能是忘记安装appium-python-client
命令是:pip install appium-python-client
3.如果一直报5037端口、500错误,大多数都是模拟器的手机版本和SDK版本不一致导致的,将SDK中的adb.exe文件复制到夜神安装目录中,注意要将夜神中的nox_adb.exe文件内容也要换成SDK中adb文件的内容。
看到这里,也算有缘!最后送小伙伴们一张原创的电脑壁纸吧!加油!
--等风,也等你--