溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何用Python操控手機(jī)APP

發(fā)布時(shí)間:2021-10-28 18:28:46 來(lái)源:億速云 閱讀:855 作者:柒染 欄目:編程語(yǔ)言

今天就跟大家聊聊有關(guān)如何用Python操控手機(jī)APP,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

最近經(jīng)??吹接肞ython操作手機(jī)APP的項(xiàng)目,例如抖音、閑魚之類的,看完后發(fā)現(xiàn)這些項(xiàng)目無(wú)一例外需要部署ADB環(huán)境。至于什么是ADB,很多大神都講過(guò),只是寫得比較專業(yè),我等菜鳥看完還是云里霧里。

為了使沒(méi)有安卓開發(fā)經(jīng)驗(yàn)的人也能快速學(xué)會(huì)用Python操作手機(jī)APP,我從Android SDK部署、ADB基礎(chǔ)應(yīng)用、Python操作手機(jī)等方面入手寫了這篇文章,目的是使大家對(duì)ADB的使用有一個(gè)直觀的認(rèn)識(shí),這樣在玩上面提到的這些項(xiàng)目時(shí)會(huì)更輕松一些。

事先聲明:本文涉及的各類操作可能有多種實(shí)現(xiàn)方法,我只會(huì)提及其中一種,而且我采取的方法很有可能不是最優(yōu)的方法。

1.Android SDK下載和部署

說(shuō)起Android SDK工具,那還真是不少,有SDK Tools、SDK、Platform-tools等等,這里我推薦SDK Tools,進(jìn)入https://www.androiddevtools.cn/這個(gè)網(wǎng)站可以看到下圖中的界面,選擇自己對(duì)應(yīng)的系統(tǒng)版本(zip版)下載。

如何用Python操控手機(jī)APP

將下載后的文件解壓縮,運(yùn)行其中的SDK Manager.exe文件,進(jìn)入Packages安裝管理界面,對(duì)于新手朋友們我建議直接使用默認(rèn)選項(xiàng),然后點(diǎn)擊右下角的 Install XX packages 按鈕,整個(gè)下載安裝過(guò)程大概需要幾十分鐘,具體時(shí)間跟個(gè)人網(wǎng)速有關(guān)。

如何用Python操控手機(jī)APP

接著就是配置環(huán)境變量了,把a(bǔ)ndroid-sdk目錄下的platform-tools和tools文件夾添加到系統(tǒng)變量中,這一步屬于常規(guī)操作,我就不再演示了。

執(zhí)行完以上步驟,ADB環(huán)境就算配置完畢了,之后要做的就是開啟手機(jī)的開發(fā)者選項(xiàng)、開啟USB調(diào)試、用usb線將手機(jī)跟電腦鏈接。

下面進(jìn)入關(guān)鍵的一步——通過(guò)ADB測(cè)試手機(jī)是否連接成功。進(jìn)入系統(tǒng)終端,輸入adb devices指令,如果出現(xiàn)下圖中的結(jié)果,就說(shuō)明剛才的環(huán)境部署成功了,其中device前面的是連接的設(shè)備號(hào)。

如何用Python操控手機(jī)APP

如果連接測(cè)試不成功,例如找不到設(shè)備或者設(shè)備連接不上,可以依次嘗試關(guān)閉并再次開始調(diào)試、重啟手機(jī)、重啟電腦、插拔USB線等操作,通常都可以解決。

2.ADB的一些基本操作

雖說(shuō)是基本操作,但ADB的命令也還是挺多的,說(shuō)多了大家一時(shí)也難以消化。所以我這里只列舉幾個(gè)操作手機(jī)APP常用的指令,都是一些基本的操作。

1).顯示所有包名

adbshellpmlistpackages

這個(gè)指令會(huì)羅列出手機(jī)已經(jīng)安裝的所有應(yīng)用包的名稱,如果后綴加上參數(shù)-s,則會(huì)列出所有的系統(tǒng)應(yīng)用的名稱(下圖),而加上后綴參數(shù)-3則會(huì)列出所有第三方應(yīng)用名稱。


2).顯示活動(dòng)程序

adbshelldumpsys activity activities

這個(gè)指令能夠獲取到當(dāng)前手機(jī)系統(tǒng)中正在運(yùn)行的程序包的名稱,例如當(dāng)我在手機(jī)中啟動(dòng)小米手機(jī)的“游戲中心”,運(yùn)行上述指令就會(huì)獲取到下圖中的信息:

如何用Python操控手機(jī)APP

圖中realActivity后面的參數(shù)就是當(dāng)前正在運(yùn)行的Activity名稱,稍微留意一下就會(huì)發(fā)現(xiàn),這個(gè)名稱相比上面的包名稱要更加詳細(xì)一些,至于這個(gè)名稱有什么用,我們馬上就會(huì)提到。


3).啟動(dòng)應(yīng)用程序

adbshellamstart -n 要啟動(dòng)的應(yīng)用Activity名稱

這里所使用的Activity名稱就是剛才獲取到的realActivity后面的參數(shù),使用這個(gè)指令時(shí)要注意,啟動(dòng)APP一定要使用上一條命令獲取到的Activity名稱,不能使用adb shell pm list packages命令獲取到的包名稱。例如,我們?nèi)绻獑?dòng)小米的游戲中心,可以使用命令:

adbshellamstart -ncom.xiaomi.gamecenter/.ui.MainTabActivity

