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 ...
随机推荐
- 一个try可以跟进多个catch语句,用于处理不同情况,当一个try只能匹配一个catch
一个try可以跟进多个catch语句,用于处理不同情况.当一个try只能匹配一个catch. 我们可以写多个catch语句,但是不能将父类型的exception的位置写在子类型的excepiton之前 ...
- POJ 3181 Dollar Dayz 01全然背包问题
01全然背包问题. 主要是求有多少种组合.二维dp做的人多了,这里使用一维dp就能够了. 一维的转换方程:dp[j] = dp[j-i] + dp[j];当中i代表重量,j代表当前背包容量. 意思就是 ...
- mysql关联取附表最后一条记录,附加lareval orm实现
MySQL 多表关联一对多查询取最新的一条数据:https://blog.csdn.net/u013902368/article/details/86615382 Laravel query buil ...
- 我的Android进阶之旅------>MIME类型大全
今天在实现一个安装apk的代码中看到一段代码为:application/vnd.android.package-archive.不知其意.所以百度了一下,了解到这是一种MIME的类型,代表apk类型. ...
- DM8168 OpenCV尝试与评估(编译ARM版OpenCV)
交叉编译opencv2.3.1,并在DM8168 cortex A8中执行图像处理. 开发环境: PC:ubuntu12.04LTS.Intel Core 2 Duo CPU E7200@2. ...
- Unreal开发HTC Vive程序,开启VR编辑模式
新建项目模板有个VirtualReality 调试的时候,Play按钮下拉有个VR Preview 打开VR模式,在我现在用的4.15.0版本,VR编辑模式还是预览功能,可以在“编辑器偏好设置”-“试 ...
- 将java项目发布到本地的linux虚拟机上
1.首先安装虚拟机,这里就不介绍了. 2.然后要我下载了一个WinSCP用于windows和虚拟机之间的文件传输. 首先获得虚拟机的ip: 必须保持连接, 如果断开ip就是这样的 3.传输文件 将jd ...
- XStream别名;元素转属性;去除集合属性(剥皮);忽略不需要元素
city package xstream; public class City { private String name; private String description; public St ...
- shell命令发送网站请求
GET请求:curl "http://192.168.87.195:8888/refresh" POST请求:curl -d "name=value" &quo ...
- linux shell 脚本使用
定义变量 fileName=text.txt 变量名称fileName,变量名称text.txt 使用变量 $fileName 用美元符号$开头,后面加变量名称,即可使用变量 使用用户输入参数 打印第 ...