最近公司要求对APP模块自动化,以Android 自动化为例,把appium滑动的方法swipe()再小结下。滑动的目的,一方面是为了更好的查找元素,一方面就是为了滑屏操作。代码如下:

package Util;

import static Util.log.Console.infoLog;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import org.openqa.selenium.OutputType;

import ObjectFactory.DriverFactory;

import Util.log.Console;

import io.appium.java_client.AppiumDriver;

import io.appium.java_client.TouchAction;

import java.time.Duration;

public class SwipScreen {

      private AppiumDriver<?> driver = DriverFactory.getAppiumDriver();

      // 向上滑动

      public void swipUp(int t, int num) {

            File screen = driver.getScreenshotAs(OutputType.FILE);

            try {

                  BufferedImage bufferedImage = ImageIO.read(screen);

                  int width = driver.manage().window().getSize().width;

                  int height = driver.manage().window().getSize().height;

                  Duration duration = Duration.ofSeconds(t / 1000);

                  Console.infoLog("this screen is: " + "width:" + width + ", "

                             + "height:" + height);

                  TouchAction action1 = new TouchAction(driver);

                  for(int i= 0; i < num; i++)

                  {

                       action1.press(width / 2, height * 3 / 4).waitAction(duration).moveTo(width / 2, height / 4).release();

                       action1.perform();

                  }

            } catch (IOException e) {

                  e.printStackTrace();

            }

      }

      // 向下滑动

      public void swipDown(int t, int num) {

            File screen = driver.getScreenshotAs(OutputType.FILE);

            try {

                  BufferedImage bufferedImage = ImageIO.read(screen);

                  int width = bufferedImage.getWidth();

                  int height = bufferedImage.getHeight();

                  Duration duration = Duration.ofSeconds(t / 1000);

                  Console.infoLog("width:" + width + ", " + "height:" + height);

                  TouchAction action1 = new TouchAction(driver);

                  for(int i = 0; i < num; i++)

                  {

                       action1.press(width / 2, height / 4).waitAction(duration).moveTo(width / 2, height * 3 / 4).release();

                      action1.perform();

                  }

            } catch (IOException e) {

                  e.printStackTrace();

            }

      }

      // 向右滑动

      public void swipRight(int t, int num) {

            File screen = driver.getScreenshotAs(OutputType.FILE);

            try {

                  BufferedImage bufferedImage = ImageIO.read(screen);

                  int width = bufferedImage.getWidth();

                  int height = bufferedImage.getHeight();

                  Duration duration = Duration.ofSeconds(t / 1000);

                  Console.infoLog("this screen is: " + "width:" + width + ", "

                             + "height:" + height);

                  TouchAction action1 = new TouchAction(driver);

                  for(int i = 0; i < num; i++)

                  {

                             action1.press(width/20, height / 2).waitAction(duration).moveTo(width*3/ 4, height / 2).release();

                             action1.perform();

                  }

            } catch (IOException e) {

                  e.printStackTrace();

            }

      }

      // 向左滑动

      public void swipLeft(int t, int num) {

            File screen = driver.getScreenshotAs(OutputType.FILE);

            try {

                  BufferedImage bufferedImage = ImageIO.read(screen);

                  int width = bufferedImage.getWidth();

                  int height = bufferedImage.getHeight();

                  Duration duration = Duration.ofSeconds(t / 1000);

                  Console.infoLog("this screen is: " + "width:" + width + ", "

                             + "height:" + height);

                  TouchAction action1 = new TouchAction(driver);

                  for(int i = 0; i < num; i++)

                  {

                       action1.press(width*3/4, height / 3).waitAction(duration).moveTo(width / 20, height / 3).release();

                       action1.perform();

                  }

            } catch (IOException e) {

                  e.printStackTrace();

            }

      }

}

已经封装了滑动的方法,直接使用即可

import Util.SwipScreen;

SwipScreen swip = new SwipScreen();

swip.swipDown(300,1);

这里的 swipDown就是向下滑动,现在很多app页面流行的下拉刷新,或者下拉增量刷新。300 和1分别是int t 和int  num,t是这里是填写毫秒数,这里的 毫秒数越小 滑动的速度越快,一般设定在500~1000。如果你想快速滑动 那就可以设置的更加小。Num是指滑动的次数,如app首页会有很多屏或者滑动到列表底部。就直接输入次数即可。滑动完之后记得睡眠下,然app加载好再做其他事情。

滑动API:Swipe(int start x,int start y,int end x,int y,duration)  
int start x-开始滑动的x坐标;
int start y -开始滑动的y坐标 ;
int end x -结束点x坐标;
int end y -结束点y坐标; 
duration 滑动时间(默认5毫秒)。

