Appium自动化测试<二>

本文详细介绍了如何进行Appium的实战操作,包括Android平台的设置参数、ADB命令的使用、模拟器与真机上启动Appium应用程序的方法,以及Appium自动化测试元素定位工具的运用,如uiautomatorviewer、Inspector和Weditor。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇主要是讲的是Appium的实战。

上一篇是环境安装,戳这里跳转

在这里插入图片描述

一、Appium前置条件

描述
automationName自动化测试的引擎Appium or Selendroid
platformName使用的手机操作系统ios,Android,FirefoxOS
platformVersion手机操作系统的版本7.1 ,4.4
deviceName使用的手机或模拟器类型*
app.apk / .ipa / .zip文件指定url按装app:/storage/emulated/0/Android/data.apk
browserName做自动化时使用的浏览器名字。如果是一个应用则只需填写个室的字符串'Safari’对应iOS,‘Chrome’,‘Chromium’;'Browser’则对应 Android
appPackage绝对路径com.splash
appActivity相对于应用包名.SplashScreen
newCommandTimeout用于客户端在退出或者结束session之前, Appium等待客户端发送一条新命令所花费的时间(秒为单位)例加60
Language(Sim/Emu-only) 为模拟器设置语言例如fr
Locale(Sim/Emu-only) 为模拟器设置所在区域例如fr_CA
udid连接真机的唯设备号例如lae203187fc012g
orientation(Sim/Emu-only) 模拟器当前的方向竖屏或横屏

设置参数:

注意:1.appPackage 和 appActivity 参数存在,app 参数为空。2.app 参数与 browserName 不兼容。
platformName:Android,固定写法
platformVersion:这个是手机的Android的版本
deviceName:这个是手机的名字,一般都随意设置,方便自己识别不同手机就行
automationName:固定写法Appium
autoAcceptAlerts: true , 默认选择接受弹窗的条款,有些app启动的时候,会有一些权限的弹窗,例如
在这里插入图片描述
app:指定路径帮你安装apk应用,并打开!
noReset:true: 每次appium对app进行操作的时候,为了不保存修改的数据和app设置的内容而不影响下次使用,需要设置为true
appPackage:app启动的应用程序的文件名(通过下面ADB命令查看会很方便)
appActivity:app启动的入口文件名(通过下面ADB命令查看会很方便)
newCommandTimeout :如果APP应用程序60s无反应,那么则会自动退出,回到主页面。

配置格式:

1.1、Android:仅有的参数:

appActivity:Android里面应用程序入口启动页面
appPackage:包名(应用程序在模拟器或者真机上面都有一个唯一的名字)
举个例子:夜神上面:查找包名路径:工具—Amaze–Android–data-
在这里插入图片描述
包名就是:cn.toside.music.mobile

1.2、IOS:
{
    'platformName': 'iOS',
    'platformVersion': '7.1',
    'deviceName': 'iPhone Simulator',
    'app': myApp
}

二、参数配置

代码层面:参数配置
desired_caps = {
    # 'automationName': 'Appium',
    'platformName': 'Android',  # Android or ios
    'platformVersion': '7.1.2',  # 版本
    'deviceName': 'ye_shen_Android',  # 真机或者模拟器的名字
    'appPackage': 'cn.toside.music.mobile',  # 启动应用程序的文件名,下面第三个ADB命令获取
    'appActivity': 'cn.toside.music.mobile.MainActivity',  # 启动应用程序入口文件名,第三个ADB命令获取
    'noReset': True,  # 永远初始化,不保存数据
    'autoAcceptAlerts': True,  # 权限的弹窗
    'newCommandTimeout': 60  # 应用程序退出时间间隔
}

夜神模拟器端口号:127.0.0.1:62025 device ;127.0.0.1:62001 device

常用的ADB命令:

1.链接模拟器:adb connect 127.0.0.1:62025
在这里插入图片描述
2.查看链接的设备:adb devices
在这里插入图片描述
3.查看被测的包名以及入口启动页面:aapt dump badging 测试路径
我需要测试的应用放在:D:\exe\lx-music-mobile-v0.14.3-arm64-v8a.apk
那么命令就是:aapt dump badging D:\exe\lx-music-mobile-v0.14.3-arm64-v8a.apk
appPackage:
在这里插入图片描述
appActivity:
在这里插入图片描述
分别用这两个命令也可找得到:

