查找元素,appium除了提供简单的id、xpath、className,同时也提供了
find_element_by_android_uiautomator()
方法供用户使用uiautomator 或者uiautomator2的UiSelector
类,这里,我使用的uiautomator2 driver
目标
着重说明 find_element_by_android_uiautomator()
方法
原因
appium 从1.5.*的某个版本不直接支持text方式的查找,即find_element_by_name()
,为了能使用text定位或者作为判断条件,除了使用xpath,则可使用 find_element_by_android_uiautomator()
另外appium本身提供的定位方式没uiautomator2丰富,如查找兄弟元素、模糊匹配等
举例
uiautomator1/2中
UiSelector.fromParent或UiObject.getFromParent方法通过儿子找父亲,父亲找其他儿子
该方法是通过将元素对象在另一个父级元素对象中搜索,来达到局部搜索对象 的目的。通过子元素找到父元素,再通过父元素找到另一个子元素 例:
#uiautomator
UiObject uio=new UiObject(new UiSelector().text("子1").fromParent(new UiSelector().className("子2")));
#appium
ele=driver.find_element_by_android_uiautomator(new UiSelector().text("子1").fromParent(new UiSelector().className("子2")))#这个地方可以不填写前面的new UiSelector()
通过UiSelector.childSelector或UiObject.getChild方法
该方法就比上述方法简单,直接知道父元素,通过父元素找子元素 例:
#uiautomator
UiObject parentView = new UiObject(new UiSelector().className("父"));
UiObject save = parentView.getChild(new UiSelector().text("子"));
#appium
ele=driver.find_element_by_android_uiautomator(new UiSelector().className("父").getChild(new UiSelector().text("子")))
uiautomator的其他方法可参考https://blog.csdn.net/maocaowu_csdn/article/details/50749306
网友评论