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)