美文网首页
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手势操做_放大缩小

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