GeeLark RPA學(xué)習(xí)指南(4)——RPA中級
學(xué)習(xí)指南
由于這篇文章比較長,在開始本章學(xué)習(xí)之前,可以先看看學(xué)習(xí)建議與目標(biāo)。
學(xué)習(xí)建議
- 逐步理解,每次專注一個(gè)操作:中級操作內(nèi)容較多,且非常重要。建議每次只學(xué)習(xí)一個(gè)操作選項(xiàng),先了解基本功能,再通過小任務(wù)練習(xí)操作。
- 先學(xué)會“定位元素”:定位元素是后續(xù)點(diǎn)擊、輸入等所有操作的基礎(chǔ)。
- 動手練習(xí),逐步積累:通過每章的小練習(xí)逐步掌握每個(gè)操作。不要急于學(xué)習(xí)所有內(nèi)容,耐心實(shí)踐,多試錯(cuò)有助于積累經(jīng)驗(yàn)
本章目標(biāo)
- 掌握元素定位的基本方法,能夠在頁面上精確找到特定的按鈕、輸入框等元素。
- 學(xué)會使用各種點(diǎn)擊和長按操作,完成基本的頁面交互。
- 理解不同操作選項(xiàng)的設(shè)置參數(shù),靈活調(diào)整任務(wù)流程。
1.界面元素
在本教程中,我們將優(yōu)先使用“元素”這個(gè)詞來描述 APP 界面上的組成部分。但你需要知道,“控件”是一個(gè)更偏向程序開發(fā)的術(shù)語,二者含義相同。只有在涉及程序開發(fā)相關(guān)內(nèi)容、AutoX.js內(nèi)的相關(guān)功能時(shí),我才會使用“控件”這個(gè)詞。
在下圖中,你會看到有6種類型的元素:
1.文本:TextView控件,顯示提示信息或標(biāo)簽。
2.圖像:ImageView控件,用于顯示圖像、圖標(biāo)。
3/4.復(fù)合控件:帶有圖標(biāo)和說明文字的按鈕。
5.輸入框:EditText控件,允許你輸入文本內(nèi)容。
6.按鈕:Button控件,通常用于觸發(fā)某個(gè)操作,如“登錄”、“提交”。
隨著你對 RPA 技術(shù)的掌握逐漸深入,并分析更多的 APP 界面,你遇到的控件類型也會越來越多,遠(yuǎn)不止 6 種。不過在此之前,我們先從基礎(chǔ)內(nèi)容開始學(xué)習(xí)。

在編寫RPA流程的時(shí)候,我們會利用文本、元素的屬性、元素的坐標(biāo)來定位元素:
- 文本定位:最簡單,類似直接找名字,但要求名字唯一。比如界面中只有一個(gè)“Shop”、“Following”,那么就用此方法。
- 屬性定位:更精確,通過“編號”或“標(biāo)識”來找到,適合定位屬性明確的元素。比如圖標(biāo)元素,沒辦法通過文本定位,那么就只可以用這個(gè)元素的ID、屬性值來定位。
- 坐標(biāo)定位:通過坐標(biāo)定位元素,這種方法可以用于絕大多數(shù)場景。
2.了解元素屬性
啟動云手機(jī),打開TikTok,并讓AutoX.js處于浮窗狀態(tài)。AutoX.js設(shè)置方法可以參考前文,這里就不再啰嗦了。
步驟1:點(diǎn)擊AutoX.js的浮窗圖標(biāo),點(diǎn)擊藍(lán)色的【Layout analysis(布局分析)】,選擇【Layout range analysis(布局范圍分析)】

這時(shí)候,界面上會出現(xiàn)綠色的方框,說明AutoX.js識別了界面上的的各種元素。

步驟2:點(diǎn)擊其中一個(gè)元素,如【Shop】,選擇菜單中的【View control information(查看控件信息)】

