溫馨提示×

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

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

python中adb功能示例

發(fā)布時(shí)間:2020-07-18 10:05:46 來(lái)源:億速云 閱讀:462 作者:小豬 欄目:開(kāi)發(fā)技術(shù)

小編這次要給大家分享的是python中adb功能示例,文章內(nèi)容豐富,感興趣的小伙伴可以來(lái)了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

ADB是Android SDK中的一個(gè)工具, 使用ADB可以直接操作管理Android模擬器或者真實(shí)的Andriod設(shè)備。

ADB主要功能有:

1、在Android設(shè)備上運(yùn)行Shell(命令行)

2、管理模擬器或設(shè)備的端口映射

3、在計(jì)算機(jī)和設(shè)備之間上傳/下載文件

4、將電腦上的本地APK軟件安裝至Android模擬器或設(shè)備上

python有兩種方式去調(diào)用adb命令,一種是os.system(),一種是os.popen()。

兩者的區(qū)別就是前者無(wú)法獲取到返回值,后者可以獲取到返回值。

os.popen()返回的是file對(duì)象,可以直接利用read()方法讀取。

內(nèi)容擴(kuò)展:

 python如何調(diào)用adb命令

Python中執(zhí)行cmd命令可以用到os和subprocess兩個(gè)模塊。區(qū)別在于os是阻塞式的,subprocess是非阻塞式的,所以我們使用subprocess是比較適合的。接下來(lái)我先舉一個(gè)查詢(xún)連接設(shè)備的命令來(lái)看看python中怎么樣的寫(xiě)法。用到的命令為 adb devices。

import subprocess
order='adb devices' #獲取連接設(shè)備
pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)
print pi.stdout.read() #打印結(jié)果

實(shí)際打印結(jié)果,可以看到當(dāng)前電腦連接了三臺(tái)設(shè)備。這里需要再說(shuō)明一下adb devices 命令的結(jié)果返回是一次性的,所以我們用read方法讀取數(shù)據(jù)是沒(méi)有問(wèn)題的,然而adb命令里還有一些是實(shí)時(shí)返回結(jié)果的,比如輸出手機(jī)日志的命令logcat,結(jié)果會(huì)不斷的打印出來(lái)當(dāng)前的設(shè)備操作日志信息內(nèi)容,這種類(lèi)型的命令我們?cè)趐ython中如果需要獲取打印結(jié)果,如果還是用read方法的話(huà),等待結(jié)果的返回時(shí)間會(huì)非常長(zhǎng),這里我們就要換一種方法讀取結(jié)果,寫(xiě)法如下。

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里操作一致,實(shí)時(shí)的打印出日志信息。這里我們就用到了readline方法,其實(shí)這種寫(xiě)法類(lèi)似我們讀取文件,單行讀取和全部?jī)?nèi)容讀取。因?yàn)槟壳皃yapp的框架已經(jīng)基本寫(xiě)完了,所以有了寫(xiě)這篇文章的想法,分享一些python在處理adb命令上的一些心得,就目前來(lái)看python在調(diào)用adb命令上區(qū)別主要就是這兩點(diǎn),最終目的是我們找到需要的功能命令獲取結(jié)果數(shù)據(jù),然后再去通過(guò)python處理這些返回?cái)?shù)據(jù),實(shí)現(xiàn)自動(dòng)化測(cè)試的目的。大家要用好adb命令,還要注意一點(diǎn)的是每條命令的各種參數(shù)的搭配使用,比如pyapp的實(shí)現(xiàn)是支持多設(shè)備連接的,那么我們?cè)卺槍?duì)某個(gè)手機(jī)進(jìn)行adb命令操作時(shí),就需要帶上-s 加設(shè)備號(hào),表示操作的具體設(shè)備否則命令會(huì)報(bào)錯(cuò)。

比如我們針對(duì)一個(gè)設(shè)備去進(jìn)行點(diǎn)擊操作,命令的寫(xiě)法應(yīng)該是這樣:adb -s 49dsd4554wdsa shell input tap 600 900,其中‘49dsd4554wdsa'是設(shè)備號(hào),‘600 900'點(diǎn)擊屏幕坐標(biāo)。所以可以看到增加了-s之后就可以很方便的同時(shí)操作多臺(tái)設(shè)備。

看完這篇關(guān)于python中adb功能示例的文章,如果覺(jué)得文章內(nèi)容寫(xiě)得不錯(cuò)的話(huà),可以把它分享出去給更多人看到。

向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