Appium安卓自動化元素定位怎麼做

語言: CN / TW / HK

無論想在 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 這個工具呢會比較麻煩對吧,去建立一個快捷訪問方式,放到我們的桌面上,需要用到的時候,就直接在桌面上點選這個快捷方式就可以打開了。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/33103996fae54e9e9622ca251aad8baa~tplv-k3u1fbpfcp-zoom-1.image

元素定位方式

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’)

總結

不管是什麼情況下,做 ui 自動化只要使用了 find_element 方法,通過元素定位獲取到了元素,後面才能對該元素執行操作。

我是九柄,感謝你的耐心閱讀,下次見。