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. python 2.7安装某些包出现错误:"libxml/xmlversion.h:没有那个文件或目录"

    解决办法: 1. ubuntu系统: 首先: apt-get install libxml2-dev sudo ln -s /usr/include/libxml2/libxml /usr/inclu ...

  2. 【NOIP模拟题】行动!行动!(spfa+优化)

    spfa不加优化果断tle最后一个点................... 这题和ch的一题很像,只不过这题简单点,这是一个层次图,即有很多个相同的图,这些相同的图之间又存在着练习.. 然后每一次队列 ...

  3. POJ 3181 Dollar Dayz 01全然背包问题

    01全然背包问题. 主要是求有多少种组合.二维dp做的人多了,这里使用一维dp就能够了. 一维的转换方程:dp[j] = dp[j-i] + dp[j];当中i代表重量,j代表当前背包容量. 意思就是 ...

  4. exif_imagetype() 函数在linux下的php中不存在

    1.问题,项目中上传文件使用插件时,windows上支持函数exif_imagetype(),而在linux上不支持. 2.PHP exif_imagetype的本质 PHP exif_imagety ...

  5. 使用spring + ActiveMQ 总结

    使用spring + ActiveMQ 总结   摘要 Spring 整合JMS 基于ActiveMQ 实现消息的发送接收 目录[-] Spring 整合JMS 基于ActiveMQ 实现消息的发送接 ...

  6. ELK显示多行日志

    1.默认,logstash对日志文件的选取是以单行为单位的:但像log4j这种输出日志经常会是以时间头开始的多行日志: 2.显示多行,需要配置logstash的config: input { file ...

  7. js实现jquery的offset()

    用过jQuery的offset()的同学都知道 offset().top或offset().left很方便地取得元素相对于整个页面的偏移. 而在js里,没有这样直接的方法,节点的属性offsetTop ...

  8. 九度OJ 上剑指 offer 习题目录

    <剑指Offer>面试题集收录汇总 面试题1 赋值运算符函数 不适合在线模式 面试题2 实现Singleton模式 不适合在线模式 面试题3 二维数组中的查找 已收录 面试题4 替换空格 ...

  9. 《jquery权威指南2》学习笔记------ jquery获取复选框的值

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  10. spring基础---->spring自定义标签(一)

    Spring具有一个基于架构的扩展机制,可以使用xml文件定义和配置bean.本博客将介绍如何编写自定义XML bean的解析器,并用实例来加以说明.其实我一直相信 等你出现的时候我就知道是你. Sp ...