20200812_adb常用命令&第一個App自動化測試指令碼
1、adb介紹
- adb(Android Debug Bridge)是android sdk的一個工具
- adb是用來連線安卓手機和PC端的橋樑,要有adb作為二者之間的維繫,才能讓使用者在電腦上對手機進行全面的操作。
- Android的初衷是用adb這樣的一個工具來協助開發人員在開發android應用的過程中更快更好的除錯apk,因此adb具有安裝解除安裝apk、拷貝推送檔案、檢視裝置硬體資訊、檢視應用程式佔用資源、在裝置執行shell命令等功能。
2、adb常用命令
- 檢測連線到電腦的安卓裝置(模擬器/真機)-$adb devices
- 從手機中拉取資訊放到本地電腦上-$adb pull <手機路徑> <本機路徑>
- 從本地推送資訊到手機上去-$adb push <本機路徑> <手機路徑>
- 登入裝置shell模式(命令列的人機介面)-$adb shell
- 安裝應用-$adb install xxx.apk
- 解除安裝應用-$adb uninstall com.tencent.mobileqq
- 啟動App-$adb shell am start -W 包名/啟動入口
- 列印日誌,Android系統的日誌 其中包括了App應用日誌
$adb logcat
$adb logcat > 本地PC端檔案路徑
3、App的型別
4、ActivityName 類名& PackageName包名
packageName(包名)-應用的唯一身份標示,系統通過包名識別不同的應用,如兩個相同包名的應用在安裝時會提示覆蓋
activityName(類名)-Activity:android四大元件之一,簡單來說就是一個介面,和使用者進行互動
adb shell dumpsys activity | find "mFocusedActivity"
- 啟動入口appActivity 和 Activity有什麼區別??
appActivity在App中是唯一,它的作用是用來啟動App的
- 獲取App入口Activity
aapt dump badging <應用路徑> | find “launchable-activity”
5、App頁面控制元件
6、第一個程式碼
pom.xml 匯入庫,注意不要匯入selenium,會和java-client衝突
<dependencies> <!-- https://mvnrepository.com/artifact/org.testng/testng --> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.0.0</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/io.appium/java-client --> <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>7.0.0</version> </dependency> </dependencies>
import io.appium.java_client.MobileBy; import io.appium.java_client.android.AndroidDriver; // import org.openqa.selenium.By; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import java.net.MalformedURLException; import java.net.URL; public class AppAutoTest { public AndroidDriver androidDriver; @BeforeTest public void setUpTest() throws MalformedURLException, InterruptedException { //前置動作-開啟測試App,並且進入到登入 //建立所需功能的物件 DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); //deviceName -- 找到測試的裝置 desiredCapabilities.setCapability("deviceName","127.0.0.1:62001"); //platformName -- 指定測試的平臺是為Android or IOS desiredCapabilities.setCapability("platformName","Android"); //appPackage -- 測試App的包名 desiredCapabilities.setCapability("appPackage","com.lemon.lemonban"); //appActivity --測試App的啟動入口 desiredCapabilities.setCapability("appActivity","com.lemon.lemonban.activity.WelcomeActivity"); //把配置傳送給Appium伺服器,Appium伺服器根據這些配置找到測試的裝置、啟動測試App //Appium伺服器的地址127.0.0.1:4723 URL url= new URL("http://127.0.0.1:4723/wd/hub"); //建立驅動物件 androidDriver = new AndroidDriver(url,desiredCapabilities); Thread.sleep(5000); //進入到登入頁面 //1、點選題庫 androidDriver.findElement(MobileBy.id("com.lemon.lemonban:id/navigation_tiku")).click(); //2、點選去登陸 androidDriver.findElement(MobileBy.id("com.lemon.lemonban:id/button_go_login")).click(); } @Test public void testLogin() throws InterruptedException { Thread.sleep(2000); androidDriver.findElement(MobileBy.id("com.lemon.lemonban:id/et_mobile")).sendKeys("13323234545"); androidDriver.findElement(MobileBy.id("com.lemon.lemonban:id/et_password")).sendKeys("123456"); androidDriver.findElement(MobileBy.id("com.lemon.lemonban:id/btn_login")).click(); } @AfterTest public void tearDownTest(){ //後置 androidDriver.quit(); } }
報錯1:
C:\Users\lizhenhua>adb connect 127.0.0.1:62001
adb server version (36) doesn't match this client (40); killing...
could not read ok from ADB Server
* failed to start daemon
error: cannot connect to daemon
https://www.cnblogs.com/yoyoketang/p/9024620.html
報錯2:
org.openqa.selenium.WebDriverException: Connection refused: connect
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'DESKTOP-AICTF6C', ip: '192.168.136.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_144'
Driver info: driver.version: AndroidDriver
開啟appium服務就可以了