美文网首页
app手势操做_放大缩小

app手势操做_放大缩小

作者: testerPM | 来源:发表于2020-03-22 15:19 被阅读0次

放大/缩小

多点触摸的动作,在新版本的java-client(6.1.0)没有对应的API
原理:用2根手指同时参与,需要用到MultiTouchAction对象

(1)java-client4.1.2版本有直接提供缩放的API-》直接调用zoom(x,y)即可

        @Test
    public void test() throws InterruptedException {
        Thread.sleep(3000);
        // 缩放【放大/缩小】
        androidDriver.zoom(447, 824);// 要放大的坐标点,自己设置即可

    }

(2) java-client4.1.2以上版本没有直接提供缩放的api-》解决办法:copy源代码,自定义缩放

代码如下:


package com.leom.day03;

import java.net.MalformedURLException;
import java.net.URL;
import java.time.Duration;
import java.util.concurrent.TimeUnit;

import org.apache.tools.ant.types.resources.Touchable;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import io.appium.java_client.MultiTouchAction;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.touch.WaitOptions;
import io.appium.java_client.touch.offset.PointOption;

public class ZoomTest {
    public AndroidDriver androidDriver;

    /**
     * 初始化的一些操做就相等于是appium的检测器会话, 即:不通过检查器会话连接手机,而是通过代码代替客户端来连接手机设备
     */
    @BeforeTest
    public void setup() throws MalformedURLException {
        // 1.实例化 DesiredCapabilities--》所需能力
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        // 2.添加手机配置
        desiredCapabilities.setCapability("deviceName", "127.0.0.1:62001");// 设备名(值可以自己定义)
        desiredCapabilities.setCapability("platformName", "Android");// 连接的设备是安卓平台
        desiredCapabilities.setCapability("appPackage", "com.baidu.BaiduMap");// app包名
        desiredCapabilities.setCapability("appActivity", "com.baidu.baidumaps.WelcomeScreen");// app启动入口
        desiredCapabilities.setCapability("noReset", "true");
        // 3.Appium服务连接地址
        URL url = new URL("http://127.0.0.1:4723/wd/hub");
        // 4.实例化AndroidDriver
        androidDriver = new AndroidDriver(url, desiredCapabilities);
        // 5.设置隐式等待
        androidDriver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);

    }

    @Test
    public void test() throws InterruptedException {
        Thread.sleep(3000);
        // 缩放【放大/缩小】
        // androidDriver.zoom(447, 824);// 要放大的坐标点,自己设置即可
        myZoom();
        myZoom();

    }
         /**
     * 自定义缩放
     */
    public void myZoom() {
        // 1.获取屏幕的宽度(x轴)
        int width = androidDriver.manage().window().getSize().getWidth();
        // 2.获取屏幕的高度(y轴)
        int height = androidDriver.manage().window().getSize().getHeight();
        // 3.设置要放到的坐标点-》选择屏幕的中心点(将屏幕宽高都平均分成四份)
        int centerx = width / 2;
        int centery = height / 2;
        // 4.第一根手指 终止点
        int firstEndx = width / 4;
        int firstEndy = height / 4;
        // 5.第二根手指终止点
        int secondEndx = width * 3 / 4;
        int secondEndy = height * 3 / 4;
        // 6.滑动时间
        int duration = 500;
        
        swipe( centerx, centery,  firstEndx, firstEndy, secondEndx,  secondEndy,
                 duration);
        

    }
         /**
     * 自定义滑动
     */
    public void swipe(int centerx, int centery, int firstEndx, int firstEndy, int secondEndx, int secondEndy,
            int duration) {

        // 6.实例化触摸对象TouchAction(两根手指都要滑动,所以需要实例化两个触摸对象
        TouchAction firstAction = new TouchAction(androidDriver);
        TouchAction secondAction = new TouchAction(androidDriver);
        // 7.将中心点坐标转成PointOption类型
        PointOption centerPoint = PointOption.point(centerx, centery);
        // 8.将终止点坐标转成PointOption类型
        PointOption firstPoint = PointOption.point(firstEndx, firstEndy);
        PointOption senondPoint = PointOption.point(secondEndx, secondEndy);
        // 9.将滑动时间转换成waitOptions类型
        Duration duration2 = Duration.ofMillis(duration);
        WaitOptions waitOptions = WaitOptions.waitOptions(duration2);

        // 7.配置滑动的动作
        firstAction.press(centerPoint).waitAction(waitOptions).moveTo(firstPoint).release();
        secondAction.press(centerPoint).waitAction(waitOptions).moveTo(senondPoint).release();
        // 8.两根手指同时生效
        MultiTouchAction multiTouchAction = new MultiTouchAction(androidDriver);
        multiTouchAction.add(firstAction);
        multiTouchAction.add(secondAction);
        //9.滑动生效
        multiTouchAction.perform();

    }

}




相关文章

  • app手势操做_放大缩小

    放大/缩小 多点触摸的动作,在新版本的java-client(6.1.0)没有对应的API原理:用2根手指同时参与...

  • webView 相关

    禁用放大缩小手势 计算webView 大小

  • app手势操做

    (1)滑动 java-client6.1.0没有提供滑动的api解决办法:切换java-client版本(4.1....

  • Objective-C ios手势识别

    iOS手势 支持的手势:Tap点击, Edge Pan边缘滑动, Swipe轻扫, Pinch放大缩小,Long ...

  • iOS 手势放大缩小 算法

    1.声明变量 2.在视图上 添加缩放手势 3.实现方法 deviceZoom 就是最后得到的比例

  • 记一些好用的控件

    图片类 PhotoView :可实现手势放大,单点多点触摸放大缩小,完美适配各类父控件 listview类 Pul...

  • Android大图加载

    最近公司一个需求,加载一张超大图,允许手势放大缩小以及左右滑动查看。第一想法是利用inSampleSize缩小图片...

  • iOS中使图片放缩前后轻拍点的位置不变

    添加轻拍手势实现点击图片能放大缩小,并且点击处在放缩前后位置不变,就好像点哪里就把哪里变大. 要放大scale倍,...

  • Unity Leapmotion 手势识别

    Leapmotion 手势识别,支持识别:握拳、抓取、左右上下前后滑动,大拇指上下朝向、放大/缩小、旋转。 使用步...

  • fastclick.js解决移动端点击300ms延迟

    300ms延迟的来源 移动端有很多手势事件,如点击跳转,双击放大缩小页面,滑动等等。就是因为移动端需要判断手势类型...

网友评论

      本文标题:app手势操做_放大缩小

      本文链接:https://www.haomeiwen.com/subject/blypyhtx.html