步驟3:進(jìn)入到元素的屬性界面。每個(gè)元素都有不同的屬性,以下是我們常用的幾種屬性及其說明:
- 類名(className):用于表示元素所屬的控件類別或樣式。
- 描述(desc):控件的“簡介”或“標(biāo)簽”,通常是簡短的描述。但需要注意,有些控件沒有設(shè)置描述,此時(shí) desc 屬性會為空。
- 完整ID(fullId):相當(dāng)于控件的“身份證號”。如果控件有獨(dú)特的 ID,這個(gè)屬性就是其唯一標(biāo)識,RPA 可用它精確定位控件。但有時(shí)候,頁面多個(gè)元素可能會使用同一個(gè)fullID,要格外小心!
- 文本(text):控件上顯示的文字內(nèi)容,常見于按鈕或標(biāo)簽中,例如“登錄”、“Login” 或 “Create New Account”。

你可以多去不同的頁面,點(diǎn)擊元素,查看不同元素的屬性值。
3.如何定位元素
3.1 文本定位法
我們先小試牛刀,用文本(屬性)來定位一個(gè)元素?;氐?TikTok 的首頁,你會發(fā)現(xiàn)頁面上大致有 3 個(gè)帶文本的區(qū)域。接下來,我們嘗試通過點(diǎn)擊這 3 個(gè)區(qū)域的按鈕,來熟悉文本屬性的使用方法。

步驟一:先創(chuàng)建一個(gè)RPA模板,添加打開TikTok APP、等待時(shí)間的步驟(如果你還不會,可以從RPA初級開始學(xué)習(xí))。

步驟2:添加【點(diǎn)擊元素】,選擇器選擇【text】,并填上元素的文本,例如Shop,Profile,Inbox等,最后點(diǎn)擊【確定】。


步驟3: 調(diào)試模板,看看運(yùn)行的效果。

作業(yè):
為了鞏固你的知識,請嘗試點(diǎn)擊 TikTok 首頁的各種文本控件,熟悉文本定位的方法。每次運(yùn)行任務(wù)后,請手動將界面恢復(fù)到 TikTok 首頁,以便觀察 RPA 執(zhí)行任務(wù)的初始狀態(tài),確保每次測試從初始的界面開始。
3.2 點(diǎn)擊元素
剛剛我們用到了【點(diǎn)擊元素】這個(gè)選項(xiàng),接下來我會列出一些關(guān)于這個(gè)選項(xiàng)的說明。

使用場景:用于模擬點(diǎn)擊APP界面中的某個(gè)控件(如按鈕、鏈接、圖片等)。
面對這么多選項(xiàng),你先別著急。以你現(xiàn)在的水平,只需要掌握如何選擇合適的選擇器,并正確填寫屬性值即可。至于其他選項(xiàng)的設(shè)置,可以暫時(shí)保持默認(rèn)。當(dāng)后面學(xué)習(xí)到更高級的技巧,你再設(shè)置其他選項(xiàng)。
設(shè)置選項(xiàng) | 說明 |
選擇器 | fullId:使用控件的唯一 ID 進(jìn)行精確定位。 text:通過顯示文本定位,適合文字明確的元素。 desc:通過描述信息定位,適合圖標(biāo)類控件。 className:通過類名定位,只適合類名唯一的元素,通常和其他選擇器一起使用。 |
選擇器條件 | 等于:完全匹配屬性值,適合固定值的元素。 包含:匹配部分屬性值,適合動態(tài)變化的文本或描述。 |
元素順序 | 固定值:選擇第幾個(gè)符合條件的目標(biāo)元素。 區(qū)間隨機(jī):從指定范圍內(nèi)隨機(jī)選擇一個(gè)目標(biāo)元素。 |
等待時(shí)間 | 指定尋找目標(biāo)元素的最大等待時(shí)間(單位:毫秒)。頁面加載較慢時(shí),適當(dāng)增加等待時(shí)間(如5000ms) |
是否查找不可見元素 | 控制是否可以查找屏幕上看不到的元素(如隱藏元素或需要滾動的內(nèi)容)。 - 點(diǎn)擊需要滾動才能顯示的按鈕時(shí),選擇“是”。 - 只操作當(dāng)前屏幕上的內(nèi)容時(shí),選擇“否”。 |
結(jié)果保存至 | 它的主要作用是記錄“點(diǎn)擊操作是否成功”,并將這個(gè)結(jié)果存儲到一個(gè)布爾類型的變量中。 布爾類型的變量只有兩個(gè)值:true(點(diǎn)擊成功)或 false(點(diǎn)擊失?。?/td> |
說明 | 添加備注說明,記錄此步驟的作用或目的。 |
此刻,你可能會問:老費(fèi),文本元素我已經(jīng)會點(diǎn)擊了,可是那些沒有文本的圖標(biāo)怎么辦呢?
別急!這是因?yàn)槟氵€沒有學(xué)習(xí)“屬性定位法”。接下來,我會帶你一步步掌握它。
3.3 屬性定位法
接下來,我將通過一個(gè)簡單的 RPA 流程來教會你如何使用屬性定位法。
具體任務(wù)是:打開 TikTok APP——等待幾秒鐘——點(diǎn)贊當(dāng)前視頻。通過這個(gè)實(shí)操案例,你將輕松掌握屬性定位法的核心用法。
步驟1:點(diǎn)擊AutoX.js的浮窗圖標(biāo),點(diǎn)擊藍(lán)色的【Layout analysis(布局分析)】,選擇【Layout range analysis(布局范圍分析)】

