Appium之获取app的package和activity以及UI界面定位方法

简介: 一、获取APP的package(包名)和activity在使用android自动化测试工具monkeyrunner和appium中启动应用时,需要填写被测程序的包名和启动的Activity,以下有几种查看应用包名package和入口activity名称的方法:1.

一、获取APP的package(包名)和activity

在使用android自动化测试工具monkeyrunner和appium中启动应用时,需要填写被测程序的包名和启动的Activity,以下有几种查看应用包名package和入口activity名称的方法:

1.使用aapt//aapt是sdk自带的一个工具,在sdk\builds-tools\目录下

>以手机淘宝APK为例,CMD切换到aapt.exe目录执行:aapt dump badging D:\work\appium\shoujitaobao_174.apk (放置手机淘宝APK的位置)

>运行后的结果中以下两行分别是应用包名package和入口activity名称

package: name=’com.taobao.taobao’

img_ae3271eaff44a361db730b82a4d3e5ff.png
package

launchable-activity: name=’com.taobao.tao.welcome.Welcome’

img_6a8dd275c897e493e14961be95f7c1c5.png
activity

注:在android sdk目录搜索可以找到aapt.exe,如果没有可以下载apktool。

2.各种权限都开启,使用sdk/tools目录下hierarchyviewer.bat 工具可以获得(可以查看对应的app的activity)

img_cf2aeb2366a10b326f28cfdec256adf8.png
hierarchyviewer

3.通过在CMD窗口中执行adb logcat -v time -s ActivityManager查看对应的字段

在CMD窗口中执行adb logcat -v time -s ActivityManager,然后在模拟器或者手机中点击应用进入,如点击系统设置,进入后会有相应的日志信息打印出来,在信息中查找 cmp=com.android.settings/.Settings

二、SDK-tools元素定位工具

1.adroid-sdk的安装目录tools下有1个自带的工具uiautomatorviewer,打开后,如下所示:

img_8d11fb5854da8a1b1bcd3eba89140a5b.png
uiautomatorviewer元素定位
img_7dc5ca7549825886efa6a7280a0157ab.png
UI定位界面

2.首先在模拟器或者真机上打开APP软件,进入主界面,然后点击uiautomatorviewer软件左上角的手机图标,如下图

img_bb7be3f712c9812d386bc662803193bf.png
UI工具连接APP

得到的界面如下,选中元素即可看到元素的layout信息,比如下方的定位框即可以通过ID来定位,也可以通过Xpath来定位

img_4f73bf3e4bc13b024a4a6a6c5280cc98.png
UI工具定位APP

三、appium自带的Inspector元素定位工具

Appium Inspector 是 appium 自带的一个元素定位工具。appium Inspector 的 winddows 版本不太好用,但是 Mac 上的功能还是很强大的,一般mac 上用的比较多。

1.设置appium的Android Settings,点击左上角的安卓图标进入安卓设置,注意设置时不要开启appium,也就是不要点击appium右上角的“三角形”按键

img_621a7f0859fd2f9ca20f46acf1bc26f1.png
Android Settings

说明:

a)Application是对应的应用,用Path的话不管你有没有这个应用,都是重新安装一遍,所以这里直接用了应用的包名和activity;

b)Launch AVD是将要定位的机器,这里选的是模拟器;

2.开启appium,点击右侧的launch(三角形图标按键)开启,然后点击appium上的inspector来进行定位,使用inspector上的refresh可以刷新成当前模拟器的页面(如果当前没有开开任何的安卓模拟器,点击refresh时,他会根据要Android settings中的launch device打开一个模拟器)

img_c321015a6cd5a1f1586bbef366da2536.png
设置apk路径并开启appium
img_2bcda6cc4bfa21b3275f8888fa7e3db2.png
Ispector Window

3.可能出现的异常

在使用Ispector过程中,你会发现经常会报以下这个错误,每次启动都会给你手机上重新安装一次应用,并且不能用鼠标指定某个元素,没有uiautomatorviewer使用方便。这里建议大家使用uiautomatorviewer的定位方式

img_f0755ee51510ca0826cbfbb128656b83.png
Ispector异常界面

四、元素定位方法

1.格式:find_element_by_定位方式(value)

通过id定位:driver.find_element_by_id("xxx")

通过class_name定位:driver.find_element_by_class_name("android.widget.RelativeLayout")

通过xpath定位:driver.find_element_by_xpath("//android.widget.LinearLayout[1]/android.widget.XXX")

通过name定位:driver.find_element_by_name()

通过text定位:driver.find_elements_by_android_uiautomator("new UiSelector().text(\"+关注\")")

其他定位方法见请参考【每天1990】的博客,感谢分享

目录
相关文章
|
2月前
|
Ubuntu Java 测试技术
【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测
【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测
|
2月前
|
存储 测试技术 UED
Qt中实现界面回放的艺术:从理论到代码“ (“The Art of Implementing UI Playback in Qt: From Theory to Code
Qt中实现界面回放的艺术:从理论到代码“ (“The Art of Implementing UI Playback in Qt: From Theory to Code
84 1
|
2月前
|
安全 Linux Nacos
如何使用公网地址远程访问内网Nacos UI界面查看注册服务
如何使用公网地址远程访问内网Nacos UI界面查看注册服务
92 0
|
1天前
|
异构计算 Python
30行代码实现一个带UI界面的图片背景移除工具:并附带web网页
人工智能技术正处于蓬勃发展中,移除图片背景的方法众多,涵盖了各式各样的实现途径和模型。然而,这些方法往往在安装和配置环境方面稍显复杂。今天,介绍一种极其简便的方法——大约30行代码,就能实现这一功能。虽然相比之下可能稍显简单,但对于不太苛刻的需求来说,这种方法颇为方便实用。
|
27天前
|
XML Android开发 数据格式
【Android UI】使用RelativeLayout与TableLayout实现登录界面
【Android UI】使用RelativeLayout与TableLayout实现登录界面
30 5
|
2月前
|
JavaScript API
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
29 1
|
21天前
|
机器学习/深度学习 算法 数据可视化
【深度学习实战】基于深度学习的图片风格快速迁移软件(Python源码+UI界面)
【深度学习实战】基于深度学习的图片风格快速迁移软件(Python源码+UI界面)
|
21天前
|
机器学习/深度学习 算法 数据可视化
基于OpenCV的人脸检测软件(含Python源码+UI界面+图文详解)
基于OpenCV的人脸检测软件(含Python源码+UI界面+图文详解)
|
2月前
|
编解码 C++
Qt第一课 第一个ui界面
Qt第一课 第一个ui界面
28 2
|
2月前
|
安全 Linux Nacos
如何在CentOS使用Docker运行Nacos容器并实现无公网IP远程访问UI界面
如何在CentOS使用Docker运行Nacos容器并实现无公网IP远程访问UI界面