appium---TouchAction
Posted 测试-安静
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
以上是关于appium---TouchAction的主要内容,如果未能解决你的问题,请参考以下文章