appium API 之 TouchAction,TouchActions,MultiAction

这篇博客介绍了在安卓自动化项目中,如何使用Appium的TouchAction、TouchActions和MultiAction进行手势操作。TouchAction提供了如tap、press、long_press等接口,而TouchActions作为Selenium的辅助类,使用方式类似,可以进行补充操作。MultiAction则用于模拟多指操作。博主通过源码分析,详细解释了这些API的工作原理和使用方法。
摘要由CSDN通过智能技术生成

最近在做一些安卓自动化的项目,新手踩了一些坑,总结一下。
现在用过的常用库包括TouchAction、TouchActions、MultiAction。总结一下api和使用。

TouchAction

TouchAction是appium的辅助类,主要是一些手势操作。

from appium.webdriver.common.touch_action import TouchAction
  • tap:对元素执行点击操作

跳进函数看一下源码

def tap(self, element=None, x=None, y=None, count=1):
    """Perform a tap action on the element

    Args:
        element (`appium.webdriver.webelement.WebElement`): the element to tap
        x (:obj:`int`, optional): x coordinate to tap, relative to the top left corner of the element.
        y (:obj:`int`, optional): y coordinate. If y is used, x must also be set, and vice versa

    Returns:
        `TouchAction`: self instance
    """
    opts = self._get_opts(element, x, y)
    opts['count'] = count
    self._add_action('tap', opts)

    return self

这里可以看出来参数应该如何传,注意第一个参数传的是webElement,它将‘tap‘append到action队列中,在执行perform时,发指定指令执行。

使用

def Tap(self, data):
    _driver = self._cache.current
    ele = self._element_find(data[0], True, True)
    TouchAction(_driver).tap(ele).perform()

还有一些其他的接口:
看源码:

  • press
def press(self, el=None, x=None, y=None, pressure=None):
    """Begin a chain with a press down action at a particular element or point

    Args:
        el (:obj:`appium.webdriver.webelement.WebElement`, optional): the element to press
        x (:obj:`int`, optional): x coordiate to press. If y is used, x must also be set
        y (:obj:`int`, optional): y coordiate to press. If x is used, y must also be set
        pressure (:obj:`float`, optional): [iOS Only] press as force touch. Read the description of `force` property on Apple's UITouch class
                            (https://developer.apple.com/documentation/uikit/uitouch?language=objc) for more details on possible value ranges.

    Returns:
        `TouchAction`: self instance
    """
    self._add_action('press', self._get_opts(el, x, y, pressure=pressure))

    return self
  • long_press
    多了一个时间参数
def long_press(self, el=None, x=None, y=None, duration=1000):
    """Begin a chain with a press down that lasts `duration` milliseconds

    Args:
        el (:obj:`appium.webdriver.webelement.WebElement`, optional): the element to press
        x (:obj:`int`, optional): x coordiate to press. If y is used, x must also be set
        y (:obj:`int`, optional): y coordiate to press. If x is used, y must also be set
        duration (:obj:`int`, optional): Duration to press

    Returns:
        `TouchAction`: self instance
    """
    self._add_action('longPress', self._get_opts(el, x, y, duration))

    return self
  • move_to
def move_to(self, el=None, x=None, y=None):
    """Move the pointer from the previous point to the element or point 
Appium概述    appium 是一个自动化测试开源工具,支持 iOS, Android, Windows, Firefox OS平台上的原生应用, 纯web应用和混合应用。“移动原生应用”是指那些用iOS或者 Android SDK 写的应用(Application简称app)。“移动web应用”是指使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的 Chrome)。“混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。比如,像 Phonegap,可以帮助研发者使用网页技术开发应用,然    后用原生代码封装,这些就是混合应用。     更重要的是,appium是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS 和Android测试套件间代码的复用性。学习Tips    本系列课程所涵盖的内容,包括所有Appium APIs相关的讲解都是基于java语言,当然不需要测试学习者精通java语言,只需要稍微有些java基础就能轻松学习,比如,基本数据类型,循环控制结构,分支控制结构,java面向对象的概念等;    本系列课程的脚本案例编写是基于TestNG测试框架,测试项目使用Maven构建,课程内容中会对这些相关的基础知识点做简单介绍,没有基础的同学无需担心,为了尽可能得降低课程的学习难度,其他相关的工具用法只做简单介绍(够用为主)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值