一匿醒、獲取APP的package(包名)和activity
在使用android自動化測試工具monkeyrunner和appium中啟動應(yīng)用時,需要填寫被測程序的包名和啟動的Activity峰髓,以下有幾種查看應(yīng)用包名package和入口activity名稱的方法:
1.使用aapt//aapt是sdk自帶的一個工具,在sdk\builds-tools\目錄下
>以手機淘寶APK為例,CMD切換到aapt.exe目錄執(zhí)行:aapt dump badging D:\work\appium\shoujitaobao_174.apk (放置手機淘寶APK的位置)
>運行后的結(jié)果中以下兩行分別是應(yīng)用包名package和入口activity名稱
package: name=’com.taobao.taobao’
launchable-activity: name=’com.taobao.tao.welcome.Welcome’
注:在android sdk目錄搜索可以找到aapt.exe,如果沒有可以下載apktool乍狐。
2.各種權(quán)限都開啟,使用sdk/tools目錄下hierarchyviewer.bat 工具可以獲得(可以查看對應(yīng)的app的activity)
3.通過在CMD窗口中執(zhí)行adb logcat -v time -s ActivityManager查看對應(yīng)的字段
在CMD窗口中執(zhí)行adb logcat -v time -s ActivityManager,然后在模擬器或者手機中點擊應(yīng)用進入固逗,如點擊系統(tǒng)設(shè)置浅蚪,進入后會有相應(yīng)的日志信息打印出來藕帜,在信息中查找 cmp=com.android.settings/.Settings
4.通過在CMD窗口中執(zhí)行adb shell dumpsys window w |findstr \/ |findstr name=, 然后點擊需要運行的app,即可查看到相應(yīng)的package和activity
二惜傲、SDK-tools元素定位工具
1.adroid-sdk的安裝目錄tools下有1個自帶的工具uiautomatorviewer洽故,打開后,如下所示:
2.首先在模擬器或者真機上打開APP軟件盗誊,進入主界面时甚,然后點擊uiautomatorviewer軟件左上角的手機圖標郎任,如下圖
得到的界面如下路捧,選中元素即可看到元素的layout信息,比如下方的定位框即可以通過ID來定位爪模,也可以通過Xpath來定位
三开镣、appium自帶的Inspector元素定位工具
Appium Inspector 是 appium 自帶的一個元素定位工具刀诬。appium Inspector 的 winddows 版本不太好用,但是 Mac 上的功能還是很強大的哑子,一般mac 上用的比較多舅列。
1.設(shè)置appium的Android Settings,點擊左上角的安卓圖標進入安卓設(shè)置卧蜓,注意設(shè)置時不要開啟appium帐要,也就是不要點擊appium右上角的“三角形”按鍵
說明:
a)Application是對應(yīng)的應(yīng)用,用Path的話不管你有沒有這個應(yīng)用弥奸,都是重新安裝一遍榨惠,所以這里直接用了應(yīng)用的包名和activity;
b)Launch AVD是將要定位的機器盛霎,這里選的是模擬器赠橙;
2.開啟appium,點擊右側(cè)的launch(三角形圖標按鍵)開啟愤炸,然后點擊appium上的inspector來進行定位期揪,使用inspector上的refresh可以刷新成當前模擬器的頁面(如果當前沒有開開任何的安卓模擬器,點擊refresh時规个,他會根據(jù)要Android settings中的launch device打開一個模擬器)
3.可能出現(xiàn)的異常
在使用Ispector過程中凤薛,你會發(fā)現(xiàn)經(jīng)常會報以下這個錯誤,每次啟動都會給你手機上重新安裝一次應(yīng)用诞仓,并且不能用鼠標指定某個元素缤苫,沒有uiautomatorviewer使用方便。這里建議大家使用uiautomatorviewer的定位方式
四墅拭、元素定位方法
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("http://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(\"+關(guān)注\")")
其他定位方法見請參考【每天1990】的博客活玲,感謝分享
歡迎關(guān)注公眾號