您的位置:首页 > 移动开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息