专栏首页自学测试之道Appium之获取app信息及界面定位方法

Appium之获取app信息及界面定位方法

一、获取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’

package

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

activity

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

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

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,打开后,如下所示:

uiautomatorviewer元素定位

UI定位界面

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

UI工具连接APP

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

UI工具定位APP

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

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

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

Android Settings

说明:

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

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

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

设置apk路径并开启appium

Ispector Window

3.可能出现的异常

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

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】的博客,感谢分享

本文分享自微信公众号 - 自学测试之道(zxceshi)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • netty(1): IO线程模型的变迁

    jdk 1.4之前所有的socket通信都采用同步阻塞模式(bio),这种一请求一应答的通信模型简化了上层应用的开发,但是在可靠性和性能方面存在巨大的弊端,下图...

    yiduwangkai
  • 使用 VS Code 上手体验 Flutter

    Flutter 目前支持 Android Studio/Intellij/Visual Studio Code/终端&文本编辑器 四种方式来编写, AS 我已经...

    程序亦非猿
  • Kotlin实现图片上传保存查看

    SpringBoot默认的访问目录默认是resource下,我们要想访问服务包之外的文件需要自定义,下面我们以文件上传访问作为载体……

    大话swift
  • 人生巅峰的梦想之初!—Intent全解析

    Hi,新的征程开始啦,关于各种控件我们给大家介绍的已经差不多了,各位花粉已经陪伴着我们走过了一个阶段,本篇就是我们新征程的开始,当然,我们会在新征程之中偶尔穿插...

    下码看花
  • Android视频技术探索之旅:美团外卖商家端的实践

    美美导读:移动互联网时代,4G的普及推动了移动视频的发展,丰富的视频内容满足了用户多样化的需求。美团外卖商家端也尝试引入了视频功能,旨在提升商品信息描述的丰富度...

    美团技术团队
  • Android动态批量加载Drawable中的图片

    前阵子因为项目原因,也一直在更新C#相关的东西,现在项目先告一段落,我们再回到Andriod这块,先说一下,最近的几篇更新最终都会围绕一个小程序来进行的知识点分...

    Vaccae
  • android UiAutomator如何根据颜色判断控件的状态

    本人在用UiAutomator做测试的时候,经常会遇到一些控件因为不同的条件显示不同的颜色,在学习了UiAutomator图像处理之后,自己尝试写了一个方法来处...

    八音弦
  • TensorFlow 1.x最后一更、Android 10最新特性,这是谷歌开发者日

    2019 谷歌开发者大会于 9 月 10 日和 11 日在上海举办,大会将分享众多开发经验与工具。在第一天的 KeyNote 中,谷歌发布了很多开发工具新特性,...

    机器之心
  • 谈下微信小程序的抓取技巧

    今天聊下微信小程序的抓取,其实小程序的抓取不难,主要解决抓包和如何调试小程序这两个问题。如果你运用chrome调试已经比较熟练了的话,就手到擒来。

    sergiojune
  • Django实战-日志

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(...

    小团子

扫码关注云+社区

领取腾讯云代金券