app自动化测试过程中,经常会遇到滑动屏幕操作,appium框架的话我们可以使用webdriver提供的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(width0.5, height0.9, width0.5, height0.1, 1000)

屏幕从上向下滑动

driver.swipe(width0.5, height0.1, width0.5, height0.9, 1000)

屏幕从左向右滑动

driver.swipe(width0.1, height0.5, width0.9, height0.5, 1000)

屏幕从右向左滑动

driver.swipe(width0.9, height0.5, width0.1, height0.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+Appium自动化之swipe()滑动页面相关推荐

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

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

  2. Python+Appium自动化测试之toast定位

    目录 一. 前言 二. 环境 三. toast定位准备与定位方法 1. 准备 2. 定位方法 四. 示例代码 一. 前言 在app自动化测试的过程中经常会遇到需要对toast进行定位,最常见的就是定位 ...

  3. python+appium 自动化2--元素定位uiautomatorviewer

    出处:https://www.cnblogs.com/yoyoketang/p/6128741.html 前言: 可以打开手机上的app了,下一步元素定位uiautomatorviewer,通过定位到 ...

  4. python android自动化能做哪些页面_android - python 自动化测试 移动互联网 - SegmentFault...

    批处理ODBC配置 工作需要来回切换ODBC配置,用同一个DSN名称访问不同的数据库. 对于linux的odbc配置在odbc.ini文件里,替换不同的文件就可以切换了. 而windows的配置一直通 ...

  5. Python + Appium 自动化操作微信入门

    Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.PHP 等多种语言. Appium 封装了 Selenium,能够为用户提供所有 ...

  6. Python+Selenium自动化篇-5-获取页面信息

    1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import time browser = webdriver.Chro ...

  7. 工作常用——python+appium自动化入门简介整理——用于内部培训

  8. python实现自动化抢微信红包功能_【Python】用Python实现微信自动化抢红包,再也不用担心抢不到红包了...

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 - 过了一会,内心 ...

  9. App自动化测试(五)之swipe滑动操作

    App自动化测试之swipe滑动操作 分析滑动坐标 从上图我们可以分析出每个点的坐标, 假设屏幕宽为 width,高为 height A:(0.5 * width,0.1 * height) B:(0 ...

  10. python 打印机自动化_用Python实现定时自动化收取蚂蚁森林能量,再也不怕被偷了...

    1. 概述 提到蚂蚁森林,大家应该都知道,你是否有因忘记收取能量而被好友收取的经历呢? 如果你不是蚂蚁森林重度用户,被别人收取了能量可能对你来说没什么. 但如果你是蚂蚁森林重度用户,遇到能量被偷 .. ...

最新文章

  1. 开发人员常用SVN命令
  2. Ubuntu18.04将软件(Eclipse)固定在侧边收藏夹
  3. Windows下LaTeX安装及使用,使用VS Code改善LaTeX编辑环境
  4. 数据库开发——MySQL——primary key
  5. 【推荐】国外优秀Drupal答疑网站
  6. php打印输出小于10的数字,PHP 字符串输出 echo、print 与 printf 函数
  7. springCloud五大组件--Gateway
  8. java compliance_java complier compliance level问题引发的思考
  9. eclipse build慢问题
  10. easypoi之IExcelVerifyHandler自定义校验使用
  11. 【C++ Primer】第五章学习笔记(循环和关系表达式)
  12. sncr脱硝技术流程图_SNCR烟气脱硝技术工艺流程示意图
  13. Enrico Da Vincent
  14. BREDR之inquiry及page
  15. 洛阳九县八取名字_洛阳市地图(洛阳市九县六区地图)
  16. 阿里云人机验证(无痕)完整流程以及注意事项
  17. c++11多线程编程(十):packaged_task介绍与实例
  18. 【Codeforces 1392F】Omkar and Landslide | 思维、结论
  19. 计算机中SRAM的作用,SRAM特点及工作原理
  20. 基于MATLAB实现进制数转换

热门文章

  1. java刮刮乐,20行JS代码实现网页刮刮乐效果
  2. 《A Survey on Aspect-Based Sentiment Analysis: Tasks, Methods, and Challenges》阅读笔记
  3. 干货|语义网、Web3.0、Web3、元宇宙这些概念还傻傻分不清楚?(下)
  4. 你的简历能帮你争取到面试机会吗?
  5. 万年历节日c语言,万年历C语言
  6. 美国弗吉尼亚大学计算机科学,弗吉尼亚大学计算机科学系学位设置一览
  7. html打开lync客户端,Lync 2013与Exchange 2013--客户端发现响应内容类型为“text/html ”,但应为“text/xml”...
  8. GraphTrans:Representing Long-Range Context for Graph Neural Networks with Global Attention
  9. Nginx的配置与开发学习(五):配置属于自己的HTTPS证书
  10. 桌面应用程序软件开发语言_开发多语言软件应用程序的技巧