遇到滑动选取地址的问题。
今天让我们来试试如何处理这种控件,以Android为例。
App是我自己写的,比较丑,给大家一种思路,不要在意那些细节。
App演示如下:
Apk 下载:
https://github.com/tobecrazy/appiumDemo/blob/master/apps/webview.apk
下载完毕后你使用UIAutomtorView 定位,然后就可以写case。
如何滑动?
滑动控件一般有两种方式:
a. 通过driver.swipe滑动
driver.swipe(300, 1000, 300, 900, 1000); 五个参数分别是 起始点的x,y终点x,y和滑动时间,滑动时间为毫秒
b. 通过控件swipe
pickRight1.swipe(SwipeElementDirection.UP, 1000);
有两个参数,第一个是滑动方向 SwipeElementDirection,有上下左右,第二个是滑动时间。
核心代码
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
MobileElement clickNextPage = driver.findElementById("com.testerhome.webview:id/next_page");
clickNextPage.click();
// 方法一
driver.swipe(300, 1000, 300, 900, 1000);
driver.swipe(450, 1000, 450, 900, 1000);
// 方法二
// MobileElement pickLeft1=driver.findElementByAndroidUIAutomator("new
// UiSelector().className(\"android.widget.TextView\").text(\"09\").index(1)");
// pickLeft1.swipe(SwipeElementDirection.UP, 1000);
// MobileElement pickLeft2=driver.findElementByAndroidUIAutomator("new
// UiSelector().className(\"android.widget.TextView\").text(\"10\").index(2)");
// pickLeft2.swipe(SwipeElementDirection.UP, 1000);
// MobileElement pickRight1=driver.findElementByAndroidUIAutomator("new
// UiSelector().className(\"android.widget.TextView\").text(\"00\").index(1)");
// pickRight1.swipe(SwipeElementDirection.UP, 1000);
MobileElement confirmButton = driver.findElementByXPath("//android.widget.Button[contains(@text,'确定')]");
confirmButton.click();
测试效果图如下:
总结
这两种滑动的方法一般能够通用,不同的是第一种方法受屏幕分辨率的影响,不同的分辨率滑动的起点和终点不同; 第二种方法是针对控件的,如果控件定位不到或者控件是动态变化的,很难维护。这个要根据你自己项目实际情况选择不同的滑动方式!
浙公网安备 33010602011771号