程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

app小程序手機端Python爬蟲實戰07UiSelector通過resourceId、層級定位方式

編輯:Python

作者:虛壞叔叔
博客:https://xuhss.com

早餐店不會開到晚上,想吃的人早就來了!

UiSelector通過resourceId、層級定位方式

一、resourceId定位方式

  • resourceId 全resourceID匹配
  • resourceIdMatches 正則表達式

1.1 實例演示

1.1.1 全resourceID匹配

可以看到,整個頁面只有一個resourceId,並沒有重復的resourceId。所以索引為0

# 包名通過weditor獲取
d.app_start(package_name="com.tal.kaoyan")
# 通過resourceId定位方式
d(resourceId = "com.tal.kaoyan:id/login_code_touname")[0].click()

1.1.2 多個條件來定位控件

可以將text屬性加進去,這樣也可以不用添加索引

# 包名通過weditor獲取
d.app_start(package_name="com.tal.kaoyan")
# 通過多個條件進行定位
d(resourceId = "com.tal.kaoyan:id/login_code_touname", text="密碼登錄").click()

1.1.3 正則表達式定位控件

# 包名通過weditor獲取
d.app_start(package_name="com.tal.kaoyan")
# 通過多個條件進行定位
d(resourceIdMatches = "com.tal.kaoyan:id\/login_code_touname", text="密碼登錄").click()

注意,對"/"要進行轉移操作的。

二、混合定位方式

2.1 層級查找控件

我們可以先看一下頁面的層級:

為什麼一個頁面裡,要嵌套這麼多層數呢?因為在每個布局中,都可以單獨定義它的屬性,這樣就能應對安卓開發中,各種界面的需求變化。

我們可以通過加入層級的關系,更加精確的找到控件:

# 包名通過weditor獲取
d.app_start(package_name="com.tal.kaoyan")
# 混合定位方式
d(className="android.widget.LinearLayout").child(text = "密碼登錄").click()

這裡就寫2個層級,那如果一個控件需要多層的查找才能唯一確定,可以一直child找到對應的控件。但那樣的話代碼會冗長,不推薦,可以跨層級定位控件。

2.2 跨層級定位控件

如果我想要跨層級查找應該怎麼實現呢?

通過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()

2.3 兄弟節點定位

通過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()

三、總結

  • 本文介紹了Uiautomator2 UiSelector通過resourceId、層級定位方式。
  • 如果覺得文章對你有用處,記得 點贊收藏轉發 一波哦,博主也支持為鐵粉絲制作專屬動態壁紙哦~

往期優質文章分享

  • python3調用百度翻譯接口

  • 花 1 分鐘寫了一段爬蟲,幫實現微信搶號成功
  • C++讀取python腳本中的dictionary字典變量以及它的鍵值對

  • Qt中的套件提示no complier set in kit和no debugger,出現黃色感歎號問題解決(MSVC2017)

  • Python+selenium 自動化 - 實現自動導入、上傳外部文件(不彈出windows窗口)

優質教程分享

  • 如果感覺文章看完了不過瘾,可以來我的其他 專欄 看一下哦~
  • 比如以下幾個專欄:Python實戰微信訂餐小程序、Python量化交易實戰、C++ QT實戰類項目 和 算法學習專欄
  • 可以學習更多的關於C++/Python的相關內容哦!直接點擊下面顏色字體就可以跳轉啦!
學習路線指引(點擊解鎖)知識定位人群定位🧡 Python實戰微信訂餐小程序 🧡進階級本課程是python flask+微信小程序的完美結合,從項目搭建到騰訊雲部署上線,打造一個全棧訂餐系統。Python量化交易實戰入門級手把手帶你打造一個易擴展、更安全、效率更高的量化交易系統️ Python&C++混合編程️難度偏高分享學習Python C++混合編程知識!

資料白嫖,溫馨提示

關注下面卡片即刻獲取更多編程知識,包括各種語言學習資料,上千套PPT模板和各種游戲源碼素材等等資料。更多內容可自行查看哦!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved