uiautomator 方法定位原生 app 元素
appium 在 android 端是调用其底层的 UIAutomator2 自动化测试框架去驱动自动化,在定位元素的时候,可以借助 UIAutomator2 的语法来实现定位。在代码实现上提供的 API 是 find_element_by_android_uiautomator;利用 android_uiautomator 进行定位,语法必须属性值是双引号
根据 text 定位
find_element_by_android_uiautomator('text("值")')find_element_by_android_uiautomator('newUiSelector().text("值")') # 'newUiSelector()'推荐使用
1 # 通过text定位
2 driver.find_element_by_android_uiautomator('text("5")').click()
3 # 推荐使用正规方法
4 driver.find_element_by_android_uiautomator('new UiSelector().text("5")').click()
复制代码
text 定位相关函数:textContains:模糊匹配文本 textStartsWith:以某个文本开头来匹配 textMatches:正则匹配
# text定位相关函数:
# textContains:模糊匹配文本
driver.find_element_by_android_uiautomator('new UiSelector().textContains("...")')
# textStartsWith:以某个文本开头来匹配
driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("...")')
# textMatches:正则匹配
driver.find_element_by_android_uiautomator('new UiSelector().textMatches("...")')
复制代码
根据 resourceId 定位
find_element_by_android_uiautomator('resourceId("值")')find_element_by_android_uiautomator('newUiSelector().resourceId("值")')
1 # 根据resourceId定位:
2 driver.find_element_by_android_uiautomator('new UiSelector().resourceId("...")').click()
复制代码
根据 className 定位:关键字 className
1 # 根据className定位:关键字className
2 driver.find_element_by_android_uiautomator('new UiSelector().className("...")').click()
复制代码
根据 contenet-desc 定位:关键字 description
1 # 根据contenet-des定位:关键字description
2 driver.find_element_by_android_uiautomator('new UiSelector().description("...")').click()
复制代码
组合定位(类名和文本)
newUiSelector().className("类名").text("值")其它组合定位方式类推
1 # 组合定位(类名和文本):
2 driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.Button").text("7")').click()
3 driver.find_element_by_android_uiautomator('new UiSelector().text("8").className("android.widget.Button")').click()
复制代码
根据元素关系定位
1 # 后代元素定位
2 driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sky.jisuanji:id/tablelayout").childSelector(className("android.widget.Button").instance(3))').click()
复制代码
通过子元素找到父元素,然后通过父元素再去找兄弟元素 newUiSelector().resourceId("值").fromParent(text("值"))fromParent()表示从元素的父元素下查找
1 # 兄弟元素定位
2 driver.find_element_by_android_uiautomator('new UiSelector().text("7").fromParent(text("9"))').click()
复制代码
获取更多技术资料,请点击!
评论