Android+appium +python 点击坐标tap方法的封装
当常使用的查找点击元素的方法name、id、classname等无法使用时,我们将会采取坐标的点击来实现操作,同样存在一个问题,当手机的分辨率、屏幕大小不一致时,坐标的定位也会不同,因此将采用相对坐标来实现点击。
1、appium/webdriver底层给出的写法示例如下,详细的方法介绍自行查看底层介绍,这里不给出说明。
:Usage:
driver.tap([(, ), (, ), (, )], )
2、常见写法中出现的问题:
手机中查看坐标的方法:开启手机指针位置(设置--关于手机--开发者选项--指针位置),点击某个元素手机顶部显示出坐标。
错误写法一:直接给定想要点击的坐标值:x和y
self.device.tap(,) #如某个元素的坐标x=250,y=465,直接给定坐标写法如下
错误写法二、不清楚值怎么给,将x,y值写2遍,参考底层写法方式,如下:
self.device.tap([(,),(,)],)
执行以上的操作将出现的报错:AttributeError: Driver_Elements instance has no attribute 'tap'
3、正确的点击坐标值获取方法:
打开uiautomatorview,点到要获取的元素上查看右下角的bounds值,则是此元素的坐标值。如下:

写法为:
self.device.tap([(,),(,)],)
4、点击坐标方法的封装
def touch_tap(self,x,y,duration=): #点击坐标 ,x1,x2,y1,y2,duration
'''
method explain:点击坐标
parameter explain:【x,y】坐标值,【duration】:给的值决定了点击的速度
Usage:
device.touch_coordinate(277,431) #277.431为点击某个元素的x与y值
'''
screen_width = self.driver.get_window_size()['width'] #获取当前屏幕的宽
screen_height = self.driver.get_window_size()['height'] #获取当前屏幕的高
a =(float(x)/screen_width)*screen_width
x1 = int(a)
b = (float(y)/screen_height)*screen_height
y1 = int(b)
self.driver.tap([(x1,y1),(x1,y1)],duration)
弊端
通过坐标定位是元素定位的下下下策,实在没办法才用这个,不同的手机分辨率不同,因此适用性不强,这个坐标就不能写死,得算出所在屏幕的比例。
Android+appium +python 点击坐标tap方法的封装的更多相关文章
- 【备档】客户端自动化(主Android Appium + python
之前做分享写的文档,备档~ 0.移动客户端自动化简介 客户端自动化测试的本质 定位对象 · 操作对象 · 校验对象 对象的定位应该是自动化测试的核心,要想操作.校验一个对象,首先应该识别这个对象. 一 ...
- Android模拟屏幕点击input tap替代解决方案
动机解释 本来直接使用 adb shell -> input 即可模拟 键盘事件,触屏事件keyevent ,text,tap 但是手上的这台目标Android机4.0.3系统的input只支持 ...
- Python + Appium 获取当前屏幕的截图方法的封装
使用方法:get_screenshot_as_file(filename),来自于selenium\webdriver\remote\webdiver.py def take_screenShot(s ...
- appium+python自动化26-模拟手势点击坐标(tap)
# 前言: 有时候定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?(面试经常会问) 那就拿出绝招:点元素所在位置的坐标 tap用法 1.tap是模拟手指点击,一般页面上元素 的语法有两个参 ...
- appium+python自动化26-模拟手势点击坐标(tap)【转载】
# 前言:有时候定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?(面试经常会问)那就拿出绝招:点元素所在位置的坐标 tap用法 1.tap是模拟手指点击,一般页面上元素的语法有两个参数,第 ...
- appium+python自动化37-adb shell模拟点击事件(input tap)
前言 appium有时候定位一个元素很难定位到,或者说明明定位到这个元素了,却无法点击,这个时候该怎么办呢? 求助大神是没用的,点击不了就是点击不了,appium不是万能的,这个时候应该转换思路,换其 ...
- Python图片识别找坐标(appium通过识别图片点击坐标)
***如果只想了解图片相似度识别,直接看第一步即可 ***如果想了解appium根据图片识别点击坐标,需要看第一.二.三步 背景|在做UI测试时,发现iOS自定义的UI控件,appium识别不到. ...
- 『与善仁』Appium基础 — 27、模拟手势点击坐标
目录 1.模拟手势点击坐标 2.tap()用法 3.练习 4.弊端 1.模拟手势点击坐标 在定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?(面试经常会问) 那就拿出绝招:点击元素所在位置的 ...
- appium+python自动化24-滑动方法封装(swipe)
swipe介绍 1.查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快.默认为None可不填,一般设置500-1000毫秒比较合适. swipe(self, ...
随机推荐
- 转载一篇makefile,说的很详细
March 3, 2015 8:19 PM 原文见:https://www.cnblogs.com/OpenShiFt/p/4313351.html Makefile 文件的编写 学习前的准备 需要准 ...
- ubuntu 13.10 install wireshark
ubuntu 13.10 install wireshark 今天在使用java jsoup操作remote server的是否,在本地执行可以成功返回内容,然后打成jar包,使用shell在 ser ...
- NewLife.Net——管道处理器解决粘包
Tcp网络编程,必须要解决的一个问题就是粘包,尽管解决办法有很多,这里讲一个比较简单的方法. 老规矩,先上代码:https://github.com/nnhy/NewLife.Net.Tests 一. ...
- HTML知识点总结
HTML知识点总结 一.需要熟悉的基本快捷键 ctrl+c 复制 ctrl+v 粘贴 ctrl+x 剪切 ctrl+tab ...
- 44.1khz 16位比特双声道一分钟的音乐文件占多少硬盘空间?
2*2*44.1*1000*60=10584000字节=10M2个声道*(16比特/8比特)字节*采样率(每秒采样44.1*1000次)*一分钟有60秒16比特是精度,描述振幅的,16比特等于2个字节 ...
- c语言中realloc()函数解析
一.基本特性 1. realloc()函数可以重用或扩展以前用malloc().calloc()及realloc()函数自身分配的内存. 2. realloc()函数需两个参数:一个是包含地址的指针( ...
- Python_异常处理结构与调试
while True: x =input('Pleaes input:') try: x=int(x) print('You have input {0}'.format(x)) break exce ...
- 注解(Annotation)自定义注解入门
摘自:http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准 ...
- [ 搭建Redis本地服务器实践系列 ] :序言
说起来,是在一个气候适宜的下午,虽然临近下班,不过办公室里还是充满了忙碌的身影,不时的还会从办公区传来小伙伴们为了一个需求而激烈争论的声音,自从入了互联网这个行业,说实话,也就很少休息了,当然了也不全 ...
- Java并发之乐观锁悲观锁
定义 乐观锁和悲观锁这两种锁机制,是在多用户环境并发控制的两种所机制. 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作.[1]常见实现如独占锁.乐观锁:假设不会发生并发冲突,只在提交操作 ...