java触屏当乐_java-appium-滑动和手势操作

得到当前屏幕的宽、高:

driver.manage().window().getSize().getWidth();

driver.manage().window().getSize().getHeight();

得到当前元素控件的宽、高:

element.getSize().getWidth();

element.getSize().getHeight();

得到当前元素element起始点和终止点的坐标:

element.getLocation().getX()

element.getLocation().getY()

1、向下滑动

滑动的效果是由两个因素决定的:1、滑动的距离 2、滑动的时间快慢

public void testSwipe() throwsInterruptedException {//向下滑动

TouchAction touchAction = newTouchAction(driver);//press:按压某一个坐标 moveTo:滑动到某一个点 release:手指的释放//滑动的起始点坐标

PointOption pointOption1 = PointOption.point(461,619);//滑动的终止点坐标,向下滑动x轴不变

PointOption pointOption2 = PointOption.point(461,1000);//调整滑动的时间//ofMillis-毫秒,1000毫秒=1秒

Duration duration = Duration.ofMillis(1000);

WaitOptions waitOptions=WaitOptions.waitOptions(duration);//waitAction方法需要传入waitOption类型的参数

touchAction.press(pointOption1).waitAction(waitOptions).moveTo(pointOption2).release().perform();

}

/** 实现一个更加通用的向下滑动的方法*/

public voidswipeDown(){//由屏幕的宽和高来决定滑动的起始点和终止点

int width =driver.manage().window().getSize().getWidth();int height =driver.manage().window().getSize().getHeight();//向下滑动

TouchAction touchAction = newTouchAction(driver);//press:按压某一个坐标 moveTo:滑动到某一个点 release:手指的释放//滑动的起始点坐标

PointOption pointOption1 = PointOption.point(width/2,height/4);//滑动的终止点坐标

PointOption pointOption2 = PointOption.point(width/2,height*3/4);//waitAction方法需要传入waitOption类型的参数

Duration duration = Duration.ofMillis(1000);

WaitOptions waitOptions=WaitOptions.waitOptions(duration);

touchAction.press(pointOption1).waitAction(waitOptions).moveTo(pointOption2).release().perform();

向左、向右、向上滑动只要改变起始终止点坐标即可

2c4af6a07bd4f08af71c35a095f9b80c.png

2、九宫格屏幕手势解锁

public void testUnlock() throwsInterruptedException {//得到当前九宫格控件的宽和高

WebElement element = driver.findElement(By.id("com.xxzb.fenwoo:id/lpv_password"));int width =element.getSize().getWidth();int height =element.getSize().getHeight();//得到当前九宫格控件起始点的坐标x,y

int x =element.getLocation().getX();int y =element.getLocation().getY();//九宫格解锁//第一个点 x+1/6*width y+1/6*height//第二个点 x+3/6*width y+1/6*height//第三个点 x+5/6*width y+1/6*height//第四个点 x+3/6*width y+3/6*height//第五个点 x+1/6*width y+5/6*height//第六个点 x+3/6*width y+5/6*height//第七个点 x+5/6*width y+5/6*height

Thread.sleep(3000);

PointOption pointOption1= PointOption.point(x+width/6,y+height/6);

PointOption pointOption2= PointOption.point(x+3*width/6,y+height/6);

PointOption pointOption3= PointOption.point(x+5*width/6,y+height/6);

PointOption pointOption4= PointOption.point(x+3*width/6,y+3*height/6);

PointOption pointOption5= PointOption.point(x+width/6,y+5*height/6);

PointOption pointOption6= PointOption.point(x+3*width/6,y+5*height/6);

PointOption pointOption7= PointOption.point(x+5*width/6,y+5*height/6);//初始化touchAction对象

TouchAction touchAction = newTouchAction(driver);

touchAction.press(pointOption1).moveTo(pointOption2).moveTo(pointOption3).moveTo(pointOption4).

moveTo(pointOption5).moveTo(pointOption6).moveTo(pointOption7).release().perform();

}

3、多点触摸:照片、地图放大缩小

①创建两个手势

②MultiTouchAction——让这两个手势动作同时生效

56056c8fc6fc35378d85f89118e8a26d.png

public void testPinch() throwsInterruptedException {//手势放大的动作

Thread.sleep(25000);//得到屏幕的宽度和高度

int width =driver.manage().window().getSize().getWidth();int height =driver.manage().window().getSize().getHeight();//第一个手势动作 从A-->B

PointOption pointOptionA = PointOption.point(4*width/10,4*height/10);

PointOption pointOptionB= PointOption.point(2*width/10,2*height/10);//第二个手势操作 从D-->C

PointOption pointOptionD = PointOption.point(6*width/10,6*height/10);

PointOption pointOptionC= PointOption.point(8*width/10,8*height/10);

TouchAction touchAction1= newTouchAction(driver);

TouchAction touchAction2= newTouchAction(driver);

touchAction1.press(pointOptionB).moveTo(pointOptionA).release();

touchAction2.press(pointOptionC).moveTo(pointOptionD).release();//必须要让这两个手势动作同时生效 -- MultiTouchAction

MultiTouchAction multiTouchAction = newMultiTouchAction(driver);

multiTouchAction.add(touchAction1);

multiTouchAction.add(touchAction2);//让里面的两个滑动的动作同时生效

multiTouchAction.perform();

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Appium进行滑动操作时,可以使用封装好的滑动工具类app_swipe来实现。首先,需要导入滑动工具类和驱动实体类。然后,通过操作APP将焦点定位到目标元素,比如"日期和时间"元素。如果目标元素没有显示在界面上,可以执行向上滑动操作,直到目标元素显示并成功定位到该元素。然后执行点击操作,退出循环,即可执行更多的操作。最后,关闭APP。\[1\] 在具体的滑动操作中,可以使用swipe方法来实现滑动。例如,下滑操作可以通过获取窗口的宽度和高度,然后使用绝对坐标来执行滑动操作。上滑操作与下滑操作相反。\[2\] 另外,还可以使用scroll方法来实现滑动操作。通过定位到起始元素和目标元素,可以实现从起始元素滑动到目标元素,从而实现向下滑动操作。\[3\] #### 引用[.reference_title] - *1* [『与善仁』Appium基础 — 26、滑动方法综合练习](https://blog.csdn.net/Liuyuelinjiayou/article/details/110597726)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Appium自动化(12):Appium常用操作之点击&滑动操作](https://blog.csdn.net/YouJeffrey/article/details/130902139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值