1. 程式人生 > >Python實現螢幕滑動

Python實現螢幕滑動

Java實現Appium螢幕滑動

下圖是螢幕的座標圖,向上滑動螢幕就是x軸不變,y軸由大到小的變化過程


  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 座標不變