码迷,mamicode.com
首页 > 移动开发 > 详细

Android+appium +python 点击坐标tap方法的封装

时间:2018-01-04 14:24:43      阅读:1539      评论:0      收藏:0      [点我收藏+]

标签:plain   图片   定位   无法   self   错误   bounds   dev   parameter   

      当常使用的查找点击元素的方法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)

 

 

Android+appium +python 点击坐标tap方法的封装

标签:plain   图片   定位   无法   self   错误   bounds   dev   parameter   

原文地址:https://www.cnblogs.com/syw20170419/p/8192629.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!