aapt dump badging D:\exe\lx-music-mobile-v0.14.3-arm64-v8a.apk | findstr package
aapt dump badging D:\exe\lx-music-mobile-v0.14.3-arm64-v8a.apk | findstr Activity

三、模拟器启动一个 Appium 应用程序(Android)

根据第二点的准备工作,最后两步骤:

最后的准备:

1.appium server 启动

2.模拟器 / 手机 识别成功

Python 代码:点击运行,结果成功打开了夜神模拟器自己下载的一个应用程序。

from appium import webdriver


desired_caps = {
    # 'automationName': 'Appium',
    'platformName': 'Android',  # Android or ios
    'platformVersion': '7.1.2',  # 版本
    'deviceName': 'ye_shen_Android',  # 真机或者模拟器的名字
    'appPackage': 'cn.toside.music.mobile',  # 启动应用程序的文件名
    'appActivity': 'cn.toside.music.mobile.MainActivity',  # 启动应用程序入口文件名
    'noReset': True,  # 永远初始化,不保存数据
    'autoAcceptAlerts': True,  # 权限的弹窗
    'newCommandTimeout': 60  # 应用程序退出时间间隔
}

# 发送指令给 appium server , command_executor 是指 appium server 的地址端口
driver = webdriver.Remote(command_executor='http://127.0.0.1:4723/wd/hub', desired_capabilities=desired_caps)

在这里插入图片描述
在这里插入图片描述

三、真机启动一个 Appium 应用程序(Android)

将手机用数据线连接到电脑,并授权USB调试模式。查看连接的效果,在cmd下运行命令:adb devices查看UDID,如下图所示:

在这里插入图片描述

方法一:cmd命令行启动:-U 参数后面跟的一串字符就是手机的UDID,这个是通过第二步查到的。

根据查到的UDID启动appium服务,运行命令:appium -a 127.0.0.1 -p 4723 –U HDP9K18629901709 --no-reset
能够打开,即成功打开 Appium Server了。可以去运行代码了。运行端口4723,修改安卓手机版本即可。

要是返回这个:
在这里插入图片描述
先确认npm命令有无输出:有好办,按照下面内容走下去,没有,那就去上一篇是环境安装,戳这里跳转
在这里插入图片描述

在命令行下载 :Appium Server ,命令:npm install -g appium --ingore-webdriver-install
在这里插入图片描述

下载完成后再输入:appium -a 127.0.0.1 -p 4723 -U HDP9K18629901709 --no-reset
在这里插入图片描述

完成后运行python代码:

from appium import webdriver


desired_caps = {
    # 'automationName': 'Appium',
    'platformName': 'Android',  # Android or ios
    'platformVersion': '7.1.2',  # 模拟器版本7.1.2  手机端版本 8.1
    'deviceName': 'ye_shen_Android',  # 真机或者模拟器的名字
    'appPackage': 'cn.toside.music.mobile',  # 启动应用程序的文件名
    'appActivity': 'cn.toside.music.mobile.MainActivity',  # 启动应用程序入口文件名
    'noReset': True,  # 永远初始化,不保存数据
    'autoAcceptAlerts': True,  # 权限的弹窗
    'newCommandTimeout': 60  # 应用程序退出时间间隔
}

# 发送指令给 appium server , command_executor 是指 appium server 的地址端口
driver = webdriver.Remote(command_executor='http://127.0.0.1:4723/wd/hub', desired_capabilities=desired_caps)

方法二:还是用windows版本启动:只不过要在代码里修改与模拟器不相同的版本

在这里插入图片描述
只需修改上面的代码:'platformVersion': '8.1', # 模拟器版本7.1.2 手机端版本 8.1即可!!!按照自己的来,博主是链接了两个都有:
在这里插入图片描述

四、查看日志

在这里插入图片描述
蓝色:appium server 启动 ,基于http里面的Post请求,创建一个会话createSession()
灰色:WINDOS发出的指令,包含ADB命令
黄色:警告 相当于debug

在这里插入图片描述
用到Android SDK里面的UiAutomator1这个框架。并且Android SDK里面还存UiAutomator2这个框架。现在还是UiAutomator1。
在这里插入图片描述
python自动化脚如何操作手机终端的过程:

1、自动化脚本发送HTTP请求,请求参数:终端设置参数
2、创建会话
3、确认终端设备是否链接,并且确认安卓版本,确认设置参数是否与终端的设置是否一致
4、appium会推送一个jay包-->AppiumBootstrap.jar包,在模拟器上,相当于Api指令,appium server指令进行接收,操控手机端。
5、响应http请求
6、下一个http请求

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
模拟器上,相当于Api指令,appium server指令,操控手机端。
在这里插入图片描述

