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

一,swipe方法介绍

swipe()方法源码如下:

swipe()方法的参数说明:

start_x:起始横坐标

start_y:起始纵坐标

end_x:结束时横坐标

end_y:结束时纵坐标

duration:滑动持续时间,单位毫秒,默认None(一般设置500-1000毫秒比较合适)

duration参数需要注意的是,在移动设备上滑动时间的快慢所形成的效果是不一样的。以今日头条APP首页上滑为例,同样的滑动距离,滑动较快则出现类似翻页的效果,而滑动较慢则是同一则新闻从起始位置滑动到结束位置。

手机屏幕的坐标:以手机屏幕左上角为坐标中心(0, 0),向右话滑动则纵坐标不变,横坐标变大;向下滑动则横坐标不变,纵坐标变大。在uiautomatorviewer中可以元素左上角坐标与右下角的坐标,如下图中"视频"按钮

因为不同测试机屏幕的尺寸很可能有差异,所以一般不使用固定的的坐标来滑动屏幕,而是先获取测试机屏幕尺寸,再通过获取的手机屏幕尺寸来确定滑动的起始、结束坐标,这样在我们更换了测试手机后不需要更改方法。使用webdriver提供的get_window_size()方法可以获取屏幕尺寸(即屏幕右下角的坐标),方法如下:

# 屏幕宽

width = driver.get_window_size()['width']

# 屏幕高

height = driver.get_window_size()['heigth']

滑动屏幕操作代码如下:

# 屏幕从下向上滑动

driver.swipe(width*0.5, height*0.9, width*0.5, height*0.1, 1000)

# 屏幕从上向下滑动

driver.swipe(width*0.5, height*0.1, width*0.5, height*0.9, 1000)

# 屏幕从左向右滑动

driver.swipe(width*0.1, height*0.5, width*0.9, height*0.5, 1000)

# 屏幕从右向左滑动

driver.swipe(width*0.9, height*0.5, width*0.1, height*0.5, 1000)

二,重新封装

我们还可以将滑动屏幕的操作封装成方法,方便后续调用

# project/common/baseOpera.py

class BaseOpera(object):

'''

基础操作

'''

def __init__(self, driver):

self.driver = driver

self.duration = 1000

@property

def width(self):

'''获取屏幕宽度'''

return self.driver.get_window_size()['width']

@property

def height(self):

'''获取屏幕高度'''

return self.driver.get_window_size()['height']

def swipe_to_left(self, base=0.1):

'''从右向左滑动'''

return self.driver.swipe(self.width*(1-base),

self.height*0.5,

self.width*base,

self.height*0.5,

self.duration

)

def swipe_to_right(self, base=0.1):

'''从左向右滑动'''

return self.driver.swipe(self.width*base,

self.height*0.5,

self.width*(1-base),

self.height*0.5,

self.duration

)

def swipe_to_top(self, base=0.9):

'''从下向上滑动'''

return self.driver.swipe(self.width*0.5,

self.height*base,

self.width*0.5,

self.height*(1-base),

self.duration

)

def swipe_to_bottom(self, base=0.9):

'''从上向下滑动'''

return self.driver.swipe(self.width*0.5,

self.height*(1-base),

self.width*0.5,

self.height*base,

self.duration

)

三,示例

调用baseOpera.py模块中的滑动方法,向上滑动查看今日头条首页新闻,简单示意如下:

from appium import webdriver

from common.baseOpera import BaseOpera

def android_driver():

desired_caps = {

"platformName": "Android",

"platformVersion": "10",

"deviceName": "PCT_AL10",

"appPackage": "com.ss.android.article.news",

"appActivity": ".activity.MainActivity",

"automationName": "uiautomator2",

"unicodeKeyboard": True,

"resetKeyboard": True,

}

# 启动app

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

return driver

def watch_news():

# 向上滑动今日头条首页

driver = android_driver()

bo = BaseOpera(driver)

bo.swipe_to_top()

if __name__ == '__main__':

watch_new()

