使用Appium作app自动化测试,绕不开的就是下拉刷新操作,下拉是最常见的,其实还有上滑、左滑、右滑操作。在正式的测试流程里,可以把刷新操作封装成一个模块,需要时直接调用。

Appium中提供了三种滑动的方式:swipe滑动、scroll滑动、drag拖拽事件

swipe()方法是从⼀个坐标位置滑动到另⼀个坐标位置,是两个点之间的滑动。

def swipe(self, start_x, start_y, end_x, end_y, duration=None):"""Swipe from one point to another point, for an optional duration.:Args:- start_x - x-coordinate at which to start- start_y - y-coordinate at which to start- end_x - x-coordinate at which to stop- end_y - y-coordinate at which to stop- duration - (optional) time to take the swipe, in ms.:Usage:driver.swipe(100, 100, 100, 400)"""# `swipe` is something like press-wait-move_to-release, which the server# will translate into the correct actionaction = TouchAction(self)action \.press(x=start_x, y=start_y) \.wait(ms=duration) \.move_to(x=end_x, y=end_y) \.release()action.perform()return self
  • start_x - 滑动开始x轴坐标
  • start_y - 滑动开始y轴坐标
  • end_x - 滑动结束x轴偏移量
  • end_y - 滑动结束y轴偏移量
  • duration - (可选) 执行此次滑动时间,单位毫秒

其中end_x 和 end_y 为基于start_x 和start_y 的偏移量;最终在执行中的 to_x = start_x +end_x 并非end_x ;duration 参数单位为ms(默认5毫秒),注意 1s = 1000ms。

封装刷新模块

便于随时调用,我们可以自行封装代码,将上滑、下滑、左滑、右滑封装成一个刷新模块。

#coding=utf-8
import timeclass Slide(object):def __init__(self, driver):self.driver = driver#获取机器屏幕大小x,ydef get_size(self):x = self.driver.get_window_size()['width']y = self.driver.get_window_size()['height']return x, y#屏幕向上滑动def swipe_up(self, t): # t是指滑动时间(默认5毫秒,可选参数)"""滑动时X轴不变,Y轴由大到小"""screensize = self.get_size()x1 = int(screensize[0] * 0.5) # x坐标y1 = int(screensize[1] * 0.75) # 起始y坐标y2 = int(screensize[1] * 0.25) # 终点y坐标self.driver.swipe(x1, y1, x1, y2, t)#屏幕向下滑动def swipe_down(self, t):"""滑动时X轴不变,Y轴由小到大"""screensize = self.get_size()x1 = int(screensize[0] * 0.5) # x坐标y1 = int(screensize[1] * 0.25) # 起始y坐标y2 = int(screensize[1] * 0.75) # 终点y坐标self.driver.swipe(x1, y1, x1, y2, t)#屏幕向左滑动def swipe_left(self, n, t): # n是指滑动次数"""滑动时Y轴不变,X轴由大到小"""screensize = self.get_size()x1 = int(screensize[0] * 0.9)y1 = int(screensize[1] * 0.5)x2 = int(screensize[0] * 0.1)for i in range(0, n): # for循环,控制滑动次数time.sleep(3)self.driver.swipe(x1, y1, x2, y1, t)#屏幕向右滑动def swipe_right(self, n, t):"""滑动时Y轴不变,X轴由小到大"""screensize = self.get_size()x1 = int(screensize[0] * 0.1)y1 = int(screensize[1] * 0.5)x2 = int(screensize[0] * 0.9)for i in range(0, n): # for循环,控制滑动次数time.sleep(3)self.driver.swipe(x1, y1, x2, y1, t)

假设刷新模块的文件名为app_slide 那么可以这样调用

from app_slide import Slide#调用时传递appium.webdriver
flush = Slide(driver)#下拉刷新
flush.swipe_down(1000)

