Appium-Java滑动操作

Posted 避雨亭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

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

 

以上是关于Appium-Java滑动操作的主要内容,如果未能解决你的问题,请参考以下文章

在浏览量滑动上添加新片段

appium-java,连接真机启动微信(适应于安卓8.0及以上,新版appium)

如何缓存片段视图

滑动时 ViewPager 更新片段

我的片段中有 webview,当滑动 webview 时, viewPager 也开始滑动

我的应用程序使用片段,但我需要从左到右从右向左滑动