Python实现屏幕滑动


Java实现Appium屏幕滑动


下图是屏幕的坐标图,向上滑动屏幕就是x轴不变,y轴由大到小的变化过程

Python实现屏幕滑动

  Java滑动操作,通常可以直接使用API中AndroidDriver类中的swipe方法,直接进行调用

swipe(int startx, int starty, int endx, intendy, int duration)

参数说明:

  intstartx:x起始坐标

  intstarty:y起始坐标

  intendx:x终点坐标

  intendy:y终点坐标

  intduration:滑动速度,默认单位:毫秒。数字越小滑动越快,一般设定在500 ~ 1000

  num:滑动次数,直接输入次数就可以了

  由于屏幕各式各样,滑动的结束位置均不太好掌控,因此,为了方便,可以将swipe方法进行如下改善


1.不可配置滑动次数:

  //向上滑动

  publicvoid swipeToUp(AndroidDriver<AndroidElement>driver, int during){

       int width = driver.manage().window().getSize().width;  //获取当前屏幕的宽度

       int height = driver.manage().window().getSize().height;  //获取当前屏幕的高度

       driver.swipe(width/2, height*3/4, width/2, height/4, during)

}

// driver(就是把appiumdriver对象传进来)

2.可配置滑动次数:

  //向下滑动

  publicvoid swipeToDown (AndroidDriver<AndroidElement>,int during, int num){

       int width = driver.get.window().getSize().width;  //获取当前屏幕的宽度

      int height = driver.get.window.().getSize().height;  //获取当前屏幕的高度

      for(i =0; i <num; i++){

         driver.swipe(width/2, height*/4, width/2, height*3/4, during);

}

}

3.向左滑动

         publicstatic void swipeToLeft(AppiumDriver<WebElement> driver,int during, intnum) {

                   intwidth = driver.manage().window().getSize().width;  //获取当前屏幕的宽度

                   intheight = driver.manage().window().getSize().height;  //获取当前屏幕的高度

                   for(int i = 0; i < num; i++) {

                            driver.swipe(width* 3 / 4, height / 2, width / 4, height / 2, during);

                   }

         }

4.向右滑动

public static void swipeToRight(AppiumDriver<WebElement>driver,int during, int num) {

                   intwidth = driver.manage().window().getSize().width;   //获取当前屏幕的宽度

                   intheight = driver.manage().window().getSize().height;  //获取当前屏幕的高度

                   for(int i = 0; i < num; i++) {

                            driver.swipe(width/ 4, height / 2, width * 3 / 4, height / 2, during);

                   }

         }

 

 

注:y1=getSize()[1]*0.5=可以理解为y轴的最*,x1=getSize()[0]*0.75=x轴靠右

x2=getSize()[0]*0.05=x轴靠左

 

python实现Appium屏幕滑动

  调用swipe方法实现屏幕滑动

Swipe(int start x,int starty,int end x,int y,duration)

参数说明:

  intstart x-开始滑动的x坐标,

  intstart y -开始滑动的y坐标。

  intend x -结束点x坐标,

  intend y -结束点y坐标。

 duration 滑动时间(默认5毫秒)

实现代码:

#获得机器屏幕大小x,y

def getSize():

    x= dr.get_window_size()['width']

    y= dr.get_window_size()['height']

   return (x, y)

 

#屏幕向上滑动

def swipeUp(t):

    l= getSize()

   x1 = int(l[0] * 0.5)  #x坐标

   y1 = int(l[1] * 0.75)   #起始y坐标

   y2 = int(l[1] * 0.25)   #终点y坐标

   dr.swipe(x1, y1, x1, y2,t)

#屏幕向下滑动

def swipeDown(t):

    l= getSize()

   x1 = int(l[0] * 0.5)  #x坐标

   y1 = int(l[1] * 0.25)   #起始y坐标

   y2 = int(l[1] * 0.75)   #终点y坐标

   dr.swipe(x1, y1, x1, y2,t)

#屏幕向左滑动

def swipLeft(t):

   l=getSize()

   x1=int(l[0]*0.75)

   y1=int(l[1]*0.5)

   x2=int(l[0]*0.05)

   dr.swipe(x1,y1,x2,y1,t)

#屏幕向右滑动

def swipRight(t):

   l=getSize()

   x1=int(l[0]*0.05)

   y1=int(l[1]*0.5)

   x2=int(l[0]*0.75)

   dr.swipe(x1,y1,x2,y1,t)

#调用向左滑动

swipLeft(1000)

sleep(3)

#调用向右滑动

swipRight(1000)

调用向上滑动

swipeUp(1000)

调用向下滑动

swipeDown(1000)

滑动坐标变化

向上滑(swipeToUp):x 坐标不变,y 坐标由大到小

向下滑(swipeToDown):x 坐标不变,y 坐标由小到大

向左滑(swipeToLeft):x 坐标由大到小,y 坐标不变

向右滑(swipeToRight):x 坐标由小到大,y 坐标不变