本教程是基于本人學習android NativeApp自動化測試過程積累總結的,學習過程用到的工具是appium+python+UIAutomator+android手機+待測APP!
一、準備定位工具
首先我們需要先下載android studio,然后安裝android sdk,在系統變量里添加export ANDROID_HOME="/Users/xxx/Library/Android/sdk"
。我們需要的工具就是uiautomator,它在android_sdk/tools/uiautomatorviewer
里。
二、啟動定位工具
1、在終端上用命令進入tools目錄,我的tools目錄在/Users/wuyanjiao/Library/Android/sdk/tools
,然后直接執行命令./uiautomatorviewer
,當看到如下頁面就表示工具啟動成功。
2、手機連接上電腦
用數據線把手機和電腦連接上,并把手機設置成開發者模式,USB調試開啟。然后在終端上執行adb devices
,可以查看是否連接成功。連接成功后,我們在手機上打開待測APP,在這里我以自帶計算器APP為例。打開后,點擊圖片中左上角第二個按鈕,就可以看到app的頁面元素了。想要找哪個元素,鼠標移動到上面,就可以看到詳細的元素了。
三、基本定位元素方法
1、find_element_by_id()
當遇到resource-id有唯一值。以定位計算器上8這個元素并點擊為例:
number8 = self.driver.find_element_by_id("digit8")
number8.click()
2、find_elements_by_id()
當遇到的resource-id有多個相同的值,可以使用該方法。以元素在列表中的位置來定位,以定位計算器上的8并點擊為例:
elements = self.driver.find_elements_by_id("digit8")
elements[0].click()
3、find_element_by_accessibility()
當某個元素的content-desc有值的時候,可以使用該方法。以定位計算器上的÷號為例:
element = self.driver.find_element_by_accessibility_id(u"除")
element.click()
4、find_elements_by_accessibility()
當頁面的content-desc值有多個相同的時候,可以使用該方法。以定位計算器上的÷號為例:
elements = self.driver.find_elements_by_accessibility_id(u"除")
elements[0].click()
5、find_element_by_class_name()
當頁面的class有值的時候,可以使用該方法,以向計算器上的輸入框輸入數字為例:
input=self.driver.find_element_by_class_name("android.widget.EditText")
input.send_keys("10")
6、find_elements_by_class_name()
當頁面的class有多個值的時候,可以使用該方法,以向計算器上的輸入框輸入數字為例:
input=self.driver.find_elements_by_class_name("android.widget.EditText")
input[0].send_keys("10")
7、press_keycode()
該方法是發送鍵值,以下是部分鍵值,例如手機上的按鍵“0”它的鍵值是7,手機上的按鍵“1”,它的鍵值是8。若要了解更詳細的android鍵值表,可以訪問此鏈接:http://www.cnblogs.com/larack/p/4223465.html
以下是計算器計算10除以5的具體代碼:
#輸入10
self.driver.press_keycode(8)
self.driver.press_keycode(7)
#點擊除號
element = self.driver.find_element_by_accessibility_id(u"除")
element.click()
#輸入5
self.driver.press_keycode(12)
#點擊=號
equal = self.driver.find_element_by_id("equal")
equal.click()