zoukankan      html  css  js  c++  java
  • 测试人员一定要懂的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:Usersxiaojuanadb.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	utorial-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

    呀,这么认真都看到这里啦,帮忙点个推荐支持一下呗,灰常感谢~

  • 相关阅读:
    Atom + activate-power-mode震屏插件Windows7下安装
    通过Google身份验证器加强Linux帐户安全
    adb 常用命令总结
    excel 文件加密
    docker 进入容器命令行 /bin/bash 后不支持中文
    无法获取 gcr.io 上的镜像的解决方法
    mysql unix 时间戳转换
    docker 镜像如何导入导出以及建立自己的镜像仓库
    asp.net core 文件的处理
    docker compose 设置环境变量
  • 原文地址:https://www.cnblogs.com/AirtestProject/p/14177833.html
Copyright © 2011-2022 走看看