Android自動化學習2--元素查看工具weditor

前言

前面我們已經(jīng)使用 uiautomator2 成功連接到手機了厌丑,我們還需要一個工具來查看手機App上的元素,另外該項目作者也針對 uiautomator2 寫了一個工具 weditor 渔呵,我們可以使用該工具來查看元素怒竿。

更多的介紹,大家可以前往 Github 進行學習:https://github.com/openatx/weditor

安裝 weditor

通過 Python 的 pip 工具進行安裝扩氢,命令如下:pip install --pre weditor 耕驰。

(venv) D:\pycharm\Code\atxDemo2\venv\Scripts>pip install --pre weditor
Collecting weditor
  Downloading https://files.pythonhosted.org/packages/be/70/8b89a13a1a144e62f688aad68f3862c7206ff435f5fd10e9350318ab3221/weditor-0.6.4-py3-none-any.whl (1.6MB)
    100% |████████████████████████████████| 1.6MB 559kB/s
Requirement already satisfied: uiautomator2>=2.10.1 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from weditor) (2.15.2)
Requirement already satisfied: cached-property in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from weditor) (1.5.2)
Collecting facebook-wda>=1.0.5 (from weditor)
  Downloading https://files.pythonhosted.org/packages/ec/c3/1445667bdc4b3ee450c24bfbff04f26244a82a3209676759971e88663f0a/facebook_wda-1.4.0-py3-none-any.whl
Requirement already satisfied: six in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from weditor) (1.16.0)
Collecting tornado>=4.3 (from weditor)
  Downloading https://files.pythonhosted.org/packages/c7/c2/ff4628a08df5ce2662109957275718888d7ab6787591fa0decfd327bd2ce/tornado-6.1-cp37-cp37m-win_amd64.whl (422kB)
    100% |████████████████████████████████| 430kB 628kB/s
Requirement already satisfied: logzero in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from weditor) (1.7.0)
Collecting pywin32; sys_platform == "win32" (from weditor)
  Downloading https://files.pythonhosted.org/packages/25/54/177ee28fec4ecd23fa539f3df78067e7a4927515b84eac34e36060fcdb8d/pywin32-300-cp37-cp37m-win_amd64.whl (9.2MB)
    100% |████████████████████████████████| 9.2MB 1.4MB/s
Requirement already satisfied: pillow in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from weditor) (8.2.0)
Requirement already satisfied: requests in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from uiautomator2>=2.10.1->weditor) (2.25.1)
Requirement already satisfied: whichcraft in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from uiautomator2>=2.10.1->weditor) (0.6.1)
Requirement already satisfied: progress~=1.3 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from uiautomator2>=2.10.1->weditor) (1.5)
Requirement already satisfied: retry~=0.9 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from uiautomator2>=2.10.1->weditor) (0.9.2)
Requirement already satisfied: adbutils<1.0,>=0.11.0 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from uiautomator2>=2.10.1->weditor) (0.11.0)
Requirement already satisfied: Deprecated~=1.2.6 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from uiautomator2>=2.10.1->weditor) (1.2.12)
Requirement already satisfied: lxml>=4.3 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from uiautomator2>=2.10.1->weditor) (4.6.3)
Requirement already satisfied: packaging~=20.3 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from uiautomator2>=2.10.1->weditor) (20.9)
Requirement already satisfied: colorama; sys_platform == "win32" in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from logzero->weditor) (0.4.4)
Requirement already satisfied: chardet<5,>=3.0.2 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from requests->uiautomator2>=2.10.1->weditor) (4.0.0)
Requirement already satisfied: idna<3,>=2.5 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from requests->uiautomator2>=2.10.1->weditor) (2.10)
Requirement already satisfied: certifi>=2017.4.17 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from requests->uiautomator2>=2.10.1->weditor) (2020.12.5)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from requests->uiautomator2>=2.10.1->weditor) (1.26.4)
Requirement already satisfied: py<2.0.0,>=1.4.26 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from retry~=0.9->uiautomator2>=2.10.1->weditor) (1.10.0)
Requirement already satisfied: decorator>=3.4.2 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from retry~=0.9->uiautomator2>=2.10.1->weditor) (5.0.9)
Requirement already satisfied: deprecation<3.0,>=2.0.6 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from adbutils<1.0,>=0.11.0->uiautomator2>=2.10.1->weditor) (2.1.0)
Requirement already satisfied: apkutils2<2.0,>=1.0.0 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from adbutils<1.0,>=0.11.0->uiautomator2>=2.10.1->weditor) (1.0.0)
Requirement already satisfied: wrapt<2,>=1.10 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from Deprecated~=1.2.6->uiautomator2>=2.10.1->weditor) (1.12.1)
Requirement already satisfied: pyparsing>=2.0.2 in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from packaging~=20.3->uiautomator2>=2.10.1->weditor) (3.0.0b2)
Requirement already satisfied: pyelftools in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from apkutils2<2.0,>=1.0.0->adbutils<1.0,>=0.11.0->uiautomator2>=2.10.1->weditor) (0.27)
Requirement already satisfied: cigam in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from apkutils2<2.0,>=1.0.0->adbutils<1.0,>=0.11.0->uiautomator2>=2.10.1->weditor) (0.0.3)
Requirement already satisfied: xmltodict in d:\pycharm\code\atxdemo2\venv\lib\site-packages (from apkutils2<2.0,>=1.0.0->adbutils<1.0,>=0.11.0->uiautomator2>=2.10.1->weditor) (0.12.0)
Installing collected packages: facebook-wda, tornado, pywin32, weditor
Successfully installed facebook-wda-1.4.0 pywin32-300 tornado-6.1 weditor-0.6.4

