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

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

 package com.test;

 import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement; public class MyNumSwipe {
/**
* This Method for swipe up
*
* @author zt
* @param driver
* @param during
* @param num
*/
public void swipeToUp(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*3/4, width/2, height/4, during);
}
} /**
* This Method for swipe down
*
* @author zt
* @param driver
* @param during
* @param num
*/
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);
}
} /**
* This Method for swipe Left
*
* @author zt
* @param driver
* @param during
* @param num
*/
public void swipeToLeft(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*3/4, height/2, width/4, height/2, during);
}
} /**
* This Method for swipe right
*
* @author zt
* @param driver
* @param during
* @param num
*/
public void swipeToRight(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/4, height/2, width*3/4, height/2, during);
}
}
}

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

 package com.test;

 import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import java.io.File;
import java.net.URL; public class MySwipeTest2 {
private AndroidDriver<AndroidElement> driver;
private boolean isInstall = false;
private MyNumSwipe myNumSwipe;
@Before
public void setUp()throws Exception{
//set up appium
DesiredCapabilities capbilities = new DesiredCapabilities();
capbilities.setCapability(CapabilityType.BROWSER_NAME, "");
capbilities.setCapability("platformName", "Android");
capbilities.setCapability("deviceName", "Android Emulator");
capbilities.setCapability("platformVersion", "5.0");
// if no need install don't add this
if(isInstall){
File classpathRoot=new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot,"apps");
File app = new File(appDir,"360.apk");
capbilities.setCapability("app", app.getAbsolutePath());
}
capbilities.setCapability("appPackage", "");
capbilities.setCapability("appPackage", "com.qihoo.appstore");
// no need sign
capbilities.setCapability("noSign", "True");
capbilities.setCapability("appActivity", "com.qihoo.appstore.home.MainActivity");
driver = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"),
capbilities);
} @After
public void tearDown() throws Exception {
driver.quit();
} public void sleep(long s) {
try {
Thread.sleep(s);
} catch (InterruptedException e) {
e.printStackTrace();
}
} @Test
public void swiptest(){
myNumSwipe = new MyNumSwipe();
sleep(10000);
swipeToLeft(driver, 500,3);
sleep(1000);
myNumSwipe.swipeToRight(driver, 500,3);
} public void swipeToLeft(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*3/4, height/2, width/4, height/2, during);
}
}
}

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

Appium-Java滑动操作的更多相关文章

  1. appium java 滑动(js滑动和swipe滑动)

    最近有一个页面的内容很多,有的元素需要滑动到底部才能看到,所以就研究一下滑动,下面是我学习到的两种滑动方式 一:用js滑动 用js滑动的思路是很简单,首先是先定位到这个元素,定位到之后不做任何操作,然 ...

  2. python+Appium自动化:app滑动操作swipe

    swipe Appium使用滑动操作用到了swipe方法,定义如下: swipe(self, start_x, start_y, end_x, end_y, duration=None) 从一个点滑动 ...

  3. appium滑动操作(向上、向下、向左、向右)

    appium滑动操作(向上滑动.向下滑动.向左滑动.向右滑动) 测试app:今日头条apk 测试设备:夜游神模拟器 代码如下: 先用x.y获取当前的width和height def getSize() ...

  4. appium+java (六) 手机chrome浏览器操作

    一.前言 早之前写过一段时间的appium for native app(即原生app脚本),但尴尬的是从未写过类似的文章,后期有时间我会陆续接着写,近一阶段有时间又把appium捡起来了,由于公司产 ...

  5. appium+java(五)微信小程序自动化测试实践

    前言: 上一篇<appium+java(四)微信公众号自动化测试实践>中,尝试使用appium实现微信公众号自动化测试,接着尝试小程序自动化,以学院小程序为例 准备工作 1.java-cl ...

  6. appium 处理滑动的方法

    appium 处理滑动的方法是 swipe(int start-x, int start-y, int end-x, int end-y, int during) - Method in class ...

  7. appium自动化测试- 元素操作

    本文转自:https://www.cnblogs.com/sinder2018/articles/9699801.html 一.滑动屏幕 1.appium - 滑动屏幕 滑动接口: swipe(起始X ...

  8. Android SwipeActionAdapter结合Pinnedheaderlistview实现复杂列表的左右滑动操作

    在上一篇博客<Android 使用SwipeActionAdapter开源库实现简单列表的左右滑动操作>里,已经介绍了利用SwipeActionAdapter来左右滑动操作列表: 然,有时 ...

  9. Android 使用SwipeActionAdapter开源库实现简单列表的左右滑动操作

    我们做listview左右滑动操作时,一般中情况下,都是像QQ那样,左滑弹出操作菜单(删除.编辑),然后选择菜单操作: 这样的效果不可谓不好,算是非常经典. 另外,有少数的APP,尤其是任务管理类的A ...

随机推荐

  1. Linux - Ubuntu开启SSH服务

    SSH分客户端openssh-client和openssh-server. 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt- ...

  2. jQuery补充,模拟图片放大镜

    jQuery补充,模拟图片放大镜 html <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  3. SQL还可以这么玩儿

    对于数据库的增删改查,我们都再熟悉不过了,今天,将和您一起探讨几种不一样的SQL用法,原来,SQL还可以这么玩儿. 以下是数据库的原表,如图-1. 1.快速复制表结构 这时,如果我们需要复制一份一模一 ...

  4. js 版本号

    在web项目开发过程中,我们经常会引用css.js文件,更新文件后常出现缓存问题(明明更改了代码,在浏览器上访问的时候却没有发生变化),这种情况我们通常采用以下两种解决方案: 1.手动清除浏览器缓存 ...

  5. MFC WinInetHttp抓取网页代码内容

    Windows Internet编程主要包括两方面: l  服务器端   l  客户端 WinInet编程 Internet客户端主要实现的功能,主要是通过Internet协议(HTTP.FTP等)获 ...

  6. JavaScript 二、eval 和 with 函数

    /* * ========================================================= * * JavaScript 词法欺骗 * * 1.欺骗词法作用域,会导致 ...

  7. 编程之美 set 2 精确表达浮点数

    有限小数和无限循环小数转化成分数 比如 0.9 ->  9/10 0.333(3) -> 1/3 解法 1. 主要涉及到一个数学公式的计算. 2. 对于有限小数, 分子分母求最大公约数即可 ...

  8. My97DatePicker设置,包括隐藏 清空,设置最大日期等 转载

    My97DatePicker是一款非常灵活好用的日期控件.使用非常简单. 1.下载My97DatePicker组件包 2.在页面中引入该组件js文件:     <script type=&quo ...

  9. codevs 5964 [SDOI2017]序列计数

     [题解] 官方题解就两句话. 写了三个版本的不同分值代码.看代码吧. 前导1 //f[i][j][1/0]表示长为i,sum mod p=j,是否已经选了质数的方案数 #include<cst ...

  10. Objective-C实用类和协议

    Objective-C实用类和协议 目录 概述 NSObject 概述 NSObject 协议<NSObject> 类NSObject 详细方法参考文档 实用操作 是否为某个类或其子类 是 ...