# appium的webdriver提供了11种元素定位方法,在selenium的基础上扩展了三个,可以在pycharm里面输入driver.find_element_by然后会自动匹配出来
#通过id定位成功
driver.find_element_by_id("com.xyh.commerce:id/ll_personal").click()
#tap是模拟手指点击,一般页面上元素.语法有两个参数,第一个是positions,是list类型最多五个点,duration是持续时间,单位毫秒
#通过tap定位成功
driver.tap([(600,1205)],300)
#通过xpath定位
driver.find_element_by_xpath("//*[@resource-id=‘com.xyh.commerce:id/ly_main_tab_bottom‘]//android.widget.LinearLayout[3]").click()
# 通过android_uiautomator定位
# 通过id定位
my = ‘new UiSelector().resourceId("com.xyh.commerce:id/ll_personal")‘
driver.find_element_by_android_uiautomator(my).click()
# 通过text定位
# 1.通过text文本定位语法
new UiSelector().text("text文本")
# 2.文本比较长的时候,可以用textContains模糊匹配,只要文本包含匹配内容就可以了。
new UiSelector().textContains("包含text文本")
# 3.textStartsWith是以某个文本开头的匹配
new UiSelector().textStartsWith("以text文本开头")
# 4.正则匹配textMatches,这个需要配合正则表达式,就不举例了。
new UiSelector().textMatches("正则表达式")
# class属性一般不唯一,多半用在复数定位,className复数定位
loc_class = ‘new UiSelector().className("android.widget.TextView")‘
driver.find_elements_by_android_uiautomator(loc_class)[2].click()
# 组合定位,一般组合用id,class,text这三个属性会比较好一点
# id+class 属性组合
id_class = ‘resourceId("com.xyh.commerce:id/ll_personal").className("android.widget.LinearLayout")‘
driver.find_element_by_android_uiautomator(id_class).click()
# 父子定位childSelector
# 有时候不能直接定位某个元素,但是它的父元素很好定位,这时候就先定位父元素,通过父元素找儿子。
son = ‘resourceId("com.xyh.commerce:id/ll_personal").childSelector(text("我的"))‘
driver.find_element_by_android_uiautomator(son).click()
# 兄弟定位fromParent
# 有时候父元素不好定位,但是跟他相邻的兄弟元素很好定位,这时候就可以通过兄弟元素,找到同一父级元素下的子元素。
brother = ‘resourceId("com.xyh.commerce:id/img_personal").fromParent(text("我的"))‘
driver.find_element_by_android_uiautomator(brother).click()
appium 定位元素的方法