天天看點

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

簡介

  有些小夥伴或者是童鞋可能會好奇會問上一篇中的那個monkey腳本裡的坐标點是如何擷取的,不是自己随便蒙的猜的,或者是自己用目光或者是尺子量出來的吧,答案當然是:NO。擷取控件坐标點的方式這裡宏哥給小夥伴們分享和講解三種方法(也就是三個臭皮匠),宏哥個人喜歡第二種,也推薦小夥伴們和童鞋們使用第二種,當然了蘿蔔青菜各有所愛,這裡不做強制要求。小平同志不是說過:不管白貓還是黑貓抓住耗子就是好貓。适合自己才是最好的,小夥伴們可以根據自己的喜好自行選擇。

擷取控件的坐标點方法

第一種方法(MonkeyRecorder擷取坐标)

    下面就MonkeyRecorder擷取坐标的方式,進行示範。MonkeyRecorder是一個比較好用的擷取坐标的工具,它是用來擷取真機或模拟器上坐标的工具,當我們點選真機或模拟器上的空間時,就能顯示真機或模拟器上的點選點的坐标。

(1)MonkeyRecorder的啟動

1.首先安卓手機連接配接上電腦,并保證以下兩個條件成立:

a.終端USB調成開發者模式

b.電腦安裝手機驅動

2.手機連接配接成功後,打開cmd視窗,輸入adb devices檢視已連接配接真機或模拟器裝置的名稱,我們這裡仍以夜神模拟器為代表。如圖:

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

3.在cmd視窗,輸入monkeyrunner後,啟動Monkeyrunner。做以下操作:導入MonkeyRecorder包、連接配接模拟器裝置、以MonkeyRecorder方式啟動模拟器,并依次輸入

如下指令:

1 from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
2 
3 from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
4 
5 device=MonkeyRunner.waitForConnection()
6 
7 recorder.start(device)      
Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

4.到此,MonkeyRecorder正式啟動。截圖如下。

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

(2)MonkeyRecorder的使用

1.我們這裡隻是使用MonkeyRecorder來記錄坐标,擷取坐标的方式很簡單。比如qq的登入界面,點選“登入”按鈕,右側就會顯示該按鈕的坐标;同樣,點選賬号輸入框或密碼輸入框,右側同樣會顯示坐标。這個坐标就是我們需要獲得的坐标。

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

2.同時,MonkeyRecorder中的界面是同模拟器頁面保持一緻的,在MonkeyRecorder中觸發任一操作,模拟器上會有相應的觸發。如果兩者沒有保持一緻,則點選MonkeyRecorder右上角的Refresh Display即可重新整理頁面。

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

第二種方法(Uiautomatorviewer)

  網上很多推薦擷取坐标點的方式,是使用 android-sdk/tools 目錄下,提供的 uiautomatorviewer 工具來擷取。但是這種方式非常的繁瑣,而實際上,我們又不需要如此精确的坐标點,畢竟控件那麼大,隻要點選的坐标落在控件的位置上,即可。

Uiautomatorviewer是Android sdk自帶的工具,位置在sdk/tools下。

工具打開方法:

1.sdk/tools下,找到uiautomatorviewer,輕按兩下打開

2.在cmd指令行,直接輸入uiautomatorviewer,打開該工具

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

打開該工具後,我們就可以開始使用了。

運作環境:Windows

使用方法:

1.連接配接模拟器或真機(我們這裡使用模拟器)

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

2.打開模拟器中指定的app,在uiautomatorviewer中截圖指定頁面

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

3.截圖成功後,頁面顯示如下:

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

需要注意的是,你的手機裝置或模拟器的api要在16以上,也就是android版本得是4.1以上,因為這個工具是google在4.1以後推出來的,隻适用于4.1以後的版本

4.結果分析

從上圖中,可以擷取到對應控件的ID及控件左上角、右下角的坐标。

1)對于控件坐标而言,這裡很簡單,我們一般取中點坐标,即:

中點坐标=((左上角橫坐标+右下角橫坐标)/2,(左上角縱坐标+右下角縱坐标)/2)

如,上圖中,中點坐标即((30+1009)/2,(268+314)/2)=(519.5,291)

注:坐标一般取整。

由此,我們可以得到所需控件的坐标,在腳本中,直接touch該點坐标即可。

2)對于控件ID而言,即上圖中的紅色框中部分,同樣在腳本中,直接touch該ID即可。

另外,利用uiautomatorviewer還可以擷取父級與子級控件之間的關系,擷取到的關系同HierarchyViewer保持一緻。

uiautomatorviewer就介紹到這裡。 

第三種方法(Pointer location擷取坐标)

  那麼我推薦另外一種更簡單的方式,來擷取目前你看見的,在待測試裝置上的控件的坐标點的定位方式。那就是利用 Android 裝置的開發者選項。

這裡以夜神模拟器為例:

1.點選設定

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

2.點選開發者選項

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

3.在指針位置 ,将這個屬性開啟之後,當手指在螢幕上滑動的時候,就可以在頂部看到目前觸摸點的 X、Y 軸的坐标,這就是我們需要的。

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

注意:開發者選項不是預設可見的,你需要自行開啟開發者模式,之後再進行此操作。(這不是可以上網自已查一下,如果是夜神模拟器,可以參考宏哥的小結部分開啟開發者選項)

小結

(1)安卓系統開啟開發者模式方法很多,我們模拟器是6.3.0.0版本這裡隻講适合夜神模拟器的方法,

  接下來進入圖文教程:

  1.點選設定

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

  2.點選關于平闆電腦

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

  3.點選7下版本号(手殘請點選20下),點選箭頭指向處的版本号(最底下的版本号),而不是上面的Android版本号

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

  4.傳回設定菜單

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)
Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)
Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

  這裡補充一點,如果感覺開發者這個選項礙眼,可以選擇關閉,關閉方法:

  設定--應用--全部--找到設定軟體,點選進入--清除資料

  這樣開發者模式又隐藏了~~

Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控件坐标擷取(超詳解)

  教程到此結束O(∩_∩)O~~

繼續閱讀