移动端自动化测试

常用的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的使用

主要用于查看应用中的元素属性特性,帮助我们在代码中进行元素定位

使用方法:

  1. 进入Android-sdk-windows\tools路径,直接双击uiautomatorviewer.bat即可启动
  2. 电脑连接真机或模拟器
  1. 启动待测试的APP
  2. 点击uiautomatorviewer左上角的Device screenshot按钮
  1. 点击希望查看属性的元素
  2. 查看右下角的node detail

Appium

Appium是一个开源、跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持iOS、Android和FirefoxOS平台。Appium驱动Android的UiAutomator框架,使用Selenium的WebDriver JSON协议

原理

Appium的核心是一个web服务器,提供了一套Rest接口。它收到客户端的连接,监听到命令,接着在移动设备上执行这些命令,然后将执行结果放在http响应中返还给客户端。

特点:多语言编写测试代码,可以将服务器放在不同的机器上

环境搭建

  1. appium的客户端安装。安装完后,在启动页面设置 host:0.0.0.0 port:4723
  2. 安装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)不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。欢迎分享,欢迎评论,欢迎转发。需要资料的同学可以关注我获取资料链接。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值