步驟2:點(diǎn)擊“Like”圖標(biāo),選擇菜單中的【View in layout hierarchy(布局層次分析)】。
此時(shí),你會看到屏幕上列出了許多控件的信息。除此之外,“Like”按鈕周圍還會出現(xiàn)一個(gè)紅框。注意!這個(gè)紅框不是我畫的,而是 AutoX.js 自動標(biāo)記的,用來表示當(dāng)前正在查看的控件。紅框范圍內(nèi)的控件即為我們正在分析的目標(biāo)。

我知道你第一次看這個(gè)界面是懵的,所以就多啰嗦幾句。

1.豎條與層級結(jié)構(gòu)
這些豎條表示 UI元素的層級關(guān)系。每多一個(gè)豎條,表示這個(gè)元素嵌套在更深的層級中。例如,最頂層的是FrameLayout,接下來就是子元素LinearLayout。
2.折疊/展開按鈕
折疊或展開該元素的子節(jié)點(diǎn),你可以通過展開或折疊,了解元素的從屬關(guān)系。
3.元素紅框
當(dāng)你在【布局層次分析】中選中一個(gè)元素,紅框會自動跳轉(zhuǎn)到該元素在實(shí)際APP界面中的位置。這表示當(dāng)前選中的元素在應(yīng)用界面中對應(yīng)的具體區(qū)域,方便你快速確認(rèn)選中的是正確的控件。

溫馨提醒
使用屬性定位法的時(shí)候,會頻繁遇到元素嵌套的情況,如果你查看的元素屬性沒有值,說明沒有找對元素,多試試用【布局層次分析】。也許,你要找的元素在更深一層里。
步驟3:向下滾動界面,查找與“Like”按鈕對應(yīng)的控件信息。當(dāng)某個(gè)控件的顏色比其他控件更深時(shí),說明它正是當(dāng)前選中的控件,例如“Like”圖標(biāo)對應(yīng)的控件。這種高亮顯示可以幫助你快速定位目標(biāo)控件。

步驟4:長按高亮的 ImageView,選擇 【View control information(查看控件信息)】。在彈出的屬性界面中,你會看到以下信息:
- desc 屬性值:Like
- fullId 屬性值:com.zhiliaoapp.musically:id/cf6 (注意,fullId 的值可能因設(shè)備或版本不同而有所變化,請以你實(shí)際看到的為準(zhǔn))

步驟5:搭建一個(gè)可以測試的最簡單流程,在第 3 步中選擇 【點(diǎn)擊元素】 操作。

在使用 【點(diǎn)擊元素】 時(shí),選擇器可以設(shè)置為 fullId 或 desc,并且填上你在AutoX.js中查看到的屬性值。

小技巧:當(dāng)你點(diǎn)擊某個(gè)屬性值的時(shí)候,會復(fù)制如下格式的文本:fullId("com.zhiliaoapp.musically:id/cf6")、className("android.widget.ImageView"),我們只需要填寫引號里面的值即可。

步驟6:別忘了調(diào)試模板,看看流程是否正常運(yùn)行。

