任何自動化測試,其實手動測試也是一樣的,元素定位(目標定位)是首要任務,這是最直接的測試對象呀!
好了,廢話不多說,又到了元素定位啦,之前我們已經介紹過selenium及appium常用的定位方法,下面再單獨介紹下Robotframework-AppiumLibrary常用元素定位方法,其實它們的思想是一樣的,只是格式上有些差異,詳情如下:
AppiumLibrary需要在應用程序中查找元素的所有關鍵字都使用參數locator。當提供locator值時,它將與特定元素類型的鍵屬性進行匹配。
常用支持的定位(locator)方法有:
注:robotframework-appiumlibrary 1.4.6 (本文基於此版本)
Android應用可以通過 uiautomatorviewer.bat工具來查看控件元素的屬性,該工具位於Android SDK的Tools目錄下。
1、id 定位 (本篇還是以之前的Calculator為例)
說明:匹配 @id 屬性,對應 resource-id 屬性。
案例:點擊計算器數字“ 9 ”,id可以指定也可以不指定,如果不指定策略,默認就是id定位。
數字“ 9元素屬性如下:
Click Element id=com.android.calculator2:id/digit_9
Click Element com.android.calculator2:id/digit_9
2、xpath 定位
說明:匹配 Xpath ,這也是功能最強大的一種定位方式。
案例:點擊計算器數字“ 9 ”。又有下面幾種方式:
1)、如果元素text是唯一的,可直接通過text文本定位
Click Element xpath=//*[@text='9']
2)、通過resource-id來定位
Click Element xpath=//*[@resource-id='com.android.calculator2:id/digit_9']
3)、通過class來定位,如果唯一的,不然還需要搭配其它的屬性
Click Element xpath=//android.widget.Button[@text='9'] 因為class不是唯一的,所以這里加上text
4)、通過content-desc來定位,如點擊計算器“+”號,其中元素屬性如下:
Click Element xpath=//*[@content-desc='plus']
5)、通過contains匹配來定位
Click Element xpath=//*[contains(@text,'9')] 匹配text
Click Element xpath=//*[contains(@content-desc,'plus')] 匹配content-desc
Click Element xpath=//*[contains(@resource-id,'id/op_add')] 模糊匹配resource-id
6)、組合定位
Click Element xpath=//*[@text='+'][@content-desc='plus'] 組合text和id
3、uiautomator定位
說明:通過uiautomator方式 ,這也是功能強大的一種定位方式。
案例:點擊計算器數字“ 9 ”。與xpath一樣,也有下面幾種方式:
1)、通過text定位
Click Element android=new UiSelector().text("9")
2)、通過resource-id來定位
Click Element android=new UiSelector().resourceId("com.android.calculator2:id/digit_9")
3)、通過content-desc來定位,如點擊計算器“+”號
Click Element android=new UiSelector().description("plus")
4)、組合定位
Click Element android=.resourceId("com.android.calculator2:id/digit_9").text("9") resource-id與text組合
Click Element android=.className("android.widget.Button").text("9") class與text組合
4、accessibility_id定位
說明:這屬於Appium擴展定位方法,主要是用content-desc屬性。
案例:如點擊計算器“+”號
Click Element accessibility_id=plus
綜上,是Robotframework-AppiumLibrary 幾種比較常用元素定位方法,在實踐過程中多多嘗試,熟能生巧,便可以事半功倍。