ADB是Android SDK中的一個工具, 使用ADB能夠直接操做管理Android模擬器或者真實的Andriod設備。python
ADB主要功能有:shell
一、在Android設備上運行Shell(命令行)app
二、管理模擬器或設備的端口映射框架
三、在計算機和設備之間上傳/下載文件ide
四、將電腦上的本地APK軟件安裝至Android模擬器或設備上工具
python有兩種方式去調用adb命令,一種是os.system(),一種是os.popen()。測試
二者的區別就是前者沒法獲取到返回值,後者能夠獲取到返回值。spa
os.popen()返回的是file對象,能夠直接利用read()方法讀取。命令行
內容擴展:日誌
python如何調用adb命令
Python中執行cmd命令能夠用到os和subprocess兩個模塊。區別在於os是阻塞式的,subprocess是非阻塞式的,因此咱們使用subprocess是比較適合的。接下來我先舉一個查詢鏈接設備的命令來看看python中怎麼樣的寫法。用到的命令爲 adb devices。
1
2
3
4
|
import
subprocess
order
=
'adb devices'
#獲取鏈接設備
pi
=
subprocess.Popen(order,shell
=
True
,stdout
=
subprocess.PIPE)
print
pi.stdout.read()
#打印結果
|
實際打印結果,能夠看到當前電腦鏈接了三臺設備。這裏須要再說明一下adb devices 命令的結果返回是一次性的,因此咱們用read方法讀取數據是沒有問題的,然而adb命令裏還有一些是實時返回結果的,好比輸出手機日誌的命令logcat,結果會不斷的打印出來當前的設備操做日誌信息內容,這種類型的命令咱們在python中若是須要獲取打印結果,若是仍是用read方法的話,等待結果的返回時間會很是長,這裏咱們就要換一種方法讀取結果,寫法以下。
1
2
3
4
5
|
import
subprocess
order
=
'adb logcat'
pi
=
subprocess.Popen(order,shell
=
True
,stdout
=
subprocess.PIPE)
for
i
in
iter
(pi.stdout.readline,
'b'
):
print
I
|
這樣的打印效果,如同cmd裏操做一致,實時的打印出日誌信息。這裏咱們就用到了readline方法,其實這種寫法相似咱們讀取文件,單行讀取和所有內容讀取。由於目前pyapp的框架已經基本寫完了,因此有了寫這篇文章的想法,分享一些python在處理adb命令上的一些心得,就目前來看python在調用adb命令上區別主要就是這兩點,最終目的是咱們找到須要的功能命令獲取結果數據,而後再去經過python處理這些返回數據,實現自動化測試的目的。你們要用好adb命令,還要注意一點的是每條命令的各類參數的搭配使用,好比pyapp的實現是支持多設備鏈接的,那麼咱們在針對某個手機進行adb命令操做時,就須要帶上-s 加設備號,表示操做的具體設備不然命令會報錯。
好比咱們針對一個設備去進行點擊操做,命令的寫法應該是這樣:adb -s 49dsd4554wdsa shell input tap 600 900,其中‘49dsd4554wdsa'是設備號,‘600 900'點擊屏幕座標。因此能夠看到增長了-s以後就能夠很方便的同時操做多臺設備。
到此這篇關於python中adb有什麼功能的文章就介紹到這了,更多相關python adb功能詳解內容請搜索之前的文章或繼續瀏覽下面的相關文章但願你們之後多多支持!