移动端APP自动化之环境搭建、adb指令、Appium原理

文章目录

    • 1.移动自动化环境搭建
        • 1.1搭建环境简介
        • 1.2java的安装
        • 1.3Android SDK的安装
        • 1.4genymotion安装
    • 2.adb调试工具
        • 1.1adb的概念
        • 1.2adb基础命令
        • 1.3获取包名和界面名
          • 13.1包名和界面名的概念
          • 1.3.2获取包名和界面名
        • 1.4文件传输
          • 1.4.1推送文件到手机
          • 1.4.2拉取文件到计算机
        • 1.5获取app的启动时间
        • 1.6获取手机日志
        • 1.7安装和卸载app
        • 1.8获取手机的版本号
        • 1.9开启和关闭adb的服务
        • 1.10获取帮助信息
    • 3.移动自动化测试工具
        • 3.1自动化测试工具介绍
        • 3.2Appium工具安装
          • 3.2.1Appium客户端工具安装
          • 3.2.2Appium-Python-Client安装
        • 3.3HelloAppium
    • 4.扩展

1.移动自动化环境搭建

1.1搭建环境简介

  • java
    • android的app大多数是java开发的
  • Android SDK
    • 使用其中的工具,定位工具、adb调试工具
  • 模拟器/真机
    • 方便授课

1.2java的安装

  • 安装步骤

    1. 双击安装文件,一路下一步
    2. 定义系统级别的变量
      • JAVA_HOME=xxxxx\jdk
    3. 配置path
      • %JAVA_HOME%\bin
      • %JAVA_HOME%\jre\bin
    4. 验证
      • 在终端输入java -version
      • 在终端输入javac -version
  • 环境变量的作用

    • 使用命令执行程序的顺序
      • 先在当前目录查找,如果有就执行
      • 如果没有就去path下的路径去查找,如果有就执行
      • 如果没有,报错:不是内部或外部命令,也不是可运行的程序 或批处理文件。
  • 注意点

    • JAVA_HOME的命名,必须要求是全大写,用下划线连接
    • 环境变量path,建议大家配置到系统级别。有些程序无法访问用户的私有配置信息

1.3Android SDK的安装

  • 安装步骤
    • 解压android sdk的压缩包
    • 自定义变量
      • ANDROID_HOME=xxxxxxx\android-sdk
    • 配置path
      • %ANDROID_HOME%\platform-tools
      • %ANDROID_HOME%\tools
    • 验证
      • adb --version

1.4genymotion安装

  • 安装步骤

    • 双击genymotion的安装文件、安装过程,提示安装virtualBox,安装即可
    • 导入手机,virtualbox:管理–导入虚拟机电脑
    • 启动手机:genymotion开启对应的手机即可
  • ARM插件的安装步骤

    • 将ARM插件拖拽到手机屏幕松手即可,注意:ARM所在的目录不能有中文
    • 弹出框点击OK进行安装
    • 重启手机模拟器

2.adb调试工具

1.1adb的概念

  • 概念

    • Android Debug Bridge的简写,用来调试手机
  • 组成和工作原理

    • Client端:安装在电脑(Android SDK),负责发送adb指令
    • Server端:安装在电脑(Android SDK),负责Client端和daemon守护进程的通信
    • Daemon守护进程:安装在手机中,负责执行adb指令

移动端APP自动化之环境搭建、adb指令、Appium原理_第1张图片

1.2adb基础命令

  • 获取当前连接的手机设备列表

    adb devices
    # 场景:验证当前手机是否和计算机建立连接
    
  • 进入手机的终端

    adb shell
    # 进入手机终端,对手机中的文件进行查看和修改
    

1.3获取包名和界面名

13.1包名和界面名的概念
  • 包名(package)–手机中app的身份的唯一标示
  • 界面名(activity) – app中页面的名字,一个页面对应一个界面名
1.3.2获取包名和界面名
  • 步骤

    • 打开想要获取的app和想要获取的界面
    • 输入命令
  • 命令

    • windows

      adb shell dumpsys window windows | findstr mFocusedApp
      # mFocusedApp=AppWindowToken{10480e98 token=Token{2a22f07b ActivityRecord{11e4700a u0 com.android.settings/.Settings t153}}}
      # 包名: com.android.settings
      # 界面名: .Settings
      
    • mac/linux

      adb shell dumpsys window windows | grep mFocusedApp
      
    • 注意:

      • 过滤的单词mFocusedApp可以写成usedApp
      • 界面名在其他场景,被称作启动名
  • 使用场景

    • 辅助自动代码,打开哪一个app的哪一个页面,获取包名和界面名

