[python]如何理解uiautomator裡面的 child, child_by_text, sibling,及使用情境

來源:互聯網
上載者:User

標籤:view   http   精確   style   lin   switch   eid   navig   設定   

如何理解uiautomator裡面的 child, child_by_text, sibling,我們藉助android原生的uiautomatorviewer抓取的控制項來進行理解

以如進行詳細講解(左邊與右邊的通過不同顏色進行圈起來,表示了這些控制項的歸屬關係),例如紅圈部分為一個父類,投影綠圈和黃圈均為它的子類(稱為child),而綠圈和黃圈屬於同層級關係,則可以理解為兄弟關係(稱為sibling)

比如要點擊“Navigation bar hide”的開關進行開啟或者關閉,則代碼為:

1 d(className = ‘android.widget.LinearLayout‘).child_by_text(‘Adaptive brightness‘,className = ‘android.widget.RelativeLayout‘).sibling(resourceId = ‘android:id/switch_widget‘).click()

按照代碼從左往右執行的順序,先找到父類的className,這時你會發現在該介面介面有很多個這樣的控制項,沒辦法進行唯一認定,然後再尋找該父類中的子類className精確的進行定位菜單選項,會發現其它父類中的子類也全部是一樣,也還是沒有辦法進行唯一認定,然後就再加上子類中的某一個標題(這個是唯一的),所以這就需要使用 .child_by_text  的方法來進行定位選項,找到該選項後要對該選項進行開關操作,又因為該 child_by_text的子類跟所要點擊的開頭控制項是是兄弟關係,所以就可以通過 .sibling方法進行進一步的精確定位。

a、className = ‘android.widget.LinearLayout‘  :這個是父類
b、className = ‘android.widget.RelativeLayout‘ :這個是a步驟的子類,但跟d步驟同為兄弟關係
c、‘Adaptive brightness‘ :這個是b步驟的子類
d、resourceId = ‘android:id/switch_widget‘  這個是a步驟的子類,但跟b步驟同為兄弟關係

 

 

 

總結:該代碼使用情境是在Android某一個介面中(比如設定介面),裡面有多個選項要進行開關操作,就需要用到該方法,不然你無法操作其它開關選項。

下面附上對該設定介面中兩個開關進行操作的源碼:

 1 #-*- coding:utf-8 -*- 2 ‘‘‘ 3 Created on 2018年7月27日 4  5 @author: any 6 ‘‘‘ 7 from uiautomator import device as d 8 while True: 9     if d(className = ‘android.widget.LinearLayout‘).child_by_text(‘Navigation bar hide‘,className = ‘android.widget.RelativeLayout‘).sibling(resourceId = ‘android:id/switch_widget‘):10         d(className = ‘android.widget.LinearLayout‘).child_by_text(‘Navigation bar hide‘,className = ‘android.widget.RelativeLayout‘).sibling(resourceId = ‘android:id/switch_widget‘).click()11     else:12         d(className = ‘android.widget.LinearLayout‘).child_by_text(‘Navigation bar hide‘,className = ‘android.widget.RelativeLayout‘).sibling(resourceId = ‘android:id/switch_widget‘).click()13     if d(className = ‘android.widget.LinearLayout‘).child_by_text(‘Adaptive brightness‘,className = ‘android.widget.RelativeLayout‘).sibling(resourceId = ‘android:id/switch_widget‘):14         d(className = ‘android.widget.LinearLayout‘).child_by_text(‘Adaptive brightness‘,className = ‘android.widget.RelativeLayout‘).sibling(className = ‘android.widget.Switch‘).click()

 

[python]如何理解uiautomator裡面的 child, child_by_text, sibling,及使用情境

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.