zoukankan      html  css  js  c++  java
  • appium---TouchAction

      我们在做app测试的时候,都会写一些长按,双击,滑动,拖动等一系列简单的操作来验证按钮或者跳转页是否正常的用例,那么我们在做自动化测试的时候这些操作应该怎么去做呢?

    TouchAction

    TouchAction是APPium中封装的一个方法,主要是都手势控制的一些操作:长按,滑动,等其他操作。

    源码:

    class TouchAction(object):
        def __init__(self, driver=None):
            self._driver = driver
            self._actions = []
    
        def tap(self, element=None, x=None, y=None, count=1):
            对元素执行点击操作
        参数:
        -元素-要点击的元素
        - x -(可选)x坐标点击,相对于左上角的元素。
        - y -(可选)y坐标。如果使用y,也必须设置x,反之亦然
            """
            opts = self._get_opts(element, x, y)
            opts['count'] = count
            self._add_action('tap', opts)
    
            return self
    
        def press(self, el=None, x=None, y=None, pressure=None):
            """以在特定元素或点上的下拉操作开始链
        参数:
        - el -(可选)要按的元素
        - x -(可选)x配合按。如果使用y,也必须设置x
        - y -(可选)y可按。如果使用x,也必须设置y
        -压力-(可选)[iOS只]按作为强制触摸。
            """
            self._add_action('press', self._get_opts(el, x, y, pressure=pressure))
    
            return self
    
        def long_press(self, el=None, x=None, y=None, duration=1000):
            """长按
            """
            self._add_action('longPress', self._get_opts(el, x, y, duration))
    
            return self
    
        def wait(self, ms=0):
            """按住元素后的等待时间
            """
            if ms is None:
                ms = 0
    
            opts = {'ms': ms}
    
            self._add_action('wait', opts)
    
            return self
    
        def move_to(self, el=None, x=None, y=None):
            """从这个坐标移动到另一个
            """
            self._add_action('moveTo', self._get_opts(el, x, y))
    
            return self
    
        def release(self):
            """释放手指
            """
            self._add_action('release', {})
    
            return self
    
        def perform(self):
            """执行动作
            """
            params = {'actions': self._actions}
            self._driver.execute(Command.TOUCH_ACTION, params)
    
            # get rid of actions so the object can be reused
            self._actions = []
    
            return self

    这里我们先拿一个小栗子说明使用方法

    class Actions(object):
    
        def __init__(self):
            self._actions = []
    
        def a(self, x):
            self._actions.append(x)
            return self
    
        def b(self, y):
            self._actions.append(y)
            return self
    
        def c(self, z):
            self._actions.append(z)
            return self
    
        def perform(self):
            print(self._actions)
    
    if __name__ == '__main__':
        Actions().a("hello").c("world").b("aaa").perform()
    
    
    
    ------结果-------
    ['hello', 'world', 'aaa']

    其实TouchAction就是通过这个方法来执行的,我们进行一系列的操作来后,通过perform方法来执行运行

     tap

    这个tap其实和前面模拟点击中写的tap是差不多,TouchAction中的tap中可以加入直接加入元素,也可以通过坐标进行定位

    # coding:utf-8
    from appium import webdriver
    # 导入TochAction模块
    from appium.webdriver.common.touch_action import TouchAction
    import time
    desired_caps = {
                     'platformName': 'Android',  # 测试版本
                     'deviceName': 'emulator-5554',   # 设备名
                     'platformVersion': '5.1.1', # 系统版本
                    "appPackage": "com.taobao.taobao",   # app包名
                    "appActivity": "com.taobao.tao.welcome.Welcome",   # 启动launch Activity
                    "noReset": True,  # 不清空数据
                    "unicodeKeyboard": True,    # 使用Unicode编码方式发送字符串
                    "resetKeyboard": True,      # 键盘隐藏起来
                            }
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    time.sleep(10)
    # 登录按钮
    element = driver.find_element_by_class_name('android.widget.Button')
    # 实例化
    toch = TouchAction(driver)
    # 执行点击
    toch.tap(element=element).perform()

    TouchAction其他动作:

    触摸 (tap)

    短按 (press)

    长按 (long_press)

    等待 (wait)

    移动到 (moveTo)

    释放 (release)

    执行 (perform)

  • 相关阅读:
    洛谷5495:Dirichlet前缀和
    SP5971 LCMSUM
    洛谷1829:crash的数字表格
    洛谷3172:选数
    Codeforces 1295 D. Same GCDs
    洛谷3768:简单的数学题
    NTT学习笔记
    洛谷1169:棋盘制作(悬线法)
    洛谷2444:病毒
    后缀自动机
  • 原文地址:https://www.cnblogs.com/qican/p/12589879.html
Copyright © 2011-2022 走看看