安裝完成后,使用該工具的命令如下:python -m weditor

(venv) D:\pycharm\Code\atxDemo2\venv\Scripts>python -m weditor
listening on http://192.168.1.13:17310
[I 210522 13:05:20 web:2243] 200 GET / (::1) 140.85ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/bootstrap/3.3.7/css/bootstrap.min.css (::1) 718.79ms
[I 210522 13:05:20 web:2243] 200 GET /unpkg.com/element-ui/lib/theme-chalk/index.css (::1) 4.99ms
[I 210522 13:05:20 web:2243] 200 GET /static/libs/css/buttons.css (::1) 6.98ms
[I 210522 13:05:20 web:2243] 200 GET /static/libs/fontawesome/css/font-awesome.min.css (::1) 7.98ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/bootstrap.select/1.12.2/css/bootstrap-select.min.css (::1) 9.01ms
[I 210522 13:05:20 web:2243] 200 GET /static/style.css?v=b3b1e4acb8252e52c852bf94b932b61cec1f88758b2a87f79c05ed639e8ba56480596828b9d5283ef722507bee00b6b583a2bee79cb91a2eeab4f16293c301ae (::1) 40.72ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/npm/jstree@3.3.8/dist/themes/default/style.min.css (::1) 41.69ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/npm/jquery@3.3.1/dist/jquery.min.js (::1) 2.03ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/bootstrap/3.3.7/js/bootstrap.min.js (::1) 2.03ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/npm/ace-builds@1.4.12/src-noconflict/ace.min.js (::1) 5.01ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/bootstrap.select/1.12.2/js/bootstrap-select.min.js (::1) 5.98ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/npm/ace-builds@1.4.12/src-noconflict/mode-python.min.js (::1) 1.00ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/npm/ace-builds@1.4.12/src-noconflict/ext-language_tools.min.js (::1) 1.00ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/npm/ace-builds@1.4.12/src-noconflict/ext-searchbox.min.js (::1) 2.00ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/npm/ace-builds@1.4.12/src-noconflict/theme-monokai.js (::1) 0.97ms
[I 210522 13:05:20 web:2243] 200 GET /cdn.jsdelivr.net/npm/jstree@3.3.8/dist/jstree.min.js (::1) 2.99ms
[I 210522 13:05:20 web:2243] 200 GET /static/libs/vue-2.5.16/vue.js?v=1f2d3ad19a9273bbe648fe19b42206f73c6173dfe1123b96b67b2fdc2d6ca8fa3e24b59ae493ac0ded1a6645728fbbe47edf5dd43d3b3c307746b50e1778f319 (::1) 106.59ms
[I 210522 13:05:21 web:2243] 200 GET /static/js/index.js?v=bd966504b94d2b7792d21be18adb95649b35787f891ab722bb44d6f473eefe8276b31e727d895966f80f5640ac821d75e72b41356f77a9a1b6e5bf35ff90b73c (::1) 34.48ms
[I 210522 13:05:21 web:2243] 200 GET /static/js/common.js?v=a72c25bcd36a60339ae8d48ccb96531f4d23c3120bb6769e6a6763b95956233d3262ea33ff29e22c507ca74468c687bd571f1cb39fa9290078ec23c68117311a (::1) 55.29ms
[I 210522 13:05:21 web:2243] 200 GET /static/running.svg (::1) 60.28ms
[I 210522 13:05:21 web:2243] 200 GET /unpkg.com/element-ui/lib/index.js (::1) 70.26ms
[I 210522 13:05:21 web:2243] 200 GET /static/loading.svg (::1) 73.24ms
[I 210522 13:05:22 web:2243] 200 GET /static/libs/fontawesome/fonts/fontawesome-webfont.woff2?v=4.7.0 (::1) 2.99ms
[I 210522 13:05:22 web:2243] 200 GET /cdn.jsdelivr.net/bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff2 (::1) 1.00ms
[I 210522 13:05:23 web:2243] 200 GET /api/v1/version (::1) 1.00ms
[I 210522 13:05:23 shell:47] Started drain subprocess stdout in thread
[I 210522 13:05:23 web:2243] 101 GET /ws/v1/python (::1) 125.17ms
[I 210522 13:05:23 shell:189] create process pid: 13548
[I 210522 13:05:23 web:2243] 200 GET /unpkg.com/element-ui/lib/theme-chalk/fonts/element-icons.woff (::1) 75.31ms
[I 210522 13:05:24 web:2243] 200 GET /favicon.ico (::1) 1.99ms
* daemon not running; starting now at tcp:5037
* daemon started successfully

