Appium自动化测试swipe滑动封装

简介: Appium自动化测试swipe滑动封装

一、前置说明


Appium 原生的swipe()方法,需要指定起始坐标点的位置,方法调用偏底层。我们可以使用get_window_size()获取窗口大小,然后按比例定义起始位置,从而实现上下左右的滑动。


二、代码实现


from appium.webdriver.webdriver import WebDriver as Remote
from appium.options.android import UiAutomator2Options
from libs.check import CommonChecker
from libs.decorators import rerun_if_exception
class WebDriver(Remote):
    def __init__(self, command_executor, capabilities: dict, *args, **kwargs):
        # solve the problem: AttributeError:  NoneType'  object  has  no  attribute  'to_capabilities'.
        # https://stackoverflow.com/questions/77118636/attributeerror-nonetype-object-has-no-attribute-to-capabilities-getting-th
        options = UiAutomator2Options().load_capabilities(capabilities)
        super().__init__(command_executor=command_executor, options=options, *args, **kwargs)
    def swipe_up(self, duration=500, num=1):
        size = self.get_window_size()
        x1 = size['width'] * 0.5
        y1 = size['height'] * 0.75
        y2 = size['height'] * 0.25
        for i in range(num):
            self.swipe(x1, y1, x1, y2, duration)
    def swipe_down(self, duration=500, num=1):
        size = self.get_window_size()
        x1 = size['width'] * 0.5
        y1 = size['height'] * 0.25
        y2 = size['height'] * 0.75
        for i in range(num):
            self.swipe(x1, y1, x1, y2, duration)
    def swip_left(self, duration=500, num=1):
        size = self.get_window_size()
        x1 = size['width'] * 0.75
        y1 = size['height'] * 0.5
        x2 = size['width'] * 0.05
        for i in range(num):
            self.swipe(x1, y1, x2, y1, duration)
    def swip_right(self, duration=500, num=1):
        size = self.get_window_size()
        x1 = size['width'] * 0.05
        y1 = size['height'] * 0.5
        x2 = size['width'] * 0.75
        for i in range(num):
            self.swipe(x1, y1, x2, y1, duration)
    @rerun_if_exception()
    def swipe_to(self, direction, duration=500, num=1):
        allowed = ['up', 'down', 'left', 'right']
        CommonChecker.check_item_in_list(direction, allowed, 'direction')
        if direction == 'up':
            self.swipe_up(duration, num)
        if direction == 'down':
            self.swipe_down(duration, num)
        if direction == 'left':
            self.swip_left(duration, num)
        if direction == 'right':
            self.swip_right(duration, num)

在滑动页面时,可能会遇到页面未加载完成,从而导致滑动失败的问题。因此,在swipe_to() 方法上加了一个rerun_if_exception()失败重试的装饰器,相当于加了一个自动等待页面加载完成的功能。


三、Demo验证


测试代码:

def test_swipe_to():
    from driver.appium.driver import WebDriver
    appium_server_url = 'http://localhost:4723'
    capabilities = {
        "platformName": "Android",
        "automationName": "uiautomator2",
        "deviceName": "127.0.0.1:62001",
        "app": "D:\\resources\\imooc.apk",
    }
    driver = WebDriver(command_executor=appium_server_url, capabilities=capabilities)
    driver.swipe_to('left', num=2)
    driver.swipe_to('right', num=2)

成功实现了滑动的效果,控制台运行结果:

============================= test session starts =============================
collecting ... collected 1 item
test_appium.py::test_swipe_to PASSED                                     [100%]
============================= 1 passed in 22.46s ==============================
目录
相关文章
|
14天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
52 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
2月前
|
敏捷开发 Java 测试技术
探索自动化测试的奥秘:从Selenium到Appium
【9月更文挑战第14天】软件测试,这个看似枯燥乏味却至关重要的领域,正经历着一场革命。随着技术的进步,自动化测试工具如Selenium和Appium已成为质量保证的利器。本文将带你一探这些工具的神秘面纱,了解它们如何简化测试流程、提升效率,并确保软件产品的质量。准备好,我们将深入自动化测试的世界,解锁其背后的原理和实践技巧。
|
3月前
|
测试技术 Android开发 iOS开发
Appium 是一个开源的自动化测试框架,它支持多种平台和多种编程语言
Appium是一款开源自动化测试框架,支持iOS和Android多平台及多种编程语言。通过WebDriver协议,开发者可编写自动化测试脚本。在iPhone上实现屏幕点击等操作需安装Appium及其依赖,启动服务器,并设置所需的测试环境参数。利用Python等语言编写测试脚本,模拟用户交互行为,最后运行测试脚本来验证应用功能。对于iPhone测试,需准备真实设备或Xcode模拟器。
118 1
|
3月前
|
Java 测试技术 API
探索自动化测试的奥秘:从Selenium到Appium
【8月更文挑战第31天】本文旨在引导读者理解自动化测试的重要性,并逐步深入介绍如何利用Selenium和Appium这两个强大的工具来提升测试效率和质量。文章不仅分享理论知识,还通过具体代码示例,展示如何在Web应用和移动应用测试中实施自动化策略。
|
3月前
|
测试技术 Android开发 iOS开发
探索自动化测试的奥秘:从Selenium到Appium
【8月更文挑战第31天】在软件测试的海洋中,自动化测试如同一艘快艇,带领我们高效地穿越波涛汹涌的手动测试海域。本文将带你从Selenium的网页自动化测试出发,一路驶向Appium的移动应用自动化测试岛屿,揭秘这两种工具如何改变软件测试的航向。你将看到代码示例的灯塔,指引你理解它们如何在实战中发挥作用,以及为什么掌握这些技能对于测试人员来说至关重要。
|
3月前
|
Java 测试技术 Android开发
探索自动化测试之美:从Selenium到Appium
【8月更文挑战第31天】在软件开发的世界中,测试是确保产品质量的关键步骤。随着技术的发展,自动化测试工具如Selenium和Appium成为了开发者的得力助手。本文将通过一个简单的代码示例,带领读者了解如何利用这些工具进行高效的自动化测试,确保软件的稳定性和可靠性,同时也让测试过程变得更加轻松有趣。
|
11天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
42 3
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
63 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
244 7
Jmeter实现WebSocket协议的接口测试方法
下一篇
无影云桌面