而如果使用了下面這條命令是無(wú)法順利啟動(dòng)應(yīng)用的:

adbshellamstart -ncom.xiaomi.gamecenter

4).停止應(yīng)用程序

adb shell am force-stop 要停止的應(yīng)用名稱

這條指令會(huì)強(qiáng)制停止指定的應(yīng)用程序,跟程序的啟動(dòng)略有差別,在停止應(yīng)用時(shí),使用adb shell pm list packages命令獲取到的包名稱就可以了。還是以小米的游戲中心為例,停止應(yīng)用使用以下指令:

adbshellamforce-stopcom.xiaomi.gamecenter


5).點(diǎn)擊指定位置

adbshellinputtapxy

這條指令就很好理解了,模擬點(diǎn)擊手機(jī)屏幕中的某個(gè)位置,(x,y)是對(duì)應(yīng)的位置坐標(biāo)。在ADB中默認(rèn)手機(jī)屏幕的左上角坐標(biāo)是(0,0),右下角坐標(biāo)是(xmax,ymax)。

這里強(qiáng)調(diào)一點(diǎn):使用模擬點(diǎn)擊功能必須設(shè)置手機(jī)允許通過(guò)USB調(diào)試修改權(quán)限或點(diǎn)擊模擬,下文中的滑動(dòng)手機(jī)屏幕、輸入文字信息等功能也需要進(jìn)行同樣設(shè)置。


6).滑動(dòng)手機(jī)屏幕

adbshellinputswipe x_start y_start x_end y_end

這條指令的本質(zhì)是使得坐標(biāo)為(x_start, y_start)的點(diǎn)移動(dòng)到(x_end, y_end)的坐標(biāo)位置,以此來(lái)實(shí)現(xiàn)屏幕滑動(dòng)的效果。

7).輸入文字信息

adbshellinputtext 需要輸入的字符

這條指令沒(méi)什么好說(shuō)明的,選定對(duì)應(yīng)位置,然后輸入對(duì)應(yīng)的字符即可。

8).模擬手機(jī)按鍵

adbshellinputkeyeventX

現(xiàn)在的大部分手機(jī)除了常規(guī)鍵盤字符以外還有一些特殊按鍵,例如HOME鍵、音量+/-,以及軟鍵盤中有時(shí)會(huì)出現(xiàn)的確認(rèn)鍵等等,這些按鍵的模擬就可以通過(guò)上面這條指令來(lái)實(shí)現(xiàn)。

其中X對(duì)應(yīng)的是特殊鍵的編號(hào),下面舉幾個(gè)常用的例子(其他的特殊鍵還有很多):

  • 3對(duì)應(yīng)的是HOME鍵

  • 24對(duì)應(yīng)的是音量+

  • 25對(duì)應(yīng)的是音量-

  • 66對(duì)應(yīng)的是確認(rèn)鍵

9).獲取元素位置

細(xì)心的朋友現(xiàn)在可能會(huì)發(fā)現(xiàn),上面提到的一些關(guān)于模擬點(diǎn)擊、模擬輸入的命令,都涉及到手機(jī)元素定位的問(wèn)題,那么我們?cè)趯?shí)踐中如何確定具體的坐標(biāo)位置和元素信息呢?這里我提議使用uiautomatorviewer.bat這個(gè)工具,它會(huì)隨著SDK Tools一起安裝,就在tools目錄下。

來(lái)看下面這幅圖,手機(jī)連接成功后,點(diǎn)擊左上角的綠色圖標(biāo)就會(huì)獲取到手機(jī)的當(dāng)前頁(yè)面信息,然后在屏幕左側(cè)可以點(diǎn)選任意位置或者元素,相關(guān)信息會(huì)在右側(cè)屏幕中顯示。

如何用Python操控手機(jī)APP

是不是感覺(jué)跟用chrome分析網(wǎng)頁(yè)非常類似,有了這些信息,再使用上面提到的幾款指令操作手機(jī)就不是問(wèn)題了。

3.Python操控手機(jī)App

1).命令行操控

前面講了ADB操控手機(jī)的一些基本操作,只有理論未免太枯燥,現(xiàn)在我們做個(gè)小試驗(yàn)來(lái)看看效果。

我們還是以小米的游戲中心為例,使用ADB依次完成以下任務(wù):

  • 切換到“網(wǎng)游”選項(xiàng)卡,指令:adb shell input tap 400 263

  • 選中搜索欄,指令:adb shell input tap 776 139

  • 輸入“wangzherongyao”,指令:adb shell input text wangzherongyao

  • 點(diǎn)擊確認(rèn)鍵,指令:adb shell input keyevent 66

  • 進(jìn)入王者榮耀游戲頁(yè)面,指令:adb shell input tap 600 500

2).Python腳本操控

從上面的演示視頻看,使用ADB操作手機(jī)APP還算比較成功,但是如果像剛才那樣逐條輸入指令,可能還不如直接操作手機(jī)來(lái)的方便,那么我們就需要借助Python腳本使其批量化、自動(dòng)化運(yùn)行。

Python執(zhí)行終端指令可以借助os.system()函數(shù),我們來(lái)看下面這段代碼:

如何用Python操控手機(jī)APP

上面代碼所實(shí)現(xiàn)的功能跟我們之前演示的基本一樣,主要增加了一個(gè)打開游戲中心的操作、簡(jiǎn)化了一些中間步驟。

看完上述內(nèi)容,你們對(duì)如何用Python操控手機(jī)APP有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI