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)css
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)android
還有兩個私有的方法:ios
driver.find_element(by, value)git
driver.find_elements(by, value)測試
單個元素定位和多個元素定位的區別就是,單個元素定位返回是單個元素,多個元素定位返回的是包含多個元素的一個列表。ui
這裏其餘部分的私有方法,由於屬於私有的,通常不直接使用。.net
用法:經過元素id來查找元素插件
示例:driver.find_element_by_id('com.android.calculator2:id/digit8')blog
這裏元素id和 UIAutomatorView 中該元素的 resource id是一致的。教程
這裏須要注意的是,Android 4.3 以上系統纔會有 resource id。我嘗試過 Android 4.2.2系統,結果resource id這裏一直是空。
示例:driver.find_element_by_accessibility_id("delete")
這裏的accessibility id 跟 UIAutomatorView 中該元素的 content-desc 是一致的。
用法:經過元素 name 來查找元素
示例:driver.find_element_by_name("Create a new contact")
這裏的name跟 UIAutomatorView 中該元素的 Text是一致的。
須要注意的是,最好不要用這種定位方法,由於 Appium v1.0 已經不建議使用經過name進行定位的方式。
用法:經過元素class name來查找元素
示例:driver.find_element_by_class_name("android.widget.Button")
這裏的class name跟 UIAutomatorView 中該元素的 class 是一致的。
須要注意的是,因爲 class name不是惟一的,因此可能存在一個頁面上有多個元素具備相同的class name。
用法:經過元素xpath來查找元素
示例:driver.find_element_by_xpath("//android.widget.Button[@text='8']")
經過xpath進行定位的好處是,比較絕對,任何一個元素均可以經過xpath進行定位。
原始的uiautomatorView是看不到 xpath這個屬性的,網上有擴展uiautomatorView使其直接顯示xpath的教程。
能夠直接下載擴展版的 LazyUiAutomatorViewer:自動化測試中級篇——LazyUiAutomatorViewer插件開發和使用說明
擴展版本的LazyUiAutomatorViewer能夠看到最下方有xpath屬性。固然若是熟悉xpath語法,本身也能夠直接經過層次關係寫出元素的xpath。
用法:經過 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)