appium---TouchAction
我们在做app测试的时候,都会写一些长按,双击,滑动,拖动等一系列简单的操作来验证按钮或者跳转页是否正常的用例,那么我们在做自动化测试的时候这些操作应该怎么去做呢?
TouchAction
TouchAction是APPium中封装的一个方法,主要是都手势控制的一些操作:长按,滑动,等其他操作。
源码:
class TouchAction(object):def __init__(self, driver=None):self._driver = driverself._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'] = countself._add_action('tap', opts)return selfdef 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 selfdef long_press(self, el=None, x=None, y=None, duration=1000):"""长按"""self._add_action('longPress', self._get_opts(el, x, y, duration))return selfdef wait(self, ms=0):"""按住元素后的等待时间"""if ms is None:ms = 0opts = {'ms': ms}self._add_action('wait', opts)return selfdef move_to(self, el=None, x=None, y=None):"""从这个坐标移动到另一个"""self._add_action('moveTo', self._get_opts(el, x, y))return selfdef release(self):"""释放手指"""self._add_action('release', {})return selfdef perform(self):"""执行动作"""params = {'actions': self._actions}self._driver.execute(Command.TOUCH_ACTION, params)# get rid of actions so the object can be reusedself._actions = []return self
这里我们先拿一个小栗子说明使用方法
class Actions(object):def __init__(self):self._actions = []def a(self, x):self._actions.append(x)return selfdef b(self, y):self._actions.append(y)return selfdef c(self, z):self._actions.append(z)return selfdef 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相关推荐
- (转载)中文Appium API 文档
该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...
- 中文 Appium API 文档
该文档是Testerhome官方翻译的 源地址:https://github.com/appium/appium/tree/master/docs/cn 官方网站上的:http://appium.io ...
- appium+python自动化33-解锁九宫格(TouchAction)
TouchAction 1.源码可以在这个路径找到:Lib\site-packages\appium\webdriver\common\touch_action.py class TouchActio ...
- appium元素坐标定位TouchAction
网上有很多人说的各种appium定位方法,但是我感觉有的不好用,有的不能用,所以整理了一个简单的定位方式,通过坐标定位 1.需要用到UIautomator(Andriod7.0版本需要UIautoma ...
- 【Python+Appium】开展自动化测试(十)TouchAction类与MultiAction类(控件元素的滑动、拖动,九宫格解锁,手势操作等)
目录 前言 一,TouchAction类 1,TouchAction类由webdriver库提供,提供以下方法: 2,tap点击 3,press短按 4,long_press长按 5,move_to移 ...
- appium无法定位元素,TouchAction坐标定位工具
在appium使用元素定位时 uiautomatorviewer定位如下图,这里看到的坐标有时候是不准的,我们要开启手机开发者选项的指针位置 在开发者选项中开启显示触摸操作和指针位置,这样以后调试ap ...
- Appium 关于 swipe 滑动时间控件选择时间问题,swipe 滑动没效果,用 TouchAction代替
一开始一直想用 swipe 进行滑动去操作滑动时间控件,选择时间. 后来尝试了几次后也没有滑动效果出现,各种百度搜索也找不到解决办法. 于是就采取了 TouchAction 方法,真机可以用开发者选项 ...
- appium中的TouchAction的常用用法
1.按压press 每一个press之后都要一个releasw()和Perform 开始按压一个元素或坐标点(x,y).通过手指按压手机屏幕的某个位置. press(WebElement el, in ...
- Appium的Java封装
文章出处 http://blog.csdn.net/niubitianping/article/details/52612211 一.为什么需要封装? 封装的本意就是为了方便.简洁. 二.Androi ...
- appium ios 真机自动化环境搭建
近期由于工作需要,本小菜在弄appium+ios+iphone真机的移动自动化,在网上找寻各种资料,发现针对IOS方面的资料少之又少,公司其它部门的弄过的同事也寥寥无几,即使有,也是安卓方面的.本次书 ...
最新文章
- 几步教你轻松搭建一个Java Web项目
- 编译hbase2.2.4+hadoop3.1.2
- google摄像头查找办法
- anaconda-ks.cfg详解
- 密码学原理与实践_浅谈SSH2工作原理
- 2016年下半年软考网络工程师真题解析精编版
- 对话元境 王矛,详解元境蓝图:以全面的技术重新定义计算范式
- 宾馆管理系统(做了ppt忘记发博客了)
- C语言函数取大,C语言函数大全(部分)
- 计算机专业本科生必学课程
- 阿里云服务器 安全组 防火墙 开放端口流程
- fat32源码c语言,FAT32文件系统基本原理与数据恢复编程
- 爱情没有了,生活仍在继续
- Perma.cc停止学术链接腐烂
- 工作组服务器虚拟化Hyper-V Replica 复写技术(二)
- [个人笔记]R语言:缺失值NA处理
- LNMP架构和论坛搭建以及一键部署
- 南京邮电大学2013年硕士研究生招生复试及同等学力加试参考书目
- 一幅图认识开源世界的大咖
- 指数基金定投指南 思维导图
热门文章
- Spring boot 正常启动 浏览器无法访问Controller
- “人机结合”基金何以笑傲18年的“团灭行情”?
- ToneLab for Mac(ps人像修图插件)支持ps2021
- java实现多重继承_Java对于多重继承是怎么实现的
- 思迈特软件Smartbi:没想到,那些具有设计感的ppt饼图,原来都是这样做的!
- 超声波引导系统开源(五)超声波传感器原理
- mysql mac 客户端
- hive - Hive函数大全
- 螺钉装弹垫平垫机器人_螺栓是用平垫,还是弹垫,怎么选择?
- 索彤L165D型Schildknecht挠曲/屈挠试验机