常用的adb命令
启动并连接到adb
# 列出当前已连接的设备 adb devices # 关闭adb的服务器 adb kill-server # 开启adb的服务器 adb start-server # 连接到模拟器 adb connect ip地址:端口(沐沐的端口是7555) adb connect 127.0.0.1:7555 # 进入模拟器 adb shell # adb的端口是5037,查看端口的占用情况 netstat -ano|findstr 5037 # 杀掉进程 taskkill -f -pid 进程号
获取包名和activity名
- 包名:每个安卓应用都有一个包名,不能重复,用于唯一标识一个APP应用
- activity名:在安卓中每个页面有一个activity名,获取activity名就是获取界面名
adb shell dumpsys window windows | grep mFocusedApp # 输出以下内容:包名为:com.xmiles.jdd。activity名为:.activity.MainActivity mFocusedApp=AppWindowToken{f046f13 token=Token{9e8ea02 ActivityRecord {b9dcf4d u0 com.xmiles.jdd/.activity.MainActivity t10}}}
文件传输相关的命令
# 从电脑发送文件到手机 adb push 电脑文件的路径名 手机文件夹的路径 # 从手机中导出文件到电脑 adb pull 手机的文件路径 电脑的文件夹路径 # 导出文件时,注意一点,由于权限问题不能导出到电脑根目录(比如d盘根目录,会报错), # 只能导出到某个具体文件夹内(文件夹需事先存在)
安装和卸载apk包
- adb install apk包路径:往默认连接的手机设备上安装apk包(注意:apk包的文件名不能包含有中文或者特殊字符)
- adb install -r apk包路径:覆盖安装apk包
- adb -s 127.0.0.1:7555 install apk包路径:往指定连接设备安装apk包
- adb uninstall 包名:卸载程序
查询本机所有的应用程序包
- adb shell pm list packages:本机所有应用程序包
- adb shell pm list packages -3:第三方应用程序包
查询apk的包名和启动activity的名称
有apk包的情况下,使用aapt工具查看(在Android sdk安装路径下的build-tools文件夹下)
- aapt dump badging apk文件夹路径|grep package
- aapt dump badging apk文件路径|grep launch
没有apk包的情况下:
adb shell dumpsys activity activities | grep Run
截取当前页面
adb shell screencap 手机照片保存地址。注意,只能跟手机里面的路径
例如:
adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen.png d:\temp\screen.png
uiautomatorviewer的使用
主要用于查看应用中的元素属性特性,帮助我们在代码中进行元素定位
使用方法:
- 进入Android-sdk-windows\tools路径,直接双击uiautomatorviewer.bat即可启动
- 电脑连接真机或模拟器
- 启动待测试的APP
- 点击uiautomatorviewer左上角的Device screenshot按钮
- 点击希望查看属性的元素
- 查看右下角的node detail
Appium
Appium是一个开源、跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持iOS、Android和FirefoxOS平台。Appium驱动Android的UiAutomator框架,使用Selenium的WebDriver JSON协议
原理
Appium的核心是一个web服务器,提供了一套Rest接口。它收到客户端的连接,监听到命令,接着在移动设备上执行这些命令,然后将执行结果放在http响应中返还给客户端。
特点:多语言编写测试代码,可以将服务器放在不同的机器上
环境搭建
- appium的客户端安装。安装完后,在启动页面设置 host:0.0.0.0 port:4723
- 安装appium-python库:pip install appium-python-client
注意:启动appium客户端时必须右键选择“以管理员身份运行”,否则在运行过程中会遇到权限问题。
APP的重置策略
- 默认:测试后停止并清除应用数据,不卸载apk
- fullRest:在会话开始前、测试后,停止APP,清除APP数据并卸载apk
- noReset:不要停止应用程序,不要清除应用数据,不要卸载apk
启动设置-指定参数
from appium import webdriver import time desired_cap = {} # 必须参数,定义被测脚本的平台属性,不区分大小写,但必须是Android desired_cap['platformName'] = 'Android' # 必须参数,被测模拟器/手机的版本 desired_cap['platformVersion'] = '6.0.1' # 可以写任意的值,但是不能为空 desired_cap['deviceName'] = '127.0.0.1:7555' # 必须参数,指定被测软件的包名 desired_cap['appPackage'] = 'com.android.settings' # 必须参数,指定要打开的APP页面是哪个 desired_cap['appActivity'] = '.Settings' # 不是必须的,一般需要指定 desired_cap['automationName'] = 'Uiautomator2' # 是否不清空数据 desired_cap['noReset'] = True # 设置命令的超时时间 desired_cap['noCommandTimeout'] = 6000 # 用于设置中文输入 desired_cap['unicodeKeyboard'] = True desired_cap['resetKeyboard'] = True webdriver.Remote("http://127.0.0.1:4723/wb/hub", desired_cap)
常见元素定位
通过id定位
在安卓中,id属性是指resource-id。这个值不一定唯一
# id_value指的是id的属性值 driver.find_element('id',id_value)
通过xpath定位
driver.find_element('xpath',xpath_value)
todo
先跳过学习180-190节,appium环境没准备好。
如果对python自动化测试、web自动化、接口自动化、移动端自动化、大型互联网架构技术、面试经验交流等等感兴趣的老铁们,可以关注我。我会在公众号(程序员阿沐)/群里(810119819)不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。欢迎分享,欢迎评论,欢迎转发。需要资料的同学可以关注我获取资料链接。