天天看點

Appium元素定位——App自動化測試

無論想在 app 頁面中進行怎樣的操作,我們先得找到那個要操作的元素。比如你想直接點選一個按鈕,那麼你就必須要先找到這個按鈕。如果你想在輸入框當中去輸入一些内容,那麼你就必須要先找到這個輸入框。

這個尋找需要操作的元素的過程,叫做元素定位。

元素定位函數

在大多數的APP操作過程當中,首先必須先找到需要操作的元素,這個過程就叫元素定位。

在Appium當中進行元素定位的函數叫 find_element,他傳遞兩個參數。第1個參數是定位元素的方式, 第二個參數是這個方式的值。 舉個例子,通過 ID 定位一個元素,第1個參數就填 id,第2個參數表示ID的值。

el = driver.find_element('id', 'value')      

得到的 el 是一個元素對象,擷取元素的屬性都很簡單:

el.text  #擷取元素文本
el.rect  #擷取元素坐标
el.get_attribute('clickable')  #擷取元素clickable屬性      

元素定位工具:uiautomatorviewer

那麼,id 的值到哪裡去擷取呢?在 SDK 中有一個 tools 目錄,這個目錄有一個叫 uiautomatorviewer 的工具,能檢視每個元素的屬性,當然也包括 id 屬性。直接找到對應的檔案,點選就能看到它的界面。

要檢視一個元素的屬性,隻需把滑鼠移動到元素上,右側就會顯示每個元素的屬性。每一次點選 uiautomatorviewer 這個工具呢會比較麻煩對吧,去建立一個快捷通路方式,放到我們的桌面上,需要用到的時候,就直接在桌面上點選這個快捷方式就可以打開了。

Appium元素定位——App自動化測試

元素定位方式

app 自動化測試主要的元素定位方式有幾種:

  • MobileBy.XPATH
  • MobileBy.ID
  • MobileBy.ACCESSIBILITY_ID
  • MobileBy.ANDROID_UIAUTOMATOR
  • MobileBy.CLASS_NAME

id 和 xpath 是用得最多而且文法通用的兩種方式,盡量使用 id 來定位,如果元素沒有 id 屬性或者 id 不唯一,再用 xpath 元素定位方式。

Xpath 是一種通用的路徑定位語言,既可以用在 web 網頁中,又可以用在 app 頁面中,它可以通過組合多種屬性條件讓定位表達式更精确,具體的Xpath用法,可以參考XPath元素定位方式 。

其次 Android Uiautomator 這種方式适合在 Java 語言中使用,其他語言用起來不是很友善。如果需要,可以參考 官網 的用法。

通過檢視頁面屬性,将複制出來的屬性放到函數中,就可以定位元素了。比如檢視到某個元素的 id 為 ​

​com.keda.say:id/username​

​ ,對應的代碼就是:

driver.find_element('id', 'com.keda.say:id/username')      

也可以轉寫成 Xpath 表達式:

driver.find_element('xpath', '//*[@id="com.keda.say:id/username"]')      

擷取元素屬性

find_element 方法定位到元素後,會得到一個元素對象,使用這個對象能擷取元素的屬性,或者調用屬性的方法和操作事件。

  • element.location_in_view
  • element.location
  • element.rect
  • element.text
  • element.get_attribute(‘clickable’)

總結