作業(yè)
請編寫一個(gè) RPA 流程,點(diǎn)擊下圖紅框標(biāo)出的圖標(biāo)。通過這個(gè)流程,你將學(xué)會使用 fullId 和 desc 選擇器定位元素。建議一次只點(diǎn)擊一個(gè)圖標(biāo),并通過 AutoX.js 工具練習(xí)尋找對應(yīng)控件的 fullId 或 desc 屬性的能力。
再次提醒:多使用【View in layout hierarchy(布局層次分析)】,很多元素都是嵌套的關(guān)系,當(dāng)你發(fā)現(xiàn)很多屬性值是空的時(shí)候,可能是元素沒找對。

知識拓展
className選擇器使用的場景一般有兩種:
1.唯一屬性值:當(dāng)控件的 className 屬性值是唯一的時(shí),可以直接通過該值精準(zhǔn)定位控件。
例如下圖的場景中,輸入框元素的className=“android.widget.EditText”。從“EditText”可以看出,這是一個(gè)可以輸入文本的元素。而在此界面中,輸入框就只有一個(gè),所以就可以選擇用class選擇器去定位元素。


2.輔助定位:與其他選擇器組合使用,縮小定位范圍。例如,定位一個(gè) className 值為 com.ui.editText 且 desc 值為 username 的控件。通過這種組合,可以更準(zhǔn)確地找到目標(biāo)控件。

3.4 坐標(biāo)定位法(點(diǎn)擊坐標(biāo))
無論是文本定位法還是屬性定位法,都可能在某些情況下無法精準(zhǔn)定位元素。這時(shí),就需要通過屏幕上的坐標(biāo)來精準(zhǔn)定位元素的位置。
在開始操作之前,我們先了解Android 手機(jī)的坐標(biāo)體系。如圖所示,A 和 B 兩個(gè)點(diǎn)的坐標(biāo) (X, Y) 。

接下來,我們來學(xué)習(xí)如何獲取元素的坐標(biāo)。
步驟1:點(diǎn)擊AutoX.js的浮窗圖標(biāo),點(diǎn)擊藍(lán)色的【Layout analysis(布局分析)】,然后選【Layout range analysis(布局范圍分析)】

步驟2:點(diǎn)擊“Like”圖標(biāo),選擇菜單中的【View control information(查看控件信息)】。

步驟3:在bounds屬性一欄,可以看到(635,755,708,828),這代表所選元素的左上角(A點(diǎn))與右下角(B點(diǎn))的坐標(biāo)。

步驟4:搭建一個(gè)可以測試的最簡單流程,在第 3 步中選擇 【點(diǎn)擊坐標(biāo)】 操作。

那么,【點(diǎn)擊坐標(biāo)】中的 X、Y 坐標(biāo)應(yīng)該怎么填寫呢?我們希望 RPA 點(diǎn)擊時(shí),能精準(zhǔn)點(diǎn)擊圖片的中心點(diǎn)位置(藍(lán)色箭頭所示)。然而,bounds 屬性提供的是兩個(gè)邊界坐標(biāo)(A 點(diǎn)和 B 點(diǎn))。如果填寫 A 或 B 點(diǎn)的坐標(biāo),可能會導(dǎo)致誤觸其他元素。


其實(shí),只需簡單計(jì)算就能得出中心點(diǎn)的坐標(biāo)。例如,A 點(diǎn)的 X 坐標(biāo)是 635,B 點(diǎn)的 X 坐標(biāo)是 708,它們的中心點(diǎn)坐標(biāo)為 X = (635 + 708) / 2 = 671.5。同理,Y 坐標(biāo)為 Y = (755 + 828) / 2 = 791.5。由于 RPA 的坐標(biāo)只能填寫整數(shù),因此最終填寫為 X = 671,Y = 791。
如果不想進(jìn)行精確計(jì)算,也可以大致估算一個(gè)中心點(diǎn)坐標(biāo),例如 X = 655,Y = 800 或 X = 660,Y = 792。只要確保坐標(biāo)落在目標(biāo)控件范圍內(nèi),并且不會誤觸其他控件即可。

步驟5:最后,調(diào)試模板

