码迷,mamicode.com
首页 > 移动开发 > 详细

appium---TouchAction

时间:2020-04-08 18:58:58      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:ppi   mamicode   unicode编码   操作   拖动   params   导入   div   main   

  我们在做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)

 

appium---TouchAction

标签:ppi   mamicode   unicode编码   操作   拖动   params   导入   div   main   

原文地址:https://www.cnblogs.com/qican/p/12589879.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!