1.4文件传输

1.4.1推送文件到手机
  • 命令

    adb push 电脑中文件的路径 手机中文件夹的路径
    
    # 场景:对一写文件在电脑上进行编辑,然后推送到手机对应的目录
    
  • 注意

    • 可以使用相对路径(电脑的文件)

    • 可以修改文件名

      adb push 电脑文件的路径 手机文件的路径(文件的名字可以自定义)
      adb push shanghai.txt /sdcard/hehe.txt
      
1.4.2拉取文件到计算机
  • 命令

    adb pull 手机中文件的路径 电脑中文件夹的路径
    
    # 场景:拉取手机文件到电脑
    
  • 注意:

    • 可以使用相对路径(电脑的文件)

    • 可以修改文件名

    • 可以拉去文件夹

      adb pull 手机文件夹的路径 电脑文件夹的路径
      # adb pull /sdcard/GT/GW/com.bjcsxq.chat.carfriend/6.2.0/shanghai1109 .\Desktop
      

1.5获取app的启动时间

  • 命令

    adb shell am start -W 包名/启动名
    
    # 测试app的启动时间
    
  • 结果时间

    • ThisTime:当前页面消耗的时间
    • TotalTime:ThisTime+app资源加载时间(公共资源)
    • WaitTime:TotalTime+系统消耗时间
  • 注意

    • 传入界面,是app打开的第一个页面的界面

1.6获取手机日志

  • 命令

    adb logcat | grep app包名
    
    # 程序出现崩溃,程序无响应,把手机运行日志发给开发人员,辅助其定位bug
    
  • 获取日志步骤

    1. 打开被测应用程序
    2. 找到触发bug的位置
    3. 输入adb logcat 获取日志的命令
    4. 触发bug
    5. 获取日志

1.7安装和卸载app

  • 安装

    adb install apk的文件的路径  # 路径可以使用相对路径或绝对路径
    
  • 卸载

    adb uninstall app的包名
    

1.8获取手机的版本号

  • 命令

    adb shell getprop ro.build.version.release
    

1.9开启和关闭adb的服务

  • 命令

    # 开启
    adb start-server
    
    # 关闭
    adb kill-server
    
    # 场景:uiautomatorviewer定位工具报错,先杀死adb服务,再开启adb服务
    
  • 注意

    • 手机会自动开启adb的服务

1.10获取帮助信息

  • 命令

    adb --help
    # 场景:命令忘记的时候,查看
    
  • 注意

    • 查询命令信息的语句不会走整个adb的流程(不会连接adb的服务和手机daemon进程)

3.移动自动化测试工具

3.1自动化测试工具介绍

  • Robotium

    • 支持java
    • 只支持Android
    • 不支持跨应用
  • Macaca

    • 支持语言丰富
    • 支持Android和iOS
    • 支持跨应用
  • Appium----主流工具

    • 支持语言丰富
    • 支持Android和iOS
    • 支持跨应用
  • 选择移动自动化工具关注点

    • 是否支持native和webview
    • 是否支持toast
    • 是否支持跨应用

3.2Appium工具安装

3.2.1Appium客户端工具安装
  • appium-desktop-Setup-1.2.7.exe–双击一路下一步
3.2.2Appium-Python-Client安装
  • pip3 install Appium-Python-Client==0.40

3.3HelloAppium

  • 代码

    import time
    from appium import webdriver
    
    desired_caps = dict()
    # platformName 手机系统  大小写无所谓,不能乱写和不写
    desired_caps['platformName'] = 'Android'
    # platformVersion 手机系统的版本  5.2.3 (5.2.3 5.2 5)
    desired_caps['platformVersion'] = '5.1'
    # deviceName 设备名称 可以随便写,不能为空 --- 兼容IOS,android传递,appium不使用
    desired_caps['deviceName'] = '192.168.56.101:5555'
    # appPackage app包名
    desired_caps['appPackage'] = 'com.android.mms'
    # appActivity app的启动名
    desired_caps['appActivity'] = '.ui.ConversationList'
    # python代码和appium通过http协议进行通信,获取驱动对象
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
    time.sleep(5)
    # 退出驱动
    driver.quit()
    

4.扩展

  • appium+win10的bug

    adb shell
    在/data/local/tmp将AppiumBootstrap.jar的名字补全
    
  • appium工作原理
    移动端APP自动化之环境搭建、adb指令、Appium原理_第2张图片

你可能感兴趣的:(移动端APP自动化之环境搭建、adb指令、Appium原理)