五、Appium 自动化测试元素定位工具使用

1、uiautomatorviewer.bat

iautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。

启动uiautomatorviewer.bat两种启动方式:
a.通过上一篇文章添加的全局变量,打开cmd然后输入:uiautomatorviewer.bat
在这里插入图片描述
在这里插入图片描述
b.在android-sdk安装目录下tools文件夹,有启动bat入口:uiautomatorviewer.bat
在这里插入图片描述
在启动模拟器或者真机之后:点左上角安卓机器人按钮Devices Screenshot按钮刷新页面
在这里插入图片描述
就会出现页面:右边是它的属性。
在这里插入图片描述

元素定位操作:移动鼠标到需要定位的元素上,如搜索输入框

在这里插入图片描述

需要刷新界面,再次点击Devices Screenshot按钮刷新页面。

在这里插入图片描述

右下角可以看到元素对应的属性:
属性解释
index索引
text文本
resource-id唯一id
package包名
content-desc属性是用来描述该元素的作用,一般都是为空
checkable是否能选择
checked可以选择
clickable能点击
enabled可用
focusable能聚焦
focused已经聚焦
scrollable能滚动
long-clickable长按
password输入框是不是已密文显示
selected选择
bounds坐标,两组,第一组原点在左上角,第二在右下角
  • iautomatorviewer 缺陷:
  • 不可以可其他终端占用,包括appium里的Inspector和Weditor工具

2、Inspector

  • Inspector是 Appium server 自带的一个元素定位工具,可以查询到我们需要定位的元素的 id 等各种信息

在这里插入图片描述
在这里插入图片描述

  • JSON Representation:贴我们的配置项参数 注意布尔值为小写
desired_caps = {
    'platformName': 'Android',
    'platformVersion': '7.1.2',
    'deviceName': 'ye_shen_Android',
    'appPackage': 'cn.toside.music.mobile',
    'appActivity': 'cn.toside.music.mobile.MainActivity',
    'noReset': true,
    'autoAcceptAlerts': true, 
    'newCommandTimeout': 60
}
  • 点击另存为,然后保存,那页面就会变成这样:

在这里插入图片描述

  • 下一步我们点击启动会话,那页面跳转到这个页面了

在这里插入图片描述

  • 操作应用 选择APP应用的需要操作的位置,点击Tap按钮,模拟的是点击按钮
    在这里插入图片描述
  • 但是有些页面无法调试:
    在这里插入图片描述

3、Weditor(推荐)

  • Uiautomator2 python的第三方库,appUi自带的框架定位方式。
  • 安装:
  • pip install Uiautomator2
  • python -m uiautomator2 init
  • pip install weditor
    如果安装不了weditor参考我的另外一篇文章:戳这里
    验证:weditor --help
  • 3.1启动
  • cmd输入:weditor,会弹出web页面:http://localhost:17310/#
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
  • 我现在换了一个app测试叫做:测测app:
desired_caps = {
    'platformName': 'Android',
    'platformVersion': '7.1.2',
    'deviceName': 'ye_shen_Android',
    'appPackage': 'com.xxwolo.cc5',
    'appActivity': 'com.cece.app.MainActivity',
    'noReset': true,
    'autoAcceptAlerts': true,
    'newCommandTimeout': 60
}
  • 根据上面的text或者xpath定位方式可以定位到页面元素,而且给出了值
    在这里插入图片描述
    在这里插入图片描述

  • 如果是真机的话,那么:
    在这里插入图片描述
    结果:resourceld 是唯一id,真机调试借鉴文章
    在这里插入图片描述

  • 注意一点:如果weditor显示app页面错位,那么去清除浏览器缓存即可恢复正常

  • 第二点:weditor的html属性显示出来的description栏位对应的就是 content-desc

六、查看ADB命令:常用adb操作

戳这里

原文戳这里

  • 查看app包名和启动页Activity的方法:打开
  • 前提:adb连接手机设备,并且点击需要获取APP应用,并迅速执行相关命令
  • 一般会包含 ui 、activity、Activity单词在内。
  • THF123456 换自己的UIID
adb -s THF123456 shell dumpsys window w |findstr \/ |findstr name=

即:
"appPackage": "com.ss.android.ugc.aweme",
"appActivity": "com.ss.android.ugc.aweme.splash.SplashActivity"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值