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

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


一,swipe方法介绍


  • swipe()方法源码如下:
    微信图片_20220424143807.png
    swipe()方法的参数说明:
    start_x:起始横坐标
    start_y:起始纵坐标
    end_x:结束时横坐标
    end_y:结束时纵坐标
    duration:滑动持续时间,单位毫秒,默认None(一般设置500-1000毫秒比较合适)


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


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


  • 因为不同测试机屏幕的尺寸很可能有差异,所以一般不使用固定的的坐标来滑动屏幕,而是先获取测试机屏幕尺寸,再通过获取的手机屏幕尺寸来确定滑动的起始、结束坐标,这样在我们更换了测试手机后不需要更改方法。使用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()
相关文章
|
4月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
443 1
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
624 158
|
5月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
372 18
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
347 61
|
5月前
|
安全 测试技术 API
Python 单元测试详解
单元测试是Python开发中不可或缺的环节,能确保代码按预期运行、发现Bug、提升代码质量并支持安全重构。本文从基础概念讲起,逐步介绍Python单元测试的实践方法,涵盖unittest框架、pytest框架、断言使用、Mock技巧及测试覆盖率分析,助你全面掌握单元测试技能。
334 0
|
6月前
|
IDE 测试技术 API
python调试与测试
python调试与测试
|
6月前
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
7月前
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
190 10
|
7月前
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
330 0
|
11月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
680 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡

推荐镜像

更多