啟動成功后,瀏覽器會默認打開一個Web網(wǎng)頁:http://localhost:17310 扶檐,之后我們將在該頁面查看元素。

需要注意的是,我們在使用過程中,不要把命令行窗口關(guān)閉艰匙,否則將不能在上面Web頁面中查看元素署驻。

為了更方便使用宣吱,我們也可以創(chuàng)建啟動 weditor 的快捷方式圖標杭攻,執(zhí)行命令:python -m weditor --shortcut 锅睛。

(venv) D:\pycharm\Code\atxDemo2\venv\Scripts>python -m weditor --shortcut
Shortcut created. C:\Users\wintest\Desktop\WEditor.lnk
weditor快捷方式

weditor 連接手機

首先甜无,在命令行窗口輸入命令:adb devices 查看連接狀態(tài)奥帘,確保手機已經(jīng)連接上電腦已旧。

D:\>adb devices
List of devices attached
c01bcd5d        device

接著在Web頁面上秸讹,點擊 Connect 按鈕,當看到出現(xiàn)一個綠色的小葉子侣诺,就說明連接成功。

Web頁面

頁面元素定位

計算器

接下來,我們根據(jù)上面的計算器來對頁面元素的定位進一步說明和實踐涕蜂。

  • ResourceId 定位
# 點擊鍵盤的數(shù)字 1
d(resourceId="com.sec.android.app.popupcalculator:id/bt_01").click()
# 點擊鍵盤的加號 +
d(resourceId="com.sec.android.app.popupcalculator:id/bt_add").click()
  • Text 定位
# 點擊鍵盤的數(shù)字 5
d(text="5").click()
# 點擊鍵盤的等號 =
d(text="=").click()
  • Description 定位
# 點擊鍵盤的加號 +
d(description="加號").click()
# 點擊鍵盤的等號 =
d(description="等于").click()
  • ClassName 定位
# 點擊計算器最上方的文本區(qū)域
d(className="android.widget.EditText").click()
  • XPath 定位
# 點擊鍵盤的數(shù)字 1华匾,對應 ResourceId 屬性
d.xpath('//*[@resource-id="com.sec.android.app.popupcalculator:id/bt_01"]').click()
# 點擊鍵盤的加號 1蜘拉,對應 Text 屬性
d.xpath('//*[@text="1"]').click()
# 點擊鍵盤的等號 =持寄,對應 Description 屬性
d.xpath('//*[@content-desc="等于"]').click()
  • 坐標 定位
# 點擊鍵盤的數(shù)字 1仲闽,坐標大致為 (0.1, 0.8)
d.click(0.1, 0.8)
# 點擊鍵盤的等號 =搏恤,坐標大致為 (0.8, 0.9)
d.click(0.8, 0.9)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绍刮,一起剝皮案震驚了整個濱河市温圆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌孩革,老刑警劉巖岁歉,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異膝蜈,居然都是意外死亡锅移,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門彬檀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帆啃,“玉大人,你說我怎么就攤上這事窍帝∨耍” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵坤学,是天一觀的道長疯坤。 經(jīng)常有香客問我,道長深浮,這世上最難降的妖魔是什么压怠? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮飞苇,結(jié)果婚禮上菌瘫,老公的妹妹穿的比我還像新娘。我一直安慰自己布卡,他們只是感情好雨让,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忿等,像睡著了一般栖忠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天庵寞,我揣著相機與錄音狸相,去河邊找鬼。 笑死捐川,一個胖子當著我的面吹牛脓鹃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播属拾,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼将谊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了渐白?” 一聲冷哼從身側(cè)響起尊浓,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纯衍,沒想到半個月后栋齿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡襟诸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年瓦堵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歌亲。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡菇用,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陷揪,到底是詐尸還是另有隱情惋鸥,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布悍缠,位于F島的核電站卦绣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏飞蚓。R本人自食惡果不足惜滤港,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望趴拧。 院中可真熱鬧溅漾,春花似錦、人聲如沸著榴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兄渺。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挂谍,已是汗流浹背叔壤。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留口叙,地道東北人炼绘。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像妄田,于是被迫代替她去往敵國和親俺亮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容