作者:虛壞叔叔
博客:https://xuhss.com
早餐店不會開到晚上,想吃的人早就來了!
可以看到,整個頁面只有一個resourceId
,並沒有重復的resourceId
。所以索引為0
。
# 包名通過weditor獲取
d.app_start(package_name="com.tal.kaoyan")
# 通過resourceId定位方式
d(resourceId = "com.tal.kaoyan:id/login_code_touname")[0].click()
可以將text屬性加進去,這樣也可以不用添加索引
# 包名通過weditor獲取
d.app_start(package_name="com.tal.kaoyan")
# 通過多個條件進行定位
d(resourceId = "com.tal.kaoyan:id/login_code_touname", text="密碼登錄").click()
# 包名通過weditor獲取
d.app_start(package_name="com.tal.kaoyan")
# 通過多個條件進行定位
d(resourceIdMatches = "com.tal.kaoyan:id\/login_code_touname", text="密碼登錄").click()
注意,對"/"要進行轉移操作的。
我們可以先看一下頁面的層級:
為什麼一個頁面裡,要嵌套這麼多層數呢?因為在每個布局中,都可以單獨定義它的屬性,這樣就能應對安卓開發中,各種界面的需求變化。
我們可以通過加入層級的關系,更加精確的找到控件:
# 包名通過weditor獲取
d.app_start(package_name="com.tal.kaoyan")
# 混合定位方式
d(className="android.widget.LinearLayout").child(text = "密碼登錄").click()
這裡就寫2
個層級,那如果一個控件需要多層的查找才能唯一確定,可以一直child
找到對應的控件。但那樣的話代碼會冗長,不推薦,可以跨層級定位控件。
如果我想要跨層級查找應該怎麼實現呢?
通過child_by_text
,就會遞歸查找符合文本要求的控件。這裡在查找的條件中,添加了resourceId的條件。
# 包名通過weditor獲取
d.app_start(package_name="com.tal.kaoyan")
# 混合定位方式
d(className="android.widget.FrameLayout").child_by_text("密碼登錄", resourceId="com.tal.kaoyan:id/login_code_touname").click()
通過sibling可以實現兄弟定位
# 包名通過weditor獲取
d.app_start(package_name="com.tal.kaoyan")
# 兄弟節點定位
d(resourceId="com.tal.kaoyan:id/login_code_phonecodeview").sibling(resourceId="com.tal.kaoyan:id/login_code_touname")[0].click()
點贊
收藏
轉發
一波哦,博主也支持為鐵粉絲制作專屬動態壁紙哦~python3調用百度翻譯接口
C++讀取python腳本中的dictionary字典變量以及它的鍵值對
Qt中的套件提示no complier set in kit和no debugger,出現黃色感歎號問題解決(MSVC2017)
Python+selenium 自動化 - 實現自動導入、上傳外部文件(不彈出windows窗口)
關注下面卡片即刻獲取更多編程知識,包括各種語言學習資料,上千套PPT模板和各種游戲源碼素材等等資料。更多內容可自行查看哦!