1. 程式人生 > >Android+appium +python 點擊坐標tap方法的封裝

Android+appium +python 點擊坐標tap方法的封裝

設置 touch png 要點 oid duration 顯示 因此 elf

當常使用的查找點擊元素的方法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方法的封裝