特別注意!
由于不同系統(tǒng)的云手機(jī)分辨率可能存在差異,同一個(gè)控件在不同設(shè)備上的坐標(biāo)有可能會有所不同。因此,如果你的 RPA 流程需要在多種機(jī)型上運(yùn)行,請務(wù)必測試多套坐標(biāo)。例如,你在 Android 10 上點(diǎn)擊的是“Like”圖標(biāo),但在 Android 12 上,使用相同的坐標(biāo)可能會誤點(diǎn)擊到“Comment”圖標(biāo)。
為確保流程的穩(wěn)定性,建議:
- 盡量優(yōu)先使用文本或?qū)傩远ㄎ辉亍?/li>
- 當(dāng)使用坐標(biāo)定位元素時(shí),多在不同系統(tǒng)版本的云手機(jī)測試坐標(biāo)的準(zhǔn)確性。
- 設(shè)置坐標(biāo)范圍冗余,確保坐標(biāo)不會導(dǎo)致誤觸臨近的控件。

掌握了文本定位法、屬性定位法和坐標(biāo)定位法后,相信你對 AutoX.js 的使用和簡單 RPA 流程的搭建已經(jīng)更加熟練。從現(xiàn)在開始,我將省略一些基礎(chǔ)步驟,重點(diǎn)講解各操作選項(xiàng)的使用場景及設(shè)置項(xiàng)的作用。只有當(dāng)某個(gè)操作選項(xiàng)較為復(fù)雜時(shí),我才會通過案例為你詳細(xì)說明。
接下來,你可以每學(xué)習(xí)一個(gè)新的操作選項(xiàng),就添加到你的模板里,通過實(shí)踐去學(xué)習(xí)該選項(xiàng)是如何使用的。
4.長按元素

