一、首先来看滑动的方法swipe
swipe(int start x,int start y,int end x,int end y,duration)
解释一下:
int start x-开始滑动的x坐标,
int start y -开始滑动的y坐标。
int end x -结束点x坐标,
int end y -结束点y坐标。
duration 滑动时间(默认5毫秒)
二、页面滑动的原理:
手机屏幕的左上角为原点(0,0),坐标的X为水平方向(从左往右为小到大),Y为竖直方向(从上到下是为小到大)。
滑动只能在屏幕内,不能超出屏幕,但由于手机分许多不同的分辨率,我们的代码就得兼容不同分辨率的手机,因此我们首先要获得手机分辨率,才能确定我们手指的位置。手指的位置不要离屏幕边缘太近。下面代码是获取屏幕分辨率的方法
Dimension d = driver.manage().window().getSize().getSize();
在获得了手机的屏幕分辨率之后,我们可以获得其X轴和Y轴的最大值
int x = d.getWidth();
int y = d.getHeight();
滑动屏幕在appium中使用到的方法是:
driver.swipe(startx, starty, endx, endy, duration);
这时我们需要考虑滑屏的开始位置和结束位置,
通过上图,我们可以知道,左右滑动时Y轴不变,上下滑动时,X轴不变。那么我们就可以将不变值定为屏幕中间的位置,即x / 2或 y / 2.
滑动的区间可以设置为从9/10的位置滑到1/10的位置。通过计算最终可适用全部手机。duration表示滑动时间,毫秒,数值越小滑动越快。
从右往左滑
driver.swipe(x / 2, y / 10, x / 2, y * 9 / 10 , 500);
从下往上滑动
driver.swipe(x / 2, x * 9 / 10 , x / 2, y / 10, 500);
从左往右滑
driver.swipe(x / 10, y / 2, x * 9 / 10 , y / 2, 500);
从右往左滑
driver.swipe(x * 9 / 10, y / 2, x / 10, y / 2, 500);
三、页面滑动方法封装
/**
* 上滑
* @param driver
* @param during
* @param num
*/
public static void swipeToUp(AppiumDriver<WebElement> driver,int during, int num) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
for (int i = 0; i < num; i++) {
driver.swipe(width / 2, height * 3 / 4, width / 2, height / 4, during);
goSleep(3);
}
}
/**
* 下滑
* @param driver
* @param during
* @param num
*/
public static void swipeToDown(AppiumDriver<WebElement> driver,int during, int num) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
System.out.println(width);
System.out.println(height);
for (int i = 0; i < num; i++) {
driver.swipe(width / 2, height / 4, width / 2, height * 3 / 4, during);
goSleep(3);
}
}
/**
* 左滑
* @param driver
* @param during
* @param num
*/
public static void swipeToLeft(AppiumDriver<WebElement> driver,int during, int num) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
for (int i = 0; i < num; i++) {
driver.swipe(width * 3 / 4, height / 2, width / 4, height / 2, during);
goSleep(3);
}
}
/**
* 右滑
* @param driver
* @param during
* @param num
*/
public static void swipeToRight(AppiumDriver<WebElement> driver,int during, int num) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
for (int i = 0; i < num; i++) {
driver.swipe(width / 4, height / 2, width * 3 / 4, height / 2, during);
goSleep(3);
}
}