zoukankan      html  css  js  c++  java
  • Appium-Java滑动操作

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

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

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

    1、不可配置滑动次数

    public void 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);
        }

    2、可配置滑动次数

        public void swipeToDown(AndroidDriver<AndroidElement> driver,int during,int num){
            int width = driver.manage().window().getSize().width;//获取当前屏幕的宽度
            int height = driver.manage().window().getSize().height;//获取当前屏幕的高度
            for(int i=0;i<num;i++){
                driver.swipe(width/2, height/4, width/2, height*3/4, during);
            }
        }

    可以滑动的方法直接写在需要使用的类中,直接调用,也可以将方法封装在类中

     1 package com.test;
     2 
     3 import io.appium.java_client.android.AndroidDriver;
     4 import io.appium.java_client.android.AndroidElement;
     5 
     6 public class MyNumSwipe {
     7     /**
     8      * This Method for swipe up
     9      * 
    10      * @author zt
    11      * @param driver
    12      * @param during
    13      * @param num
    14      */
    15     public void swipeToUp(AndroidDriver<AndroidElement> driver,int during,int num){
    16         int width = driver.manage().window().getSize().width;//获取当前屏幕的宽度
    17         int height = driver.manage().window().getSize().height;//获取当前屏幕的高度
    18         for(int i = 0;i < num;i++){
    19             driver.swipe(width/2, height*3/4, width/2, height/4, during);
    20         }
    21     }
    22     
    23     /**
    24      * This Method for swipe down
    25      * 
    26      * @author zt
    27      * @param driver
    28      * @param during
    29      * @param num
    30      */
    31     public void swipeToDown(AndroidDriver<AndroidElement> driver,int during,int num){
    32         int width = driver.manage().window().getSize().width;//获取当前屏幕的宽度
    33         int height = driver.manage().window().getSize().height;//获取当前屏幕的高度
    34         for(int i = 0;i < num;i++){
    35             driver.swipe(width/2, height/4, width/2, height*3/4, during);
    36         }
    37     }
    38     
    39       /**
    40      * This Method for swipe Left
    41      * 
    42      * @author zt
    43      * @param driver
    44      * @param during
    45      * @param num
    46      */
    47     public void swipeToLeft(AndroidDriver<AndroidElement> driver,int during,int num){
    48         int width = driver.manage().window().getSize().width;//获取当前屏幕的宽度
    49         int height = driver.manage().window().getSize().height;//获取当前屏幕的高度
    50         for(int i = 0;i < num;i++){
    51             driver.swipe(width*3/4, height/2, width/4, height/2, during);
    52         }
    53     }
    54     
    55      /**
    56      * This Method for swipe right
    57      * 
    58      * @author zt
    59      * @param driver
    60      * @param during
    61      * @param num
    62      */
    63     public void swipeToRight(AndroidDriver<AndroidElement> driver,int during,int num){
    64         int width = driver.manage().window().getSize().width;//获取当前屏幕的宽度
    65         int height = driver.manage().window().getSize().height;//获取当前屏幕的高度
    66         for(int i = 0;i < num;i++){
    67             driver.swipe(width/4, height/2, width*3/4, height/2, during);
    68         }
    69     }
    70 }

    swipe方法调用实例,以下实例已经使用360助手apk测试运行通过,可以执行滑动操作

     1 package com.test;
     2 
     3 import org.junit.After;
     4 import org.junit.Before;
     5 import org.junit.Test;
     6 import org.openqa.selenium.remote.CapabilityType;
     7 import org.openqa.selenium.remote.DesiredCapabilities;
     8 import io.appium.java_client.android.AndroidDriver;
     9 import io.appium.java_client.android.AndroidElement;
    10 import java.io.File;
    11 import java.net.URL;
    12 
    13 public class MySwipeTest2 {
    14     private AndroidDriver<AndroidElement> driver;
    15     private boolean isInstall = false;
    16     private MyNumSwipe myNumSwipe;
    17     @Before
    18     public void setUp()throws Exception{
    19         //set up appium
    20         DesiredCapabilities capbilities = new DesiredCapabilities();
    21         capbilities.setCapability(CapabilityType.BROWSER_NAME, "");
    22         capbilities.setCapability("platformName", "Android");
    23         capbilities.setCapability("deviceName", "Android Emulator");
    24         capbilities.setCapability("platformVersion", "5.0");
    25         // if no need install don't add this
    26         if(isInstall){
    27             File classpathRoot=new File(System.getProperty("user.dir"));
    28             File appDir = new File(classpathRoot,"apps");
    29             File app = new File(appDir,"360.apk");
    30             capbilities.setCapability("app", app.getAbsolutePath());
    31         }
    32         capbilities.setCapability("appPackage", "");
    33         capbilities.setCapability("appPackage", "com.qihoo.appstore");
    34          // no need sign
    35         capbilities.setCapability("noSign", "True");
    36         capbilities.setCapability("appActivity", "com.qihoo.appstore.home.MainActivity");
    37         driver = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"),
    38                 capbilities);
    39       }
    40     
    41     @After  
    42     public void tearDown() throws Exception {  
    43        driver.quit();  
    44     }
    45     
    46     public void sleep(long s) {
    47         try {
    48             Thread.sleep(s);
    49         } catch (InterruptedException e) {
    50             e.printStackTrace();
    51         }
    52     }
    53     
    54     @Test
    55     public void swiptest(){
    56         myNumSwipe = new MyNumSwipe();
    57         sleep(10000);
    58         swipeToLeft(driver, 500,3);
    59         sleep(1000);
    60         myNumSwipe.swipeToRight(driver, 500,3);
    61     }     
    62 
    63     public void swipeToLeft(AndroidDriver<AndroidElement> driver,int during,int num){
    64         int width = driver.manage().window().getSize().width;//获取当前屏幕的宽度
    65         int height = driver.manage().window().getSize().height;//获取当前屏幕的高度
    66         for(int i=0;i<num;i++){
    67             driver.swipe(width*3/4, height/2, width/4, height/2, during);
    68         }
    69     }
    70 }

     另附上执行代码所需要的环境配置截图

  • 相关阅读:
    【Android开发学习笔记】【高级】【随笔】插件化——初探
    【Android测试】【第十三节】Uiautomator——如何组织好你的测试代码(项目实战)
    【Android测试】【第十二节】Uiautomator——API详解
    【Android测试】【第十一节】Uiautomator——简介
    【Android测试】【第十节】MonkeyRunner—— 录制回放
    【Android测试】【第九节】MonkeyRunner—— 初识
    poj 1475 推箱子
    leetcode Ch3-DFS & Backtracking I
    Windows Socket和Linux Socket编程的区别 ZZ
    Linux网络编程入门 (转载)
  • 原文地址:https://www.cnblogs.com/biyuting/p/6970716.html
Copyright © 2011-2022 走看看