Appium自动化下拉刷新相关推荐

  1. 微信小程序下拉刷新和上拉加载

    效果图 微信小程序实现下拉刷新和上拉加载有2中方法 1 用系统自带的 个人感觉特别简单 2 使用scroll-view  实现, scroll-view 里面有2个属性是滑动到顶部以及到底部如下 其实 ...

  2. android google 下拉刷新 csdn,android SwipeRefreshLayout google官方下拉刷新控件

    下拉刷新功能之前一直使用的是XlistView很方便我前面的博客有介绍 SwipeRefreshLayout是google官方推出的下拉刷新控件使用方法也比较简单 今天就来使用下SwipeRefres ...

  3. 使用Vant框架的组件van-pull-refresh搭配van-list和van-card完成上滑加载更多列表数据,下拉刷新当前列表数据(等同于翻页功能)

    <template><div class="sg-page-body"><div class="sg-list"><v ...

  4. 微信小程序下拉刷新和上拉加载的实现

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 一: 下拉刷新 下拉刷新两个步骤就能实现. 1.在要实现下拉刷新的页面的json配置文件里面加上 &q ...

  5. 微信小程序订单页面下拉刷新上拉分页加载

    微信小程序开发交流qq群   581478349    承接微信小程序开发.扫码加微信. 正文: 效果图: 代码: json代码: {"enablePullDownRefresh" ...

  6. 20-flutter下拉刷新与上拉加载

    1 RefreshIndicator 下拉刷新控件 下拉刷新的时候会回调 onRefresh 方法 RefreshIndicator(onRefresh: _handleRefresh,child: ...

  7. refreshcontrol 实现下拉刷新的功能

    该组件实现下拉刷新的功能.不过该组件是用在ScrollView的内部的,为ScrollView添加一个下拉刷新的功能.当ScrollView的垂直方向的偏移量scrollY:0的时候,手指往下拖拽Sc ...

  8. 使用Google 官方的控件SwipeRefreshLayout实现下拉刷新功能

    之前做东西的时候,经常会用到下拉刷新的功能,之前大家都在使用Github上的一个很著名的开源项目 PullToRefresh 但是,现在好消息来了,google在19.1版本的support-v4兼容 ...

  9. 安卓下拉刷新、上拉加载数据显示

    整个是一个scrollView,嵌套一个线性布局,下拉刷新.或者上拉加载后,通过addView()方法,加载消息体,每一个消息体是一个复杂的子view. 做一个类似qq客户端"好友动态&qu ...

  10. mpvue 小程序如何开启下拉刷新,上拉加载?

    https://developers.weixin.qq.com/miniprogram/dev/api/pulldown.html#onpulldownrefresh 小程序API 微信小程序之下拉 ...

最新文章

  1. linux的文件压缩与解压缩,linux(文件压缩与解压缩)
  2. 中国10大最震撼的无人工厂,你吃的用的都是这么来的!
  3. Leetcode 198.打家劫舍 (每日一题 20210622)
  4. function “printf“ declared implicitly
  5. CentOS 6.4 命令行 安装 VMware Tools
  6. windows挂载linux共享,永久挂载 Windows 共享
  7. mpvue中小程序自定义导航组件开发指南
  8. 使用jquery 动态操作添加/删除tr td
  9. android的直播送礼物,仿斗鱼直播送礼物效果
  10. 获取阿里云docker加速器地址
  11. sharepoint对nodejs的要求
  12. Android 开机时间慢问题debug
  13. 重邮计算机esi排名,重庆顶尖的3所“双非”大学,学科强就业好,重庆邮电大学在列...
  14. 如何免费搭建FTP服务器---金万维
  15. 红黑树·删除操作,详细图解
  16. 语义分割分割常用网络
  17. 深入理解Http请求、DNS劫持与解析
  18. oracle查询用户时候被锁,Oracle用户被锁的原因及解决办法
  19. TextView各种跑马灯
  20. 数据立方体(Cube)

热门文章

  1. 分布式光纤管道泄漏监测系统管道泄漏检测技术分析
  2. ubuntu里面控制器放大缩小屏幕
  3. 计算机网络概论简单题,第一章计算机网络概述练习题
  4. 形式语言与自动机总结
  5. QTreeView 和QTreeWidget
  6. PyQt5 QTreeView树图
  7. 机器学习UCI数据库
  8. java jasperReports导出PDF字体加粗失效
  9. chrome浏览pdf 字体变了
  10. 【LeetCode】75. 颜色分类,使得相同颜色的元素相邻