App主动化测试|原生App元素定位办法(二)
uiautomator办法定位原生app元素
appium在android端是挪用其底层的UIAutomator2主动化测试框架往驱动主动化,在定位元素的时候,能够借助UIAutomator2的语法来实现定位。在代码实现上供给的API是find_element_by_android_uiautomator;操纵android_uiautomator停止定位,语法必需属性值是双引号
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("...")')
展开全文
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()
1 # 根据className定位:关键字className
2 driver.find_element_by_android_uiautomator('new UiSelector().className("...")').click()
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()
子孙元素定位
利用前提:子元素属性不定,不惟一,只能通过父元从来定位
newUiSelector().resourceId(“值”).childSelector(className(“值”).instance(数字))
此中childSelector能够传进resourceId、description等办法
instance表达婚配的成果所有元素里面的第几个元素,从0起头计数
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()