上下滑动
编写滑动方法,首先由屏幕的宽度和高度决定滑动的起点和终止点的坐标
int width = driver.manage().window().getSize().getWidth();
int height = driver.manage().window().getSize().getHeight();
乡下进行滑动,使用触摸动作类
TouchAction touchAction = new TouchAction(driver);
设定起点
PointOption p1 = PointOption.point(width / 2, height / 4);
设定重点
PointOption p2 = PointOption.point(width / 2, height * 3 / 4);
滑动涉及到的另外一个条件—-触摸时间
duration对象,内置了多种单位用来设置持续的时间 import java.time.Duration;
waitoption 所属 java_client.touch类下对象
Duration duration = Duration.ofMillis(200);
WaitOptions waitOptions = WaitOptions.waitOptions(duration);
之后touchAction.类调用方法进行配置
touchAction.press(p1).watiAction(watiOptions).move(p2).perform()
左右滑动
与上下滑动一样,只不过坐标的设置不同,整体流程依然为,
获得屏幕宽度,高度,设定起点终点,设定触摸持续时间
之后touchAction对象调用实现。
需要注意的是,touchAction封装成的都是一个方法,需要调用执行来进行测试
多点触控
multiTouchAction类可以魔衣用户的多点触控操作,主要包含有add(),和perform()方法,
可以结合touchAction模拟多根收支滑动效果,
本次以pinch,zoom作为例子,即缩小与放大
得到屏幕宽高
int width = driver.manage().window().getSize().getWidth();
int height = driver.manage().window().getSize().getHeight();
分析收拾动作需要的做表单,单指起始位,二手纸起始位置
// 分析手势操作需要的坐标点 单手指起始位置
PointOption pointB = PointOption.point(4 * width / 10, 4 * height / 10);
PointOption pointA = PointOption.point(2 * width / 10, 2 * height / 10);
// 二指手势位置
PointOption pointC = PointOption.point(6 * width / 10, 6 * height / 10);
PointOption pointD = PointOption.point(8 * width / 10, 8 * height / 10);
与上面滑动操作不同,这次需要实例化出来两个touchAction类,然后在实例化一个multiTouchAction类
// 实例化两个touchaction类
TouchAction touch1 = new TouchAction(driver);
TouchAction touch2 = new TouchAction(driver);
// 通过touchaction类来设定两个action的逻辑
touch1.press(pointB).moveTo(pointA).release();
touch2.press(pointC).moveTo(pointD).release();
// 让这两个手势同时生效,,实例化多点触控类
MultiTouchAction multiTouchAction = new MultiTouchAction(driver);
multiTouchAction.add(touch1);
multiTouchAction.add(touch2);
// 同时生效
multiTouchAction.perform();
手势缩小操作
public void testPinch() throws InterruptedException {
//手势放大的动作
Thread.sleep(25000);
//得到屏幕的宽度和高度
int width = driver.manage().window().getSize().getWidth();
int height = driver.manage().window().getSize().getHeight();
// 定义触控点AB
PointOption pointOptionA = PointOption.point(4 * width / 10, 4 * height / 10);
PointOption pointOptionB = PointOption.point(2 * width / 10, 2 * height / 10);
// 定义触控点CD
PointOption pointOptionD = PointOption.point(6 * width / 10, 6 * height / 10);
PointOption pointOptionC = PointOption.point(8 * width / 10, 8 * height / 10);
// 实例两个action类
TouchAction touchAction1 = new TouchAction(driver);
TouchAction touchAction2 = new TouchAction(driver);
// 设定两个touchaction
touchAction1.press(pointOptionA).moveTo(pointOptionB).release();
touchAction2.press(pointOptionC).moveTo(pointOptionD).release();
// 实例化多点触控类,之后将action加入,最后perform执行
MultiTouchAction multiTouchAction = new MultiTouchAction(driver);
multiTouchAction.add(touchAction1);
multiTouchAction.add(touchAction2);
multiTouchAction.perform();
}