当常使用的查找点击元素的方法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方法的封装的更多相关文章

  1. 【备档】客户端自动化(主Android Appium + python

    之前做分享写的文档,备档~ 0.移动客户端自动化简介 客户端自动化测试的本质 定位对象 · 操作对象 · 校验对象 对象的定位应该是自动化测试的核心,要想操作.校验一个对象,首先应该识别这个对象. 一 ...

  2. Android模拟屏幕点击input tap替代解决方案

    动机解释 本来直接使用 adb shell -> input 即可模拟 键盘事件,触屏事件keyevent ,text,tap 但是手上的这台目标Android机4.0.3系统的input只支持 ...

  3. Python + Appium 获取当前屏幕的截图方法的封装

    使用方法:get_screenshot_as_file(filename),来自于selenium\webdriver\remote\webdiver.py def take_screenShot(s ...

  4. appium+python自动化26-模拟手势点击坐标(tap)

    ​# 前言: 有时候定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?(面试经常会问) 那就拿出绝招:点元素所在位置的坐标 tap用法 1.tap是模拟手指点击,一般页面上元素 的语法有两个参 ...

  5. appium+python自动化26-模拟手势点击坐标(tap)【转载】

    ​# 前言:有时候定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?(面试经常会问)那就拿出绝招:点元素所在位置的坐标 tap用法 1.tap是模拟手指点击,一般页面上元素的语法有两个参数,第 ...

  6. appium+python自动化37-adb shell模拟点击事件(input tap)

    前言 appium有时候定位一个元素很难定位到,或者说明明定位到这个元素了,却无法点击,这个时候该怎么办呢? 求助大神是没用的,点击不了就是点击不了,appium不是万能的,这个时候应该转换思路,换其 ...

  7. Python图片识别找坐标(appium通过识别图片点击坐标)

    ***如果只想了解图片相似度识别,直接看第一步即可 ***如果想了解appium根据图片识别点击坐标,需要看第一.二.三步   背景|在做UI测试时,发现iOS自定义的UI控件,appium识别不到. ...

  8. 『与善仁』Appium基础 — 27、模拟手势点击坐标

    目录 1.模拟手势点击坐标 2.tap()用法 3.练习 4.弊端 1.模拟手势点击坐标 在定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?(面试经常会问) 那就拿出绝招:点击元素所在位置的 ...

  9. appium+python自动化24-滑动方法封装(swipe)

    swipe介绍 1.查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快.默认为None可不填,一般设置500-1000毫秒比较合适. swipe(self, ...

随机推荐

  1. #cat /proc/meminfo 详解

    $cat /proc/meminfoMemTotal:        2052440 kB //总内存MemFree:           50004 kB //空闲内存Buffers:        ...

  2. javaWeb安全漏洞修复总结

    1 Web安全介绍1 2 SQL注入.盲注1 2.1 SQL注入.盲注概述 1 2.2 安全风险及原因 2 2.3 AppScan扫描建议 2 2.4 应用程序解决方案 4 3 会话标识未更新7 3. ...

  3. Android 路由框架ARouter最佳实践

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76165252 本文出自[赵彦军的博客] 一:什么是路由? 说简单点就是映射页面跳转 ...

  4. SublimeText3常用快捷键和优秀插件

    SublimeText3常用快捷键和优秀插件 SublimeText是前端的一个神器,以其精简和可DIY而让广大fans疯狂.好吧不吹了直入正题 -_-!! 首先是安装,如果你有什么软件管家的话搜一下 ...

  5. Scala编程入门---数组操作之Array.ArrayBuffer以及遍历数组

    在Scala中,Array代表的含义与Java类似,也是长度不可改变的数组.此外,由于Scala与java都是运行在JVM中,双方可以互相调用,因此Scala数组底层实际上是java数组.列如字符串数 ...

  6. tomcat 构建问题记录

    mvng构建程序包com.sun.image.codec.jpeg不存在------->缺少serlet的jar包 MasterSlaveRoutingDataSource不是抽象的, 并且未覆 ...

  7. Python_shelve模块操作二进制文件

    import shelve #导入shelve模块 fp=shelve.open('shelve_test.dat') #创建或打开二进制文件 zhangsan={'age':38,'sex':'Ma ...

  8. Version 1.6.0 of the JVM is not suitable for the this product.Version:1.8 or greater is required

    这个问题时在打开eclipse时报的一个错误,报这个问题的意思我们都明白,说的就是当前版本的jdk版本太低,eclipse需要更高版本的jdk. 那就下一个更高版本的jdk就可以啦,这里我要说说我当时 ...

  9. Oracle12c中SQL优化(SQL TUNING)新特性之SQL计划指令

    SQL计划指令是Oracle12c中自适应查询优化的功能之一.SQL计划指令就像“额外的提醒” ,用以提醒优化器你先前选择了的计划并不是最优的,典型的是因为错误的势评估.错误的势评估往往是由统计信息缺 ...

  10. 【转】sentry 实时事件日志聚合平台

    1.install postgreSQL(v9.6)2.pip install sentry(v8.13.0)3.sentry init #初始化配置文件 4.配置好postgreSQL 需要连接re ...