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()
相关文章
|
2天前
|
Python
Python办公自动化:删除任意页数pdf页面
Python办公自动化:删除任意页数pdf页面
12 1
Python办公自动化:删除任意页数pdf页面
|
9天前
|
Web App开发 测试技术 持续交付
自动化测试的利器:Selenium与Python的完美结合
【9月更文挑战第21天】在软件开发的世界里,测试是确保产品质量的关键步骤。随着敏捷开发和持续集成的流行,自动化测试工具变得尤为重要。本文将介绍如何使用Selenium和Python进行高效的自动化测试,不仅提供代码示例,还深入探讨如何设计测试用例、选择正确的测试框架、以及如何整合到CI/CD流程中。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
22 3
|
20天前
|
安全 JavaScript 前端开发
自动化测试的魔法:如何用Python编写你的第一个测试脚本
【8月更文挑战第41天】在软件的世界里,质量是王道。而自动化测试,就像是维护这个王国的骑士,确保我们的软件产品坚不可摧。本文将引导你进入自动化测试的奇妙世界,教你如何使用Python这把强大的魔法杖,编写出能够守护你代码安全的第一道防护咒语。让我们一起开启这场魔法之旅吧!
|
2月前
|
Web App开发 测试技术 API
自动化测试之美:使用Selenium和Python进行Web应用测试
【8月更文挑战第31天】在软件开发的快节奏世界中,自动化测试如同一束明灯,照亮了质量保证之路。本文将引导你通过Selenium和Python的强大组合,探索如何构建高效的Web应用测试框架。我们不仅会讨论理论,还会深入代码,从一个简单的示例开始,逐步扩展至更复杂的场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。让我们一同揭开自动化测试的神秘面纱,体验它的魅力所在。
|
2月前
|
Web App开发 XML 测试技术
自动化测试框架设计:以Python和Selenium为例
【8月更文挑战第31天】在软件开发的快节奏中,自动化测试成为确保产品质量的关键步骤。本文将引导读者了解如何结合Python语言和Selenium工具来设计一个高效的自动化测试框架。通过浅显易懂的语言和实际代码示例,我们将探索自动化测试框架的核心组件,并学习如何实现它们。无论你是测试新手还是希望提升自动化技能的开发者,这篇文章都将为你打开一扇通向高效软件测试的大门。
|
2月前
|
敏捷开发 测试技术 数据安全/隐私保护
自动化测试的高效之路:如何利用Python和Selenium提升测试效率
【8月更文挑战第28天】本文旨在探讨通过Python语言结合Selenium框架来提高软件测试的效率。文章不仅介绍了自动化测试的基本概念,还提供了具体的代码示例,帮助读者理解如何实现自动化测试脚本,并指出了在实施过程中可能遇到的问题及其解决方案。通过本文,读者将学会如何有效地使用Python和Selenium工具,以减少重复性工作,提升测试流程的效率与准确性。
|
2月前
|
Web App开发 测试技术 持续交付
自动化测试之美:如何利用Selenium和Python提升测试效率
【8月更文挑战第27天】在软件开发的海洋中,自动化测试犹如一艘高速航行的帆船,让质量保证的过程更加迅速而精准。本文将引导你了解如何结合Selenium和Python这两大利器,构建强大的自动化测试框架,从而显著提升测试工作的效率和效果。通过深入浅出的讲解,我们不仅会探索这两个工具的基本使用方法,还会学习如何设计高效的测试用例,以及如何处理测试过程中遇到的各种问题。无论你是测试新手还是希望提高测试技能的开发者,这篇文章都将为你打开一扇通往更高效测试世界的大门。
|
17天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:如何用Selenium和Python打造高效测试脚本
【9月更文挑战第13天】在软件开发的海洋中,自动化测试是那抹不可或缺的亮色。它不仅提升了测试效率,还保障了产品质量。本文将带你领略使用Selenium和Python构建自动化测试脚本的魅力所在,从环境的搭建到脚本的编写,再到问题的排查,每一步都是对软件质量把控的深刻理解和实践。让我们开始这段探索之旅,解锁自动化测试的秘密吧!
14 0
|
17天前
|
jenkins 测试技术 持续交付
自动化测试的高效之路:如何利用Python进行Web应用测试
【9月更文挑战第13天】在软件开发的快节奏中,自动化测试是确保质量和效率的关键。本文将引导你了解如何使用Python语言及其强大的测试框架来提升Web应用的测试效率。我们将一起探索编写简洁而强大的测试脚本的技巧,以及如何通过持续集成(CI)实现自动化测试流程。准备好让你的测试工作飞一般的感觉!
|
2月前
|
XML JavaScript 测试技术
Web自动化测试框架(基础篇)--HTML页面元素和DOM对象
本文为Web自动化测试入门指南,介绍了HTML页面元素和DOM对象的基础知识,以及如何使用Python中的Selenium WebDriver进行元素定位、操作和等待机制,旨在帮助初学者理解Web自动化测试中的关键概念和操作技巧。
39 1
下一篇
无影云桌面