selenium中TouchAction的简单使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium中TouchAction的简单使用相关的知识,希望对你有一定的参考价值。

参考技术A     TouchAction,类似于ActionChains,ActionChains只是针对PC端程序鼠标模拟的一系列操作,对H5页面操作是无效的。TouchAction可以对H5页面操作,通过TouchAction可以实现点击、滑动、拖拽、多点触控,以及模拟手势等各种操作。

1.tap 在指定元素上敲击

2.double_tap 在指定元素上双敲击

3.flick 手势滑动

1.打开百度,输入“selenium测试”,通过TouchAction点击搜索框,滑动到底部,点击下一页

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)

 

以上是关于selenium中TouchAction的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

Appium 6.1.0 TouchAction 与 TouchAction

如何使用 TouchAction 滚动 Appium 1.7.1

高级手势TouchAction

appium--连续滑动

如何将String []转换为TouchAction命令的Point

如何将 Android Swipe 转换为 Android TouchAction?