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

來源:互聯網
上載者:User

標籤: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方法的封裝

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.