python客户端自动化测试滚轮移到最上面_Python+Appium自动化测试(8)-swipe()滑动页面...相关推荐

  1. appium python自动测试 百度网盘_S35 移动App Appium自动化测试教程Appium+Python 百度云...

    Python视频教程名称:移动App Appium自动化测试教程Appium+Python  Python视频教程 [IT视频教程网] it教程 ( l  w1 F: L" `, v 2 c ...

  2. python写自动化测试脚本常见报错_Python Appium自动化测试 MonkeyScript

    Time will tell. 前边讲解的 Monkey 都是随机事件流,Monkey 在手机里像个无头苍蝇一样乱蹦乱跳,那么本章节就教你如何让 Monkey 按指令在手机里闹腾 -- Monkey ...

  3. python 安卓模拟器 操作_Python+Appium自动化测试-使用Android模拟器

    做APP的UI自动化测试时,我们往往会使用真机跑自动化测试脚本,因为这样才是最真实的使用场景.但前期调试脚本的话,可以先使用模拟器,这样相对更加方便. 不推荐使用Android SDK里自带模拟器,太 ...

  4. python手机自动化截图_Python Appium自动化测试 屏幕截图

    Time will tell. 在实际自动化项目运行过程中,很多时候 App 可以会出现各种异常,为了更好的定位问题,除了捕捉日志我们还需要对运行时的设备状态来进行截屏,从而达到一种 "有图 ...

  5. python自动化等待时间_python+appium 自动化测试 - 元素等待

    该篇文章主要用于整理的是在执行自动化测试过程中的几种元素等待方法 implicity_wait() sleep() wait_activity() 等待某元素出现后,再执行操作 WebDriverWa ...

  6. python自动化接口测试中的cookies怎么实现_python接口自动化测试--requests cookies处理...

    Cookies与会话对象 如果某个响应中包含一些Cookie,你可以快速访问它们: import requests print(r.cookies['NID']) print(tuple(r.cook ...

  7. python+appium自动化测试元素定位

    关于app自动化测试,元素定位工具有三个: appium自带的Appium Inspector工具 Android ADT原生的工具 python版uiautomator2中的weditor 由于我常 ...

  8. python写界面输入测试脚本_python+Selenium自动化测试——输入,点击操作

    这是我的第一个真正意思上的自动化脚本. 1.练习的测试用例为: 打开百度首页,搜索"胡歌",然后检索列表,有无"胡歌的新浪微博"这个链接 2.在写脚本之前,需要 ...

  9. 配置百度云盘python客户端bypy上传备份文件

    要求:安装python2.7,安装git 1.git clone https://github.com/houtianze/bypy.git 2.cd bypy 3.sudo python setup ...

最新文章

  1. MyBatis 源码分析 - 内置数据源
  2. 美味果冻(牛客练习赛53B)
  3. 需要vmwareinstalldisk上的文件vmnet_手机上一键就能进行PDF与其他文件的相互转换,果然厉害到不行...
  4. mysql5.0操作手册_MySQL 操作手册
  5. resnet结构_来聊聊ResNet及其变种
  6. Spring,SpringMvc初始化监听配置
  7. postman 指定响应格式_牛鹭学院:Postman接口测试方法,新手必看!
  8. dfs深度优先搜索_图的深度优先搜索(DFS)
  9. 拷贝网页内容增加版权信息的 JavaScript 代码示例
  10. xbox win10测试软件,UWP APP可通过Win10商店直接安装至XboxOne主机
  11. cubase手机版android,Cubase中文应用
  12. 51单片机学习笔记【九】——红外通信实验
  13. 《分形艺术,当科学嫁给了艺术》稿件撰写历程
  14. 小程序毕业设计选题springboot+vue自习室预约小程序 图书馆预约小程序 自习室预约系统java
  15. Kubernetes 报错小结
  16. matlab信号频域放大的含义,频域特征是什么意思 信号频域特征参数,如重心
  17. 模拟登录爬取广职院正方教务系统
  18. 从零开始用C语言实现图片解码播放器(有源码)
  19. MAC虚拟机设备无法连接到它的理想主机控制器
  20. 解决/lib64/libstdc++.so.6: version `CXXABI_1.3.8‘ not found

热门文章

  1. GitHub:Python 强化学习实用指南
  2. kuboard使用mysql_基于 Kubernetes 的微服务图形化管理界面 Kuboard
  3. VUE3.x(v-for)循环遍历指令
  4. python--(pickle)文件读写
  5. python模拟内置函数all_Python内置all函数详细介绍
  6. Spring(一)概述
  7. linux7添加端口过程,CentOS7安装firewalld防火墙添加放行端口简单演示过程
  8. java 执行多个查询语句_用java在单个语句中执行的多个查询
  9. OpenShift 4 - 配置OpenShift可使用的外部Image Registry和Mirror Registry
  10. ASP.NET Web API参数与模型绑定