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 ...
随机推荐
- PHP高并发的解决方案
这几天面试,被问到这样一个问题:如何解决大流量的高并发问题.起初不知所措,在查阅相关资料,以及网上大牛们的解答之后,总结出以下几点: 1.服务器,如果同时访问量超过10W的话,需要采用专用服务器来承载 ...
- 关于Aspose强大的应用--EXECL
protected void btnConfirg_Click(object sender, EventArgs e) { genExcel(); } //设置内容文字色 表中有一个蓝色文字列和绿色文 ...
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion
本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...
- hdu 1348:Wall(计算几何,求凸包周长)
Wall Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 怎么绘制旋转Chem3D模型
化学领域的专业人士常常需要绘制各种化学图形,特别是3D的图形,这个就需要用到一些化学绘图软件.Chem3D是ChemOffice的核心组件之一,可以绘制化学三维模型,包括新建.删除.旋转.移动等基础编 ...
- json的循环
通过for in: var json = {width: '200px', height: '200px', background: 'green'}; var i = ''; for(i in js ...
- Django学习笔记第五篇--实战练习一--查询数据库并操作cookie
一.启动项目: django-admin start mysite1 cd mysite1 python manage.py startapp loginapp 根据上文敲命令就可以创建好了一个项目结 ...
- 【BZOJ4873】[Shoi2017]寿司餐厅 最大权闭合图
[BZOJ4873][Shoi2017]寿司餐厅 Description Kiana最近喜欢到一家非常美味的寿司餐厅用餐.每天晚上,这家餐厅都会按顺序提供n种寿司,第i种寿司有一个代号ai和美味度di ...
- 170406、用uid分库,uname(用户名)上的查询怎么办
[缘起] 用户中心是几乎每一个公司必备的基础服务,用户注册.登录.信息查询与修改都离不开用户中心. 当数据量越来越大时,需要多用户中心进行水平切分.最常见的水平切分方式,按照uid取模分库: 通过ui ...
- Java基础ArrayList、Servlet与Filter
一.技术分享 迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因 ...