Appium--swipe滑动方法的更多相关文章

  1. Appium处理滑动方法是swipe

    滑动API:Swipe(int start x,int start y,int end x,int y,duration) 解释: int start x-开始滑动的x坐标:int start y - ...

  2. appium 处理滑动的方法

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

  3. python3+Appium自动化07-滑动操作以及滑动方法封装

    滑动解析 滑动主要分为:水平滑动.垂直滑动.任意方向滑动 滑动轨迹 在Appium中模拟用户滑动操作需要使用swipe方法,该方法定义如下: def swipe(self, start_x, star ...

  4. APPium+Python+iOS屏幕滑动方法对比

    最近在学习appium自动化,对iOS手机进行滑动操作进行总结: 1.mobile:scroll;该方法在实际使用调用时,会滚动2次.执行时间很长. 向下滚动整个屏幕driver.execute_sc ...

  5. Python+Appium自动化测试(8)-swipe()滑动页面

    app自动化测试过程中,经常会遇到滑动屏幕操作,appium框架的话我们可以使用webdriver提供的swipe()方法来对屏幕页面进行上滑.下滑.左滑.右滑操作. 一,swipe方法介绍 swip ...

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

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

  7. 移动端图片轮播—swipe滑动插件

    swipe是一个轻量级的移动滑动组件,它可以支持精确的触滑移动操作,能解决移动端对滑动的需求. swipe插件的使用主要有四大块: 一.html <div id='slider' class=' ...

  8. jquery 连写注释;siblings() 方法;jQuery 的3种滑动方法;slideUp()向上滑动;slideDown()向下滑动;slideToggle()来回滑动

    首先我们看两个连写注释 第一个:   /* 点击头像,显示基本资料 */ $(".f-chatTit a.avatar").click(function(){ $(this).hi ...

  9. jQuery 滑动方法slideDown向下滑动元素

    通过 jQuery可以在元素上创建滑动效果,jQuery slideDown() 方法用于向下滑动元素. jQuery 滑动方法 通过 jQuery,您可以在元素上创建滑动效果. jQuery 拥有以 ...

  10. 解析6种常用View 的滑动方法

    View 的滑动是Android 实现自定义控件的基础,实现View 滑动有很多种方法,在这里主要讲解6 种滑动方法,分别是layout().offsetLeftAndRight()与offsetTo ...

随机推荐

  1. 页面获取Web控件ID不能正常获取,它惹得祸

    今天碰到个比较奇葩的问题,因为动了一下目标框架,又原来的4.5.1改为3.5,然后又改回来了4.5.1,结果运行项目的时候发现界面js的计算,不能正常获值计算. 于是就开始找问题呗,先是发现这个二手项 ...

  2. uvalive 3635 Pie

    https://vjudge.net/problem/UVALive-3635 题意: 有F+1个人要分n个蛋糕,他们得到的蛋糕的面积必须是一样的,但是每个蛋糕必须是整块的蛋糕,而不是有多块蛋糕拼成的 ...

  3. line-height与图片底部间隙的学习整理转述

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 看大牛张鑫旭的视屏可能会理解的更深一些,点击这里: line-height,两行文字的基线之间的距离: 基 ...

  4. 学习React系列(十)——Render Props

    解决问题:将行为封装,供多个组件使用(在多个组件之间分享某段代码) 组件中的props属性中包含一个"render"属性(该属性为一个返回值为元素的方法),然后在该组件的rende ...

  5. Spting +Spring MVC+spring date jsp +hibernate+jq

    controller 控制页面跳转 处理前台后台数据交互 访问servicedao层:@Repository 数据库访问层 增删改查 jpa规范了hibernate jap仓库 jpa自动解析 方法名 ...

  6. Java 异常基础详解

    目录 1. Java 中的异常 1.1 什么是异常? 1.2 什么是异常处理? 1.2.1 异常处理的优势 1.3 Java 异常类的层次结构 1.4 异常类型 1.5 检查和未检查异常之间的区别 1 ...

  7. 页面js脚本与img等资源的下载顺序问题。

    引言问题 <img src="background.jpg"><script src="test.js"></script> ...

  8. 运用正则+replace+substring将一段英语的字母大写 angurlar运用自定义指令filter完成首字母大写

    复习下js基础并运用正则+replace+substring将一段英语的字母大写 <!DOCTYPE html><html> <head> <meta cha ...

  9. react组件开发规范(一)

    这是通过修改项目运行在Google上时的警告,总结的的部分react组件开发规范: (1)编写组件时,一定要写PropTypes,切莫为了省事儿而不写! 如果一个Props不是required,一定在 ...

  10. openSUSE虚拟机安装并连接Xshell