一、获取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’
packagelaunchable-activity: name=’com.taobao.tao.welcome.Welcome’
activity注:在android sdk目录搜索可以找到aapt.exe,如果没有可以下载apktool。
2.各种权限都开启,使用sdk/tools目录下hierarchyviewer.bat 工具可以获得(可以查看对应的app的activity)
hierarchyviewer3.通过在CMD窗口中执行adb logcat -v time -s ActivityManager查看对应的字段
在CMD窗口中执行adb logcat -v time -s ActivityManager,然后在模拟器或者手机中点击应用进入,如点击系统设置,进入后会有相应的日志信息打印出来,在信息中查找 cmp=com.android.settings/.Settings
4.通过在CMD窗口中执行adb shell dumpsys window w |findstr \/ |findstr name=, 然后点击需要运行的app,即可查看到相应的package和activity
二、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 Window3.可能出现的异常
在使用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")----(http://www.cnblogs.com/xxyBlogs/p/4244073.html)
通过name定位:driver.find_element_by_name()
通过text定位:driver.find_elements_by_android_uiautomator("new UiSelector().text(\"+关注\")")
其他定位方法见请参考【每天1990】的博客,感谢分享
欢迎关注公众号
网友评论