uiautomator的定位方法

https://www.bbsmax.com/A/Gkz1mWKqzR/

單個元素定位:

driver.find_element_by_accessibility_id(id)

driver.find_element_by_android_uiautomator(uia_string)

driver.find_element_by_class_name(name)

driver.find_element_by_css_selector(css_selector)

driver.find_element_by_id(id_)

driver.find_element_by_ios_predicate(predicate_string)

driver.find_element_by_ios_uiautomation(uia_string)

driver.find_element_by_link_text(link_text)

driver.find_element_by_name(name)

driver.find_element_by_partial_link_text(link_text)

driver.find_element_by_tag_name(name)

driver.find_element_by_xpath(xpath)

多個元素定位:

driver.find_elements_by_accessibility_id(id)

driver.find_elements_by_android_uiautomator(uia_string)

driver.find_elements_by_class_name(name)

driver.find_elements_by_css_selector(css_selector)

driver.find_elements_by_id(id_)

driver.find_elements_by_ios_predicate(predicate_string)

driver.find_elements_by_ios_uiautomation(uia_string)

driver.find_elements_by_link_text(text)

driver.find_elements_by_name(name)

driver.find_elements_by_partial_link_text(link_text)

driver.find_elements_by_tag_name(name)

driver.find_elements_by_xpath(xpath)

其他:

還有兩個私有的方法:

driver.find_element(by, value)

driver.find_elements(by, value)

單個元素定位和多個元素定位的區(qū)別就是,單個元素定位返回是單個元素,多個元素定位返回的是包含多個元素的一個列表。

這里其他部分的私有方法,因為屬于私有的,一般不直接使用。

詳細介紹

1. find_element_by_id

用法:通過元素id來查找元素

示例:driver.find_element_by_id('com.android.calculator2:id/digit8')

這里元素id和 UIAutomatorView 中該元素的 resource id是一致的。

這里需要注意的是,Android 4.3 以上系統(tǒng)才會有 resource id。我嘗試過 Android 4.2.2系統(tǒng),結果resource id這里一直是空。

2. find_element_by_accessibility_id(id)

示例:driver.find_element_by_accessibility_id("delete")

這里的accessibility id 跟 UIAutomatorView 中該元素的 content-desc 是一致的。

3. find_element_by_name(name)

用法:通過元素 name 來查找元素

示例:driver.find_element_by_name("Create a new contact")

這里的name跟 UIAutomatorView 中該元素的 Text是一致的。

需要注意的是,最好不要用這種定位方法,因為 Appium v1.0 已經(jīng)不建議使用通過name進行定位的方式。

4. find_element_by_class_name(name)

用法:通過元素class name來查找元素

示例:driver.find_element_by_class_name("android.widget.Button")

這里的class name跟 UIAutomatorView 中該元素的 class 是一致的。

需要注意的是,由于 class name不是唯一的,所以可能存在一個頁面上有多個元素具有相同的class name。

5. find_element_by_xpath(xpath)

用法:通過元素xpath來查找元素

示例:driver.find_element_by_xpath("http://android.widget.Button[@text='8']")

通過xpath進行定位的好處是,比較絕對,任何一個元素都可以通過xpath進行定位。

原始的uiautomatorView是看不到 xpath這個屬性的,網(wǎng)上有擴展uiautomatorView使其直接顯示xpath的教程。

可以直接下載擴展版的 LazyUiAutomatorViewer:自動化測試中級篇——LazyUiAutomatorViewer插件開發(fā)和使用說明

擴展版本的LazyUiAutomatorViewer可以看到最下方有xpath屬性。當然如果熟悉xpath語法,自己也可以直接通過層次關系寫出元素的xpath。

6. find_element_by_android_uiautomator(uia_string)

用法:通過 UiAutomator 中的定位來進行定位

示例:driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.android.calculator2:id/digit8")')

這里可以通過UiSelector()的多種方式進行定位,上面只是舉例采用了 resourceId而已。

其他定位方式

find_element_by_css_selector(css_selector)

find_element_by_tag_name(name)

find_element_by_link_text(link_text)

find_element_by_partial_link_text(link_text)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容