1. 程式人生 > >4、通過uiautomatorviewer實現appium元素定位

4、通過uiautomatorviewer實現appium元素定位

應該 new 實現 des div git IT webdriver lec

熟悉selenium自動化的小夥伴應該知道WebDriver 提供了八種元素定位方法:

id
name
class name
tag name
link text
partial link text
xpath
css selector

appium元素定位和WebDriver略微有些差異,具體差異在哪裏,下面會具體介紹,在此之前,我們先打開uiautomatorviewer.bat(在sdk/tools路徑下)

技術分享圖片

appium元素定位一:通過 Id 定位

技術分享圖片

如上圖所示resource-id 就是我們要找的 Id 了

使用方法:

driver.findElement(By.id("com.android.calculator2:id/digit_9"))

appium元素定位二:通過Class Name 定位

使用 ClassName 一般獲得的 view 都不止一個, 所以應該需要遍歷一遍得到的 views, 然後縮小搜索條件來獲得目標控件。 不推薦使用
技術分享圖片

driver.findElement(By.ClassName("android.widget.Button"));

appium元素定位三:通過XPath 定位

找父標簽的class

技術分享圖片

driver.findElement(By.xpath("android.widget.FrameLayout/android.support.v4.view.ViewPager/android.widget.Button"))

appium元素定位四:通過Accessibility ID 定位

這個方法屬於 Appium 擴展的定位方法。Accessibility ID Android 上面就等同於 contentDescription。 這個屬性是方便一些生理功能有缺陷的
人使用應用程序的。 比如我們有一個 ImageView 裏面放置一張顏色復雜的圖片, 可能一些色弱色盲的人,分不清這張圖片中畫的是什麽東西。 如果用戶安裝了輔助瀏覽工具比如 TalkBackTalkBack 就會大聲朗
讀出用戶目前正在瀏覽的內容。 TextView 控件 TalkBack 可以直接讀出裏面的內容, 但是 ImageView,TalkBack 就只能去讀 contentDescription 的值, 告訴用戶這個圖片到底是什麽。


鑒於這是一個隱藏屬性, 而 Android 上用於查找控件的各種屬性可能有所缺失或者有重復(比如 id重復, 比如一個 list 下面的所有項可能都是叫做“id/text1”) , 所以最佳的辦法就是跟開發團隊溝通好每個
view 都賦予一個唯一的 contentDescription。其實, 我們的核心是要找到元素的 contentDescription 屬性。 它就是元素的 content-desc

技術分享圖片

driver.findElementByAccessibilityId("加").click();


appium元素定位五:通過android uiautomator 定位

AndroidUIAutomator是一個強有力的元素定位方式,它是通過Android UIAutomator類庫去找元素,一個元素的任意屬性都可以通過 android uiautomator 方法來進行定位, 但要保證這種定位方式的唯一性。

技術分享圖片

driver.findElementByAndroidUIAutomator("new UiSelector().text(\"+\")").click(); 

4、通過uiautomatorviewer實現appium元素定位