Appium移动自动化测试(五)——获取apk的package、activity和element
2016-06-21 21:13
337 查看
通过uiautomatorviewer获取apk的package和element
转自:https://testerhome.com/topics/2518其实之前我一直有一个疑问,Selenium测试的时候,定位控件可以使用“审查元素”。Appium是怎定位的,总不能把源码拿来挨个看吧。直到后来发现原来安卓还有uiautomatorviewer这么个神器。
Uiautomatorviewer的位置就在sdk的tools下,可以通过uiautomatorviewer.bat启动;
[align=center]图5.1[/align]
启动之后就是这个样子了;
[align=center]图5.2[/align]
左上角一共四个按钮,作用分别是打开本地文件、dump页面、dump压缩格式的页面、保存;
[align=center]图5.3[/align]
[align=center]图5.4[/align]
第三个按钮的dump模式,右侧展示的是树的形式,看上去简介了很多,方便元素的查找和查看。
除此之外页面右侧还有列表的树形结构,点击任意控件可在右下方显示控件的详细信息,树形结构还支持搜索功能,不过搜索的是content-desc的内容。
获取apk当前activity
转自:http://blog.csdn.net/youxiansanren/article/details/44220419自动化测试需要获得当前的activity,来判断处于的页面是否正确;
方法一:
hierarchy view中可以获取设备当前页面的package和activity信息
1、在cmd下输入“adb devices”可以查到对应的连接
2、进入对应的android sdk目录下,进入tools目录,双击“hierarchyviewer.bat”,弹出的页面如下所示
其中,“com.Qunar”是对应的package,“com.mqunar.atom.hotel.ui.activity.HotelListActivity”是当前页面的activity
hierarchy view经常连不上真机,无法获得activity,所以直接用 adb命令来查看当前运行的 activity就可以;
方法二:
1、cmd命令中输入:adb shell 进入shell命令模式
2、shell中输入:logcat | grep ActivityManager 真机运行应用,可以实时 查看当前正在运行的Activity;
I/ActivityManager( 511): START u0 {act=Android.intent.action.INSERT dat=content
://com.example.notepad.provider.NotePad/notes cmp=com.example.android.notepad/.N
oteEditor} from pid 12896
cmp=com.example.android.notepad/.NoteEditor 中,
com.example.android.notepad 是包名, NoteEditor是当前活动的activity;
方法三:
1.cmd命令中输入:adb shell dumpsys activity activities
查看
Main stack:
* TaskRecord{42c4e888 #11 A com.example.android.notepad U 0}
numActivities=2 rootWasReset=true userId=0
affinity=com.example.android.notepad
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER
] flg=0x10200000 cmp=com.example.android.notepad/.NotesList}
realActivity=com.example.android.notepad/.NotesList
askedCompatMode=false
lastThumbnail=android.graphics.Bitmap@42c89cd8 lastDescription=null
lastActiveTime=8685859 (inactive for 113s)
cmp=com.example.android.notepad/.NotesList中,
com.example.android.notepad 是包名, NotesList是当前活动的activity;
注:上述两种方法获取的activity会有多个,建议用uiautomatorviewer获取到的package去搜索,从而快速准确的获取对应的activity
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories