从零开始完成APP自动化测试(三)--adb命令

本文详细介绍了Android调试桥(adb)的使用,包括环境搭建、常用命令如设备连接、版本信息获取、APK安装与卸载、元素定位、日志查询等。此外,还涵盖了屏幕事件模拟如输入文本、点击与滑动,以及CPU使用情况查看。内容全面,适合Android开发者和测试人员参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一章 APP自动化环境搭建(Mac版)
第二章 APP自动化环境搭建(Windows版)
第三章 adb命令
第四章 元素定位、元素操作
第五章 APP自动化测试框架搭建 Python+Appium+pytest-html
第六章 uiautomator2、web-editor基础操作
第七章 Airtest基础操作
第八章 ATX Server2多设备集群环境搭建



一、adb简介

1、adb的全称为安卓调试桥 (Android Debug Bridge, adb),是⼀种可以⽤来操作⼿机设备或模拟器的命令⾏⼯具。它是 Android 开发/测试⼈员不可替代的强⼤⼯具,它存在于sdk/platform-tools⽬录下。

二、常用命令

1、查看当前连接设备

adb devices

在这里插入图片描述

2、获取android移动设备的版本信息

adb shell getprop ro.build.version.release

在这里插入图片描述

3、安装apk文件

adb install "<xxx.apk>" --如果此apk手机中已经存在,⽆法安装;apk包路径直接将电脑里文件拖入cmd输入框中即可。
adb install -r "xxx.apk"–覆盖安装,如果已存在安装,会覆盖原有应⽤
在这里插入图片描述

4、获取当前界面中显示APP的包名(appPackage)和活动名(appActivity)

①Windows系统:

adb shell dumpsys window|findstr mCurrentFocus

在这里插入图片描述
②Mac/Linux系统:

adb shell dumpsys window|grep mCurrentFocus

在这里插入图片描述

5、通过adb命令卸载应用

adb uninstall <包名>

在这里插入图片描述

6、查看手机端安装的所有app包名

adb shell pm list packages

在这里插入图片描述

7、查看指定app的路径

adb shell pm list packages -f <包名>

在这里插入图片描述

8、传递文件

①adb push <本机路径> <⼿机路径> 从本地电脑推送信息到⼿机上
在这里插入图片描述
②adb pull <⼿机路径> <本机路径> 从⼿机中拉取信息到本地电脑上
在这里插入图片描述

9、启动app

adb shell am start <包名appPackage>/<活动名appActivity>

在这里插入图片描述

10、截图

adb shell screencap /sdcard/screen.png

在这里插入图片描述

三、屏幕事件

1、输入文本

adb shell input text "test%s001"   #%s代表空格

在这里插入图片描述

2、点击坐标

adb shell input tap <X坐标> <Y坐标>

在这里插入图片描述

3、滑动

adb shell input swipe <X坐标> <Y坐标> <X偏移坐标> <Y偏移坐标>

在这里插入图片描述

四、日志查询

1、查询日志

adb logcat

在这里插入图片描述

2、结束查询

ctrl + c

3、查看CPU使用情况

adb shell top

在这里插入图片描述

随手点赞一次,运气增加一份。

### 如何从零开始搭建UI自动化测试框架 #### 1. 明确需求与目标 在构建 UI 自动化测试框架之前,需明确项目的具体需求以及预期达到的目标。这包括但不限于支持的应用平台(Android 或 iOS)、使用的编程语言、框架的核心功能等[^2]。 #### 2. 技术选型 技术栈的选择直接影响到后续开发效率和维护成本。对于 Python 开发者而言,推荐使用 Pytest 结合 Appium 来实现跨平台的移动端 UI 测试。Appium 是一款开源工具,能够很好地适配 Android 和 iOS 平台上的应用测试[^3]。 #### 3. 安装依赖环境 为了运行基于 Appium 的 UI 自动化脚本,需要安装以下组件: - **Node.js**: Appium 基于 Node.js 构建。 - **Java Development Kit (JDK)**: 部分插件可能需要用到 Java 编译器。 - **Android SDK Tools**: 提供访问设备的能力。 可以通过命令行验证这些工具是否已正确配置好环境变量[^2]: ```bash node -v && java -version && adb version ``` 如果上述任意一条指令报错,则说明对应软件未被成功设置路径或者尚未下载安装。 #### 4. 初始化项目结构 创建合理的目录布局有助于管理日益增长的文件数量并保持良好的可读性和扩展性。一个典型的 UI 自动化测试工程可以按照如下方式组织[^3]: ``` ui_automation/ │── config/ # 存储全局参数如 desired capabilities 设置 │ └── caps.py # Desired Capabilities 文件 ├── pages/ # 页面对象模型(Page Object Model)定义区域 │ ├── base_page.py # 封装通用方法的基础类 │ └── home_page.py # 主页特定操作封装 ├── tests/ # 实际编写用例的地方 │ └── test_login.py # 登录场景下的测试样例 └── utils/ # 辅助函数集合比如日志记录模块 └── logger.py # 日志处理逻辑 ``` #### 5. 设计页面对象模型(POM) POM 是一种设计模式,在 Selenium/Appium 场景下特别受欢迎因为它能有效分离代码中的业务流程和技术细节从而提高重用率减少冗余代码量。每一个屏幕界面都应该映射成单独的一个 Page 类实例[^3]。 例如下面展示了一个简单的登录页面交互过程: ```python from appium.webdriver.common.mobileby import MobileBy from .base_page import BasePage class LoginPage(BasePage): _username_locator = (MobileBy.ID, 'com.example:id/edit_username') _password_locator = (MobileBy.ID, 'com.example:id/edit_password') _login_button_locator = (MobileBy.ID, 'com.example:id/button_login') def enter_username(self, username): self.find_element(*self._username_locator).send_keys(username) def enter_password(self, password): self.find_element(*self._password_locator).send_keys(password) def click_login(self): self.find_element(*self._login_button_locator).click() ``` #### 6. 编写测试用例 利用 pytest 插件简化执行流程并通过 conftest.py 共享 fixture 资源来初始化 driver 对象[^3]。 示例 `conftest.py` 中的内容可能是这样的: ```python import pytest from appium import webdriver @pytest.fixture(scope='function') def driver(): desired_caps = { 'platformName': 'Android', 'deviceName': 'emulator-5554', 'appPackage': 'com.example.app', 'appActivity': '.MainActivity' } drvr = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) yield drivr drvr.quit() ``` 而具体的某个测试案例则看起来像这样: ```python def test_successful_login(driver): login_page = LoginPage(driver) login_page.enter_username("valid_user") login_page.enter_password("secure_passw0rd!") login_page.click_login() assert "Welcome" in driver.page_source ``` #### 7. 执行测试计划 最后一步便是定期安排 CI/CD 系统自动触发整个套件跑一遍所有预设好的 case 列表以便及时发现潜在 bug 。也可以手动指定单个或多个 cases 来快速验证改动效果[^2]。 --- 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拒绝内卷的小测试

感谢老板的投喂

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值