导航

Appium之如何滑动选取时间/日期/地址

Posted on 2017-07-31 21:17  Young哥哥  阅读(2213)  评论(0)    收藏  举报

遇到滑动选取地址的问题。

今天让我们来试试如何处理这种控件,以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();

 

  

测试效果图如下:

 

 

总结

这两种滑动的方法一般能够通用,不同的是第一种方法受屏幕分辨率的影响,不同的分辨率滑动的起点和终点不同; 第二种方法是针对控件的,如果控件定位不到或者控件是动态变化的,很难维护。这个要根据你自己项目实际情况选择不同的滑动方式!