zoukankan      html  css  js  c++  java
  • 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:Userslizhenhua>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服务就可以了

  • 相关阅读:
    安装 Docker Machine
    volume 生命周期管理
    data-packed volume container
    用 volume container 共享数据
    如何共享数据?- 每天5分钟玩转 Docker 容器技术(41)
    docker managed volume
    Data Volume 之 bind mount
    Docker 的两类存储资源
    外部世界如何访问容器?
    容器如何访问外部世界?- 每天5分钟玩转 Docker 容器技术(36)
  • 原文地址:https://www.cnblogs.com/shishibuwan/p/13770093.html
Copyright © 2011-2022 走看看