App启动页面向左滑动

2020-03-28  本文已影响0人  testerPM

如何实现连续向左滑动

解决办法:循环滑动即可



@Test
    public  void test() throws InterruptedException{
        Thread.sleep(3000);
//循环滑动
        for(int i=0;i<=2;i++){
        swipeLeft();}
    }
    
    /**
     * 向左滑动(y轴不变)
     * @throws InterruptedException 
     */
    public  void swipeLeft() throws InterruptedException{
        
        int height = androidDriver.manage().window().getSize().getHeight();
        int width = androidDriver.manage().window().getSize().getWidth();
        //坐标是自己定义的,设置原则:保证y轴不变,x轴终止endx小于起始startx且可以滑动过去即切换到下一页即可
        //可以手动向左画滑动一下->鼠标向左滑动哪个位置是可以滑动成功的,然后就可以估计这个坐标点大概是多少即可
        //滑动的效果->滑动的距离+滑动时间
        //滑动时间越短->越能看清滑动的效果
        //起始点:
        int startx=width*3/4;
        int starty=height/2;
        int  endx=width/4;
        int endy=height/2;
        int duration = 500;
        
        mySwipe(startx, starty, endx, endy, duration);
        
    }
    
        /**
         * 自定义滑动方法
         * @throws InterruptedException 
         */
        public void mySwipe(int startx, int starty, int endx, int endy, int duration) throws InterruptedException {
            /*
             * java-client4.1.2版本滑动的源代码, TouchAction touchAction = new
             * TouchAction(this); touchAction.press(startx,
             * starty).waitAction(duration).moveTo(endx, endy).release();
             * touchAction.perform();
             */

            // 1.实例化触摸动作对象
            TouchAction touchAction = new TouchAction(androidDriver);
            // 2.将原始坐标转化成PointOption类型(java client高版本不能直接传坐标值)
            PointOption startPoint = PointOption.point(startx, starty);
            PointOption endPoint = PointOption.point(endx, endy);
            // 3.把原始时间转换成WaitOptions类型的(原始时间是毫秒,所以调用ofMillis()
            Duration duration2 = Duration.ofMillis(duration);
            WaitOptions waitOptions = WaitOptions.waitOptions(duration2);
            touchAction.press(startPoint).waitAction(waitOptions).moveTo(endPoint).release();
            // 5.让滑动生效
            touchAction.perform();
//循环滑动
//          for(int i=0;i<=2;i++){
//          // 6.配置滑动的动作
//          touchAction.press(startPoint).waitAction(waitOptions).moveTo(endPoint).release();
//          // 7.让滑动生效
//          touchAction.perform();
//          //这里加等待的目的->为了看效果明显一点,可以不用加
//          //Thread.sleep(2000);;
//          }

        }


如上图代码:循环可以加在方法上-》调三次方法
也可以加在滑动动作上如下面代码

    for(int i=0;i<=2;i++){
            // 4.配置滑动的动作
            touchAction.press(startPoint).waitAction(waitOptions).moveTo(endPoint).release();
            // 5.让滑动生效
            touchAction.perform();
            //这里加等待的目的->为了看效果明显一点,可以不用加
            //Thread.sleep(2000);;
            }


注意:

(1)代码执行如果发现,app滑动页面切换不成功:

1)可能是滑动的距离太短

  1. 可能滑动的时间太短了
(2)循环滑动最好不要加在方法体里面-》因为:滑动的次数不一定是3次,那么方法就不通用了,以后要改方法体

所以一般加方法上-》可以理解为,写好的方法就是你的api,供别人调用的api-》调用者随便调用几次

上一篇 下一篇

猜你喜欢

热点阅读