app定位方式,本文只講Android手機的定位方式。
前提條件是adb連接到模擬器或者是手機(具體連接方式這里不再講解),證明已連接到設備
adb devices
app元素定位工具一:UI Automator Viewer
這個工具是Android SDK自帶的一個定位工具,具體頁面截圖如下:
app元素定位工具二:Appium工具
啟動Appium,啟動之后,頁面有一個放大鏡的按鈕,如圖所示:
點擊放大鏡按鈕,進入配置項,如果所示:
platformName -- 系統名稱
platformVersion -- 系統的版本
deviceName -- 機型(隨意添)
appPackage -- app包名(這里以淘寶為例)
appActivity -- 歡迎頁面
noReset -- 啟動app時不要清除app里的原有的數據(True)
獲取appPackage和appActivity的方法,com命令進入Android-sdk/build-tools-29.0.2目錄下,執行命令
aapt dump badging xxx.apk(安裝包名稱)
app包名
appActivity名稱:
設置好啟動項參數后,啟動會話。
接下來說元素定位表達式,appium中的定位表達式,繼承了selenium中的八大定位表達式(selenium的八大定位前邊已經說過,就不再贅述),同時也有自己的定位表達式,分別是:
AndroidUiAutomator定位
使用UiAutomator中的UiSelector類來處理元素定位,該方法的參數為UiSelector類定位元素的表達式
new UiSeletor().函數名稱("定位表達式")
實例化一個UiSelector對象,然后通過實例調用接口。
這里常用的是ANDROID_UIANTOMATOR和ACCESSIBILITY_ID元素定位
舉個栗子:
通過resrouce-id來定位
find_element_by_android_uiautomator('new UiSelector().resourceId("com.taobao.taobao:id/textview_goods_title")')
通過text來定位
find_element_by_android_uiautomator('new UiSelector().text("文本內容")')
通過content-desc定位
find_element_by_android_uiautomator('new UiSelector().description("勾選寶貝")')
id、class、content-desc定位
通過id來定位(resrouce-id)
find_element_by_id("com.taobao.taobao:id/textview_goods_title")
通過ClassName定位(class)
.find_element_by_class_name("android.widget.CheckBox")
通過AccessibilityId定位(content-desc)
find_element_by_accessibility_id("勾選寶貝")
app定位中不建議使用xpath定位,多以此處也不再多贅述了。