一、手势操作
1.上下左右滑屏

swipe---滑动

java-client 4.x 是有swipe方法的,可以通过传递坐标信息就可以完成滑动androidDriver.swipe(startx, starty, endx, endy, duration);

<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>4.1.0</version>
</dependency>
//向下滑动,实现下拉刷新
public static void testSwipe() {
/**
* Parameters:
* startx starting x coordinate.
* starty starting y coordinate.
* endx ending x coordinate.
* endy ending y coordinate.
* duration amount of time in milliseconds for the entire swipe action to take
*/
// androidDriver.swipe(startx, starty, endx, endy, duration);
androidDriver.swipe(400, 500, 400, 1000, 5000);
}

java-i5.0+ swipe方法已经失效,但是可以采取自定义的swipe方法实现,swipeLeft、swipeRight、swipeUp参考swipeDown实现;

public static void swipeDown(){
//1.实例化TouchAction对象,触摸操作相关
TouchAction touchAction = new TouchAction(androidDriver);
//2.可以根据当前屏幕的宽度和高度来自定义起始点和终止点的坐标来实现滑动的通用操作
Dimension dimension = androidDriver.manage().window().getSize();
int X = dimension.getWidth();
int Y = dimension.getHeight();
int startx = X/2;
int starty = Y/4;
// startPoint 起始点
PointOption startPoint = PointOption.point(startx, starty);
int endx = X/2;
int endy = Y*3/4;
// endPoint 终止点
PointOption endPoint = PointOption.point(endx, endy);
//把原始的滑动时间转换成duration
Duration duration = Duration.ofMillis(5000);
//然后再把duration转化成 WaitOptions
WaitOptions waitOptions = WaitOptions.waitOptions(duration);
//appium将按-等待-移动-释放转换为滑动操作
touchAction.press(startPoint).waitAction(waitOptions).moveTo(endPoint).release();
touchAction.perform();
}

2.放大缩小(zoom---放大,pinch---缩小)

java-client4.X 也是有zoom和pinch方法的可以通过传递坐标的信息就可以实现放大

androidDriver.zoom(x, y);
//androidDriver.zoom(WebElement element)

zoom( x, y )方法其实是由两个MultiTouchAction实现的多点触摸,首先根据你传入的坐标确定偏移量,然后创建两个action分别向反方向移动,同时释放,pinch同zoom相反

java-client5.0+ zoom和pinch方法已经失效,过期,但是可以采用java-client4.X老版本的实现思想

/**
* 自定义放大效果的方法
*/
public static void zoomOut() { //1.实例化多点触摸对象
MultiTouchAction multiTouch = new MultiTouchAction(androidDriver);
//2.得到当前屏幕的高度
int scrHeight = androidDriver.manage().window().getSize().getHeight();
//3.获取当前屏幕的宽高来确定屏幕中心点(x,y)
int x = androidDriver.manage().window().getSize().getWidth()/2;
int y = androidDriver.manage().window().getSize().getHeight()/2;
System.out.println(x+":"+y);
int yOffset = 100; if (y - 100 < 0) {
yOffset = y;
} else if (y + 100 > scrHeight) {
yOffset = scrHeight - y;
}
//两个手指同时向相反方向滑动实现放大的效果
//第一个手指实现滑动
TouchAction action0 = new TouchAction(androidDriver).press(PointOption.point(x, y)).moveTo(PointOption.point(x, y-yOffset)).release();
//第二个手指实现滑动
TouchAction action1 = new TouchAction(androidDriver).press(PointOption.point(x, y)).moveTo(PointOption.point(x, y+yOffset)).release();
multiTouch.add(action0).add(action1);
multiTouch.perform();
}

3.多点触摸(tap---点点)

未完待续...

APP 自动化之手势操作appium提供API详解(四)的更多相关文章

  1. [总结]JS操作DOM常用API详解

    文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前, ...

  2. hibernate学习(2)——api详解对象

    1   Configuration 配置对象 /详解Configuration对象 public class Configuration_test { @Test //Configuration 用户 ...

  3. Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)

    一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...

  4. 大数据学习笔记——Spark工作机制以及API详解

    Spark工作机制以及API详解 本篇文章将会承接上篇关于如何部署Spark分布式集群的博客,会先对RDD编程中常见的API进行一个整理,接着再结合源代码以及注释详细地解读spark的作业提交流程,调 ...

  5. Java 8 Stream API详解--转

    原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...

  6. jqGrid APi 详解

    jqGrid APi 详解 jqGrid皮肤 从3.5版本开始,jqGrid完全支持jquery UI的theme.我们可以从http://jqueryui.com/themeroller/下载我们所 ...

  7. 网络编程socket基本API详解(转)

    网络编程socket基本API详解   socket socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket ...

  8. SDN 网络系统之 Mininet 与 API 详解

    SDN 网络系统之 Mininet 与 API 详解 Mininet 是轻量级的软件定义网络系统平台,同时提供了对 OpenFlow 协议的支持.本文主要介绍了 Mininet 的相关概念与特性,并列 ...

  9. Java8学习笔记(五)--Stream API详解[转]

    为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 ...

随机推荐

  1. disruptor笔记之三:环形队列的基础操作(不用Disruptor类)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. 3. Go并发编程--数据竞争

    目录 1.前言 2.数据竞争 2.1 示例一 2.1.1 测试 2.1.2 data race 检测 2.1.3 data race 配置 2.2 循环中使用goroutine引用临时变量 2.3 引 ...

  3. Appium 自动化测试改造思路

    流水账脚本 从头到尾编写测试脚本 PO封装 业务行为与操作具体页面元素分离 basepage封装 如封装find方法,目的时增强稳定性 数据驱动封装 将常用的数据改为配置文件 为构建测试平台打基础

  4. 定要过python二级 选择题第5套

    1. 2.. 3. https://zhidao.baidu.com/question/1952133724016713828.html 4. 5. 6. 7. 8. 9. 10. 11.

  5. GDOI 2021 退役记

    Day -n 时常想自己不学OI会怎样,经常畏惧自己其实没有心里想的那样有能力,去机房来麻痹自己 从 3.21 始加大频率刷题,复习以前都学会,而现在都被抛在脑后的算法 反正都要退役了,成绩也得鲜亮点 ...

  6. Vite插件开发纪实:vite-plugin-monitor(上)

    背景 最近在webpack项目里接入了Vite(dev mode),为开发提效.效果是真的猛. 项目启动速度提升70%-80%,HMR直接碾压webpack dev server 为了更加精准的计算收 ...

  7. Unity Event Trigger 事件响应(二维,三维)添加组件

    EventTrigger 上主要的方法有PointerEnter.PointerExit.PointerDown.PointerUp.PointerClick............都会显示在面板上面 ...

  8. Git 管理工具 基本用法

    git管理工具基本操作命令: 1. 提交 git push origin dev 2.拉取分支: git pull 3.创建并转换分支: git switch -c dev; 4.直接切换到已有分支: ...

  9. Java正则中"\\\\"表示普通反斜杠

    Java中"\"用于转义字符,"\\"表示普通无转义功能的反斜杠. 如果将字符串当做正则表达式来解析,那么"\\"也有了特殊意义,它与其后的 ...

  10. 解决git clone慢问题

    解决git clone慢 关于Git克隆或是上传代码龟速的问题真是让人很恼火,这里对于网上的两种解决方案进行摘录. 利用码云克隆github项目 亲测有效 进入码云,新建一个仓库: 在创建的最后选择导 ...