1. 程式人生 > 實用技巧 >20200812_adb常用命令&第一個App自動化測試指令碼

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服務就可以了