“Python編程幾乎能做任何事,只要你敢想,敢嘗試!”,今天來看下用Python代碼怎麼來控制你的安卓手機.具體的說是代替你的手,實現自動的觸摸和一些動作,實現自動化操作!主要用的是安卓手機的Android調試橋(Android Debug Bridge),它是一個非常有用的工具!本文的這個快速指南中,我將向你展示如何使用Python代碼與ADB交互,並如何創建2個快速腳本.
ADB(Android Debug Bridge)是一個命令行工具(CLI),可用於控制Android設備並與之通信.可以執行許多操作:例如安裝應用程序,調試應用程序,查找隱藏的功能並使用外殼程序直接與設備連接.要啟用ADB,你的設備必須首先解鎖開發者選項並啟用USB調試——要解鎖開發人員選項,轉到設備設置,然後向下滾動到“關於”部分,找到設備上當前軟件的內部版本號.單擊內部版本號7次,將啟用“開發人員選項”.然後,您可以轉到設置中的“開發人員選項”面板,然後從那裡啟用USB調試.現在,基本大功告成,你唯一需要做的一件事就是將你的手機用USB電纜連接到計算機.
好,今天的旅程是這樣的:
介紹安裝要求
初步帶你入門、帶你飛
介紹編寫腳本的基礎
創建自拍計時器
創建定義搜索器
1. 安裝准備工作
需要安裝的兩件事中的第一件事就是是計算機上的ADB工具.它會自動與Android Studio捆綁在一起,因此,如果已經安裝了Android Studio那就不用擔心.否則,可以轉到官方文檔,並且在頁面頂部應該有有關如何安裝它的說明.
安裝ADB工具後,需要獲取python庫,我們將使用該庫與ADB和我們的手機進行接口.安裝命令如下:
pip install pure-python-adb #安裝pure-python-adb庫.
下面這個不是必須的,但很有必要:為了讓我們開發腳本時更輕松,可以安裝一個名為scrcpy的開源程序,該程序允許我們使用鼠標和鍵盤在我們的計算機上顯示和控制我們的android手機設備.要安裝它,可以轉到Github倉庫並下載適用於你的操作系統(Windows,macOS或Linux)的正確版本.如果使用的是Windows,則將zip文件解壓縮到一個目錄中,然後將此目錄添加到您的路徑中.這樣一來,我們只需在終端窗口中鍵入scrcpy即可從系統上的任何位置訪問該程序.
2.帶你入門帶你飛
現在已經安裝了所有依賴項,可以啟動ADB並連接設備.首先,使用USB電纜將設備連接到PC,如果啟用了USB調試,則會彈出一條消息,詢問PC是否可以控制設備,只需回答是.然後在你的PC上,打開一個終端窗口,並通過鍵入adb start-server來啟動ADB服務器.這應該打印出以下消息:
如果還安裝了scrcpy,則只需在終端中鍵入scrcpy即可啟動.但是,只有將其添加到路徑後,此方法才能起作用,否則,可以通過將終端目錄更改為安裝scrcpy的目錄並鍵入scrcpy.exe來打開可執行文件.希望一切順利,你應該能夠在PC上看到您的設備,並能夠使用鼠標和鍵盤對其進行控制.
現在,我們可以創建一個新的python文件,並檢查是否可以使用上面的庫找到連接的設備:
上面這裡,我們導入AdbClient類並使用它創建一個客戶端對象.然後,我們可以獲得連接的設備的列表.最後,我們從列表中獲得第一台設備(如果僅連接了一個設備,則通常是唯一的設備).
3.編寫腳本的基礎
我們要與設備連接的主要方式是使用shell,通過這種方式,我們可以發送命令以模擬特定位置的觸摸或從A滑動到B.要模擬屏幕觸摸(輕擊),我們首先需要工作了解屏幕坐標的工作方式.為了幫助解決這些問題,我們可以在開發人員選項中激活指針位置設置.激活後,無論您在屏幕上的何處觸摸,都可以看到該點的坐標顯示在頂部.手機屏幕坐標系的工作方式如下:
顯示屏的左上角就是x和y坐標點(0,0),右下角的坐標是x和y的最大可能值.現在我們知道了坐標系的工作原理,我們需要檢查一下可以運行的不同命令.我在下面列出了命令列表以及如何使用它們,以供快速參考(英文不懂?好好查查吧)
4. 創建自拍計時器
哦,現在我們大概知道了能做什麼,讓我們開始吧,做一個簡單的例子.我將向你展示如何創建一個快速的自拍計時器.首先,我們需要導入我們的庫並創建一個connect函數以連接到我們的設備:
你可以看到connect函數與前面的如何連接到設備的示例相同,除了這裡我們返回設備和客戶端對象以供以後使用.
在上面的主代碼中,我們可以調用connect函數來檢索設備和客戶端對象.從那裡我們可以打開相機應用程序,等待5秒鐘並拍照.真的就是這麼簡單!正如我之前說過的,這只是復制你通常會做的事情,因此,如果首先手動進行操作並寫下步驟,則思考如何做事情是最好的.
相信和我學Python的童鞋們都能理解上面的代碼吧?
5. 創建定義搜索器
現在,我們做一些更復雜的事情:要求浏覽器找到特定單詞的定義,並截圖以將其保存在我們的計算機上.
要寫的程序的基本流程如下:
1.打開浏覽器
2.單擊搜索欄
3.輸入搜索查詢
4.等待幾秒鐘
5.截圖並保存
但是,在開始之前,你需要在默認浏覽器中找到搜索欄的坐標,可以使用我之前建議的方法輕松地找到它們.對我來說,他們是(440,200).
首先,我們必須導入與以前相同的庫,使用相同的connect方法.
在我們的主要函數中,我們可以調用connect函數,並為搜索欄的x和y坐標分配一個變量.注意這是一個字符串,而不是一個列表或元組,這樣我們就可以輕松地將坐標合並到我們的shell命令中.我們還可以從用戶那裡獲取輸入信息,以查看他們想要獲取哪個單詞的定義:
我們會將查詢添加到完整的句子中,然後對其進行搜索,這樣我們就可以始終獲取定義.之後,我們可以打開浏覽器,然後將搜索查詢輸入到搜索欄中,如下所示:
在這裡,我們使用eventID 66模擬輸入鍵的按下以執行搜索.如果需要,可以根據需要更改等待時間.最後,我們在設備對象上使用screencap方法獲取屏幕截圖,並將其另存為.png文件:
在這裡,我們必須以寫字節模式("wb")打開文件,因為screencap方法返回表示圖像的字節.如果一切都按計劃進行,則應該有一個快速腳本來搜索特定單詞.在我的手機上正常工作是這樣的:
希望你今天學到了一些新知識,在我對此進行研究之前,我其實也不知道,但很酷的事情是:使用它你基本可以執行平常可以做的任何事情!沒錯,而且還可以做更多的事,因為它只是模擬你自己在手機上的觸摸和動作!
推薦閱讀
整理了18個Python爬蟲實戰案例
PythonOffice software automation,5分鐘掌握openpyxl操作