測試人員一定要懂的ADB操作,趕緊來看一看~


前言

ADB,即 Android Debug Bridge (安卓調試橋)。它就是一個命令行窗口,用於通過電腦端與模擬器或者真機設備進行交互。

對於Android開發和測試人員來說,它都是不可替代的強大工具。所以今天,我們將跟同學們一起來聊一聊一些常用的ADB操作和Airtest給我們封裝好的一些ADB接口。

一些使用ADB命令的場景

作為一名測試人員,相信大家對使用ADB的場景都不陌生了。比如在做真機或者模擬器測試之前,我們常用 adb devices 命令去查看被測設備是否已經跟我們的電腦建立了連接:

>>> adb devices
List of devices attached
PFT4PBLF75GQHYBM        device
emulator-5554   device

再比如,我們在使用Airtest進行測試自動化時,經常遇到ADB版本沖突的報錯:

raise AdbError(stdout, stderr)
airtest.core.error.AdbError: stdout[] stderr[adb server version (36) doesn't match this client (40); killing...
could not read ok from ADB Server

而我們不清楚電腦里面那么多ADB,究竟哪些是40版本,哪些是36版本時,我們就可以使用 adb version 查看當前的ADB版本,然后將電腦里面所有的ADB替換成同一個版本,從而解決這個版本沖突的問題:

>>> adb version
Android Debug Bridge version 1.0.40
Version 4986621
Installed as C:\Users\xiaojuan\adb.exe

常用的ADB操作及使用示例

當然,除了上面已經提到的查詢已連接的設備/模擬器命令 adb devices, 和查看ADB版本的命令adb version ,ADB操作可以做的事情還非常多:

1.應用管理

1)查看應用列表

# 查看設備上的所有應用
adb shell pm list packages

# 查看設備上的第三方應用
adb shell pm list packages -3

# 查看設備上的系統應用
adb shell pm list packages -s

2)安裝APK

adb install "D:/demo/tutorial-blackjack-release-signed.apk"

3)卸載應用

adb uninstall com.netease.cloudmusic

4)查看應用詳細信息

adb shell dumpsys package com.netease.cloudmusic
2.文件管理

1)復制設備里的文件到電腦

# adb pull <設備里的文件路徑> [電腦上的目錄]
adb pull /sdcard/sr.mp4 ~/tmp/

2)復制電腦里的文件到設備

# adb push <電腦上的文件路徑> <設備里的目錄>
adb push ~/sr.mp4 /sdcard/
3.模擬按鍵輸入

1)模擬電源鍵: adb shell input keyevent 26

2)模擬HOME鍵: adb shell input keyevent 3

3)模擬返回鍵: adb shell input keyevent 4

4)點亮/熄滅屏幕:

# 點亮屏幕
adb shell input keyevent 224

# 熄滅屏幕
adb shell input keyevent 223

5)模擬滑動解鎖

# 300 1000 300 500 分別表示起始點x坐標 起始點y坐標 結束點x坐標 結束點y坐標
adb shell input swipe 300 1000 300 500

6)輸入文本

adb shell input text airtest
4.查看設備信息

1)查看設備型號

>>> adb -s PFT4PBLF75GQHYBM shell getprop ro.product.model
OPPO A83

2)查看屏幕分辨率

>>> adb -s PFT4PBLF75GQHYBM shell wm size
Physical size: 720x1440

3)查看Android系統版本

>>> adb -s PFT4PBLF75GQHYBM shell getprop ro.build.version.release
7.1.1
5.更多ADB命令詳解

想了解更多詳細的ADB操作的同學,我們推薦大家閱讀這篇GitHub文檔:https://github.com/mzlogin/awesome-adb

Airtest封裝好的ADB接口及使用示例

在Airtest庫中,大部分的ADB操作我們已經幫大家封裝好了,所以同學們可以不用再單獨去執行ADB命令。

舉個簡單的例子,利用Airtest封裝好的ADB接口打印設備序列號和設備所有的第三方應用:

image

可以看到,我們只需要調用一些封裝好的airtest接口,即可替代完整的ADB命令,另外在log查看窗的運行日志中,我們還可以看到這個接口實際執行的ADB命令:

# android.get_default_device()對應的ADB命令
adb.exe devices

# android.list_app(third_only=True)對應的ADB命令
adb.exe -s PFT4PBLF75GQHYBM shell pm list packages -3

另外Airtest還有很多常用的封裝好的ADB接口:

1)返回應用的完整路徑:path_app()
android = Android()
android.path_app("com.netease.cloudmusic")
2)檢查應用是否存在於當前設備上:check_app()
android = Android()
android.check_app("com.netease.cloudmusic")
3)停止應用運行:stop_app()
stop_app("com.netease.cloudmusic")

# 啟動應用:start_app()
start_app("com.netease.cloudmusic")

# 清除應用數據:clear_app()
clear_app("com.netease.cloudmusic")
4)安裝應用:install_app()
install(r"D:\demo\tutorial-blackjack-release-signed.apk")

# 卸載應用:uninstall_app()
uninstall("org.cocos2dx.javascript")
5)關鍵詞操作:keyevent()
keyevent("HOME")
keyevent("POWER")
6)喚醒設備:wake()
wake()
7)返回HOME:home()
home()
8)文本輸入:text()
text("123")
9)檢查屏幕是否打開:is_screenon()
android = Android()
android.is_screenon()
10)檢查設備是否鎖定:is_locked()
android = Android()
android.is_locked()
11)獲取當前設備的分辨率:get_current_resolution()
android = Android()
android.get_current_resolution()
12)其它adb shell命令:shell()
shell("ls")
shell("pm list packages -3")

image

實際上,airtest的 shell() ,就是幫忙補充了 adb -s 手機序列號 shell 這一部分,后面的內容同學們就按正常shell指令來傳就行了。

13)更多Airtest封裝好的ADB接口介紹

若同學們需要了解更多詳細的Airtest封裝好的ADB接口介紹,可以到你本地的Airtest庫里面查找這個文件查看:airtest/core/android/android.py


AirtestProject官方答疑Q群:654700783

Airtest官網http://airtest.netease.com/
Airtest教程官網https://airtest.doc.io.netease.com/
搭建企業私有雲服務https://airlab.163.com/b2b

呀,這么認真都看到這里啦,幫忙點個推薦支持一下唄,灰常感謝~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM