python定位手机坐标_Android+appium +python 点击坐标tap方法的封装

当常使用的查找点击元素的方法name、id、classname等无法使用时,我们将会采取坐标的点击来实现操作,同样存在一个问题,当手机的分辨率、屏幕大小不一致时,坐标的定位也会不同,因此将采用相对坐标来实现点击。

1、appium/webdriver底层给出的写法示例如下,详细的方法介绍自行查看底层介绍,这里不给出说明。

:Usage:

driver.tap([(100, 20), (100, 60), (100, 100)], 500)

2、常见写法中出现的问题:

手机中查看坐标的方法:开启手机指针位置(设置--关于手机--开发者选项--指针位置),点击某个元素手机顶部显示出坐标。

错误写法一:直接给定想要点击的坐标值:x和y

self.device.tap(250,465) #如某个元素的坐标x=250,y=465,直接给定坐标写法如下

错误写法二、不清楚值怎么给,将x,y值写2遍,参考底层写法方式,如下:

self.device.tap([(250,465),(250,465)],100)

执行以上的操作将出现的报错:AttributeError: Driver_Elements instance has no attribute 'tap'

3、正确的点击坐标值获取方法:

打开uiautomatorview,点到要获取的元素上查看右下角的bounds值,则是此元素的坐标值。如下:

写法为:

self.device.tap([(711,761),(909,959)],100)

4、点击坐标方法的封装

def touch_tap(self,x,y,duration=100): #点击坐标 ,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)

弊端

通过坐标定位是元素定位的下下下策,实在没办法才用这个,不同的手机分辨率不同,因此适用性不强,这个坐标就不能写死,得算出所在屏幕的比例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值