Appium移动自动化测试(五)——获取apk的package、activity和element

来源:互联网 发布:闲鱼如何申请淘宝介入 编辑:程序博客网 时间:2024/05/31 19:18

通过uiautomatorviewer获取apk的package和element

转自:https://testerhome.com/topics/2518


其实之前我一直有一个疑问,Selenium测试的时候,定位控件可以使用“审查元素”。Appium是怎定位的,总不能把源码拿来挨个看吧。直到后来发现原来安卓还有uiautomatorviewer这么个神器。

Uiautomatorviewer的位置就在sdk的tools下,可以通过uiautomatorviewer.bat启动;


图5.1

启动之后就是这个样子了;


图5.2

左上角一共四个按钮,作用分别是打开本地文件、dump页面、dump压缩格式的页面、保存;


图5.3

图5.4

第三个按钮的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

1 0
原创粉丝点击