这里利用模拟器中的API Demo做演示,进入APIDemo中Views,然后滑屏寻找“Popup Menu”进行点击操作
可以利用Android的UIAutomator进行滑屏操作,这时候需要使用AndroidDriver,另外定位元素可以使用UiScrollable:
- appium官方说明文档:http://appium.io/docs/en/commands/element/find-elements/
** - 在官网的uiautomator UiSelector中有用ruby写的实例,不过定位方式是一致的,可以直接借鉴至java代码中
这里大概定位的方法就是,先用new UiSelector().scrollable(true).instance(0)判断是否可以滑动,找到ListView,然后用scrollIntoView(new UiSelector().text(“WebView”).instance(0)滑动找到对应定位属性的元素。
java代码
driver.findElementByXPath("//*[@text='Views']").click();
((AndroidDriver<MobileElement>)driver).
findElementByAndroidUIAutomator
("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text(\"Popup Menu\").instance(0))")
.click();
在实际运行中,AndroidUIAutomator偶尔有定位失败的情况,可能在定位元素是位置会产生一点偏差,这里稍加改造避免这种偶发性失败;
改造方法:滑屏寻找元素时会先滑屏至待查元素的附近,这时元素已处于页面可见范围内,对元素操作可以重新定位操作,例如点击操作可以利用Xpath的方法重新定位后再click().
By departmentName = MobileBy.AndroidUIAutomator(
"new UiScrollable(new UiSelector().scrollable(true).instance(0))." +
"scrollIntoView(new UiSelector().text(\""+ departName +"\").instance(0))");
find(departmentName);
// click(departmentName); 原来直接操作滑动查找的元素结果
click(ByText(departName));//现在利用xpath重新定位确认后再操作,成功率大大提升