使用場景:用于模擬長時(shí)間按住屏幕上的某個(gè)元素,常用于觸發(fā)特殊的功能,比如彈出菜單、拖動某個(gè)控件等。
設(shè)置選項(xiàng) | 說明 |
選擇器 | fullId:使用控件的唯一 ID 進(jìn)行精確定位。 text:通過顯示文本定位,適合文字明確的元素。 desc:通過描述信息定位,適合圖標(biāo)類控件。 className:通過類名定位,只適合類名唯一的元素,通常和其他選擇器一起使用。 |
選擇器條件 | 等于:完全匹配屬性值,適合固定值的元素。 包含:匹配部分屬性值,適合動態(tài)變化的文本或描述。 |
元素順序 | 固定值:選擇第幾個(gè)符合條件的目標(biāo)元素。 區(qū)間隨機(jī):從指定范圍內(nèi)隨機(jī)選擇一個(gè)目標(biāo)元素。 |
等待時(shí)間 | 設(shè)置尋找目標(biāo)元素的最大時(shí)間(單位:ms)。 |
長按時(shí)間 | 常見場景推薦設(shè)置為 500ms(0.5 秒),但某些應(yīng)用可能需要更長時(shí)間觸發(fā)操作。 |
是否查找不可見元素 | 控制是否可以查找屏幕上看不到的元素(如隱藏元素或需要滾動的內(nèi)容)。 - 點(diǎn)擊需要滾動才能顯示的按鈕時(shí),選擇“是”。 - 只操作當(dāng)前屏幕上的內(nèi)容時(shí),選擇“否”。一般我們都是長按當(dāng)前屏幕上的內(nèi)容,所以默認(rèn)選“否”就行 |
結(jié)果保存至 | 它的主要作用是記錄“長按操作是否成功”,并將這個(gè)結(jié)果存儲到一個(gè)布爾類型的變量中。布爾類型的變量只有兩個(gè)值:true(長按成功)或 false(長按失?。?。 |
說明 | 添加備注說明,記錄此步驟的作用或目的。 |
5.長按坐標(biāo)

與【長按元素】類似,只不過是通過坐標(biāo)定位元素。關(guān)于如何填寫X、Y坐標(biāo),可閱讀上文【3.4 坐標(biāo)定位法】。
6.輸入內(nèi)容

使用場景:用于向指定的輸入框或文本框輸入文字內(nèi)容,例如用戶名、密碼或搜索關(guān)鍵詞。通過這個(gè)功能,RPA可以自動完成表單填寫、搜索操作等任務(wù)。
設(shè)置選項(xiàng) | 說明 |
選擇器 | fullId:使用控件的唯一 ID 進(jìn)行精確定位。 text:通過顯示文本定位,適合文字明確的元素。 desc:通過描述信息定位,適合圖標(biāo)類控件。 className:通過類名定位,只適合類名唯一的元素,通常和其他選擇器一起使用。 |
選擇器條件 | 等于:完全匹配屬性值,適合固定值的元素。 包含:匹配部分屬性值,適合動態(tài)變化的文本或描述。 |
元素順序 | 固定值:選擇第幾個(gè)符合條件的目標(biāo)元素。 區(qū)間隨機(jī):從指定范圍內(nèi)隨機(jī)選擇一個(gè)目標(biāo)元素。 |
等待時(shí)間 | 設(shè)置尋找目標(biāo)元素的最大時(shí)間(單位:ms)。 |
是否查找不可見元素 | 控制是否可以查找屏幕上看不到的元素(如隱藏元素或需要滾動的內(nèi)容)。 - 點(diǎn)擊需要滾動才能顯示的按鈕時(shí),選擇“是”。 - 只操作當(dāng)前屏幕上的內(nèi)容時(shí),選擇“否”。 |
內(nèi)容類型 | 順序選?。?/strong>單個(gè)環(huán)境含多次輸入流程時(shí)順序選取 內(nèi)容環(huán)境順序選?。?/strong>每個(gè)環(huán)境依次按照輸入內(nèi)容的順序選取 隨機(jī)選?。?/strong>按照輸入的內(nèi)容隨機(jī)獲取 |
結(jié)果保存至 | 它的主要作用是記錄“輸入操作是否成功”,并將這個(gè)結(jié)果存儲到一個(gè)布爾類型的變量中。布爾類型的變量只有兩個(gè)值:true(操作成功)或 false(操作失?。?。 |
說明 | 添加備注說明,記錄此步驟的作用或目的。 |
7. 鍵盤操作

使用場景:用于模擬按下鍵盤上的指定按鍵,例如提交表單、清除文本框內(nèi)容等。常用于輸入后的快捷操作或內(nèi)容處理。
設(shè)置選項(xiàng) | 說明 |
鍵盤按鍵 | 模擬按下鍵盤的“回車”鍵、“刪除鍵”。用于確認(rèn)操作或刪除文本框中的部分內(nèi)容。 |
8.等待元素出現(xiàn)

使用場景:用于等待某個(gè)特定的元素(如按鈕、文本框)出現(xiàn),確保頁面加載成功后再執(zhí)行后續(xù)操作。
設(shè)置選項(xiàng) | 說明 |
選擇器 | fullId:使用控件的唯一 ID 進(jìn)行精確定位。 text:通過顯示文本定位,適合文字明確的元素。 desc:通過描述信息定位,適合圖標(biāo)類控件。 className:通過類名定位,只適合類名唯一的元素,通常和其他選擇器一起使用。 |
選擇器條件 | 等于:完全匹配屬性值,適合固定值的元素。 包含:匹配部分屬性值,適合動態(tài)變化的文本或描述。 |
元素順序 | 固定值:選擇第幾個(gè)符合條件的目標(biāo)元素。 區(qū)間隨機(jī):從指定范圍內(nèi)隨機(jī)選擇一個(gè)目標(biāo)元素。 |
等待時(shí)間 | 設(shè)置尋找目標(biāo)元素的最大時(shí)間(單位:ms)。 |
是否查找不可見元素 | 控制是否可以查找屏幕上看不到的元素(如隱藏元素或需要滾動的內(nèi)容)。 - 點(diǎn)擊需要滾動才能顯示的按鈕時(shí),選擇“是”。 - 只操作當(dāng)前屏幕上的內(nèi)容時(shí),選擇“否”。 |
結(jié)果保存至 | 將等待的元素保存到變量里,該變量的類型是對象。 |
說明 | 添加備注說明,記錄此步驟的作用或目的。 |
今天的內(nèi)容比較多,需要一些時(shí)間來慢慢消化。你可以嘗試?yán)蒙厦娼榻B的操作選項(xiàng),搭建一個(gè) RPA 模板,并應(yīng)用到你的業(yè)務(wù)場景中,看看是否能夠解決實(shí)際問題。
學(xué)習(xí)指南