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);
}
}
可以滑动的方法直接写在需要使用的类中,直接调用,也可以将方法封装在类中
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滑动操作的更多相关文章
- appium java 滑动(js滑动和swipe滑动)
最近有一个页面的内容很多,有的元素需要滑动到底部才能看到,所以就研究一下滑动,下面是我学习到的两种滑动方式 一:用js滑动 用js滑动的思路是很简单,首先是先定位到这个元素,定位到之后不做任何操作,然 ...
- python+Appium自动化:app滑动操作swipe
swipe Appium使用滑动操作用到了swipe方法,定义如下: swipe(self, start_x, start_y, end_x, end_y, duration=None) 从一个点滑动 ...
- appium滑动操作(向上、向下、向左、向右)
appium滑动操作(向上滑动.向下滑动.向左滑动.向右滑动) 测试app:今日头条apk 测试设备:夜游神模拟器 代码如下: 先用x.y获取当前的width和height def getSize() ...
- appium+java (六) 手机chrome浏览器操作
一.前言 早之前写过一段时间的appium for native app(即原生app脚本),但尴尬的是从未写过类似的文章,后期有时间我会陆续接着写,近一阶段有时间又把appium捡起来了,由于公司产 ...
- appium+java(五)微信小程序自动化测试实践
前言: 上一篇<appium+java(四)微信公众号自动化测试实践>中,尝试使用appium实现微信公众号自动化测试,接着尝试小程序自动化,以学院小程序为例 准备工作 1.java-cl ...
- appium 处理滑动的方法
appium 处理滑动的方法是 swipe(int start-x, int start-y, int end-x, int end-y, int during) - Method in class ...
- appium自动化测试- 元素操作
本文转自:https://www.cnblogs.com/sinder2018/articles/9699801.html 一.滑动屏幕 1.appium - 滑动屏幕 滑动接口: swipe(起始X ...
- Android SwipeActionAdapter结合Pinnedheaderlistview实现复杂列表的左右滑动操作
在上一篇博客<Android 使用SwipeActionAdapter开源库实现简单列表的左右滑动操作>里,已经介绍了利用SwipeActionAdapter来左右滑动操作列表: 然,有时 ...
- Android 使用SwipeActionAdapter开源库实现简单列表的左右滑动操作
我们做listview左右滑动操作时,一般中情况下,都是像QQ那样,左滑弹出操作菜单(删除.编辑),然后选择菜单操作: 这样的效果不可谓不好,算是非常经典. 另外,有少数的APP,尤其是任务管理类的A ...
随机推荐
- openssl升级并发症
简单介绍一下系统环境: 操作系统:redhat6.3 ,安装的主要涉及到的包有: root@192.168.100.252:/root# rpm -qa | grep ssh openssh-.3p1 ...
- 360破解大赛crackme分析--之3DES解密附加数据
具体的分析这里有.本人仅仅是对这里面有趣的算法进行了一些学习 分析链接 这次是逆向的使用3DES解密的过程中的内容: 使用微软的crypt库 使用3DES解密程序中的附加数据 代码: VOID enc ...
- hdu 2527:Safe Or Unsafe(数据结构,哈夫曼树,求WPL)
Safe Or Unsafe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- Linux性能调优、Linux集群与存储等
http://freeloda.blog.51cto.com/ 51cto
- UIViewController三种不同的初始化view的方式
You can specify the views for a view controller using a Storyboard created in Interface Builder. A s ...
- Android popupwindow 演示样例程序一
经过多番測试实践,实现了popupwindow 弹出在指定控件的下方.代码上有凝视.有须要注意的地方.popupwindow 有自已的布局,里面控件的监听实现都有.接下来看代码实现. 项目资源下载:点 ...
- malloc free, new delete 的异同点
相同点: 都可以动态的申请并释放内存 不同点: 1. 用法不同 <1> malloc 函数为 void* malloc(size_t size), 用于申请一块长度为 size 字节的内存 ...
- THINKPHP5获取设置缓存的例子
在THINKPHP5中 缓存的配置放在了config.php文件中 代码如下 如何设置缓存? 可以使用静态方法 Cache::set('key',$value,3600);//存储缓存 Cache:: ...
- 将java项目发布到本地的linux虚拟机上
1.首先安装虚拟机,这里就不介绍了. 2.然后要我下载了一个WinSCP用于windows和虚拟机之间的文件传输. 首先获得虚拟机的ip: 必须保持连接, 如果断开ip就是这样的 3.传输文件 将jd ...
- iPhone 6 Screens Demystified
http://www.paintcodeapp.com/news/iphone-6-screens-demystified