appium(java)——滑动1:页面滑动以及封装

本文详细介绍了如何在Appium中实现页面滑动操作,包括滑动的基本方法、原理及封装示例。针对不同分辨率设备的兼容性问题,提供了获取屏幕尺寸的方法,并给出了上滑、下滑、左滑和右滑的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、首先来看滑动的方法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);  
    }  
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值