从0开始搭建自动化(一) 引言废话2026.05.25从0开始搭建自动化我其实也是app的自动化小白没办法公司只有我一个软测只能硬着头皮上上周领导给了我四天的时间让我去筛选适合我们物联网公司的app的自动化方案筛选出了15种。今天2026.05.25上午开会筛选出了两种第一种是appiumpython第二种是flutter说实话两种我都没有搭建过盲人过河上周最开始选的airtest被pass了从0开始搭建公司的自动化我其实是app的自动化小白我只懂一点儿后端的接口自动化app的自动化真的没有搭建过没办法公司只有我一个软测只能硬着头皮上如果后续一直在更新说明我么有被开如果后续中断了说明我被开了因为没有做出来希望我能做出来吧毕竟ai这么强大。后面再补上自动化方案吧这周给我的任务是先让我试用一下两种方案一是appiumpython第二种是flutter看看哪种我能做出来我想说我也不知道啊。。。好了不废话了开始吧需要安装的工具与软件清单第一步环境搭建1. 安装Pythonpython我装的14安装流程之前忘记写了网上教程很多这里就不写了python--version pip--version2、 安装Java JDK我拿到这台电脑就已经有这个jdk版本了无需安装3. 验证Android设备连接 (adb)Android SDK我之前已经安装上了当时没有记录网上有很多安装教程可以搜此处验证adb devices4、验证Node.js与npm在命令行输入node-v npm-v5、 验证UIAutomator2驱动安装android:appium driver install uiautomator2ios:appium driver install xcuitest6、 验证Appium Server及驱动安装appium -vpip show Appium-Python-Clientpip show paho-mqttpip show pyserialpip show pytest7、步骤4验证Python库安装pip show Appium-Python-Clientpip show paho-mqttpip show pyserialpip show pytest8、综合环境检查运行验证脚本appium9、创建并运行检查脚本fromappiumimportwebdriverfromappium.options.androidimportUiAutomator2Optionsimportpaho.mqtt.clientasmqttimportserial.tools.list_portsimportpytestprint( 开始综合环境检查 )# 1. 检查Python库导入print(✅ 1. Python核心库导入成功)# 2. 检查paho-mqttclientmqtt.Client()print(✅ 2. paho-mqtt 库检查通过)# 3. 检查pyserial列出串口portslist(serial.tools.list_ports.comports())print(f✅ 3. pyserial 库检查通过发现{len(ports)}个串口设备)# 4. 检查pytestprint(✅ 4. pytest 库检查通过)# 5. 尝试连接Appium Server (需确保Appium服务正在运行)try:# 使用UiAutomator2Options对象配置能力参数optionsUiAutomator2Options()options.platform_nameAndroidoptions.platform_version10# 【重要】请修改为您的手机实际Android版本options.device_nameAndroid Deviceoptions.automation_nameUiAutomator2options.app_packagecom.android.settingsoptions.app_activity.Settingsoptions.new_command_timeout60driverwebdriver.Remote(http://localhost:4723,optionsoptions)print(✅ 5. Appium Server 连接与会话创建成功)driver.quit()# 立即退出会话exceptExceptionase:print(f❌ 5. 连接Appium Server失败:{e})print( 请确认1. Appium Server已在运行。 2. 设备已被adb识别(adb devices)。 3. 能力参数(如版本号)是否正确。)exit(1)print(\n 所有环境检查通过您现在可以开始编写您的第一个自动化测试脚本了。)print(下一步建议运行固定验证码登录的PoC脚本验证与您MARS App的连通性。)python check_env.py恭喜成功搭建了一个专业、完整的自动化测试基础环境。第二步环境验证验证与App的连通性执行第一个业务场景的PoC概念验证即“固定验证码登录”测试具体操作步骤1、 下载安装 Appium Desktop下载地址https://github.com/appium/appium-inspector/releases?page2针对绝大多数普通 Windows 电脑Intel 或 AMD 的 64 位处理器请下载 Appium-Inspector-2024.12.1-win-x64.exe​ 这个文件。这是最通用版本。2、确保手机USB连接电脑并已安装所需的App。3、打开 Appium Desktop启动 Inspector​ 会话。保持Appium Server运行在另一个命令行窗口中确保通过 npm安装的 Appium Server​ 正在运行命令appium。这是Inspector能连接的基础。在主界面会看到 “Host”默认 localhost和 “Port”默认 4723关闭旧版Appium Desktop如果之前打开了旧版 Appium Desktop​ 应用请将其完全关闭避免端口冲突。服务器设置 (Appium Server)Remote Host: 127.0.0.1(默认表示本机通常无需改动)Remote Port: 4723(默认与您启动的Appium Server端口一致通常无需改动)Remote Path: /(默认通常无需改动)SSL: 不勾选4、在“Desired Capabilities”中填入连接您MARS App所需的参数包名appPackage、启动页appActivity等可与开发同事确认。需要在 “Capability Builder”​ 区域点击 “”​ 号逐一添加以下键值对标题为 “Desired Capabilities”​ 或 “Capabilities”​ 的大区域。它通常有两种呈现方式表格/构建器视图 (Capability Builder)一个带有 “Name”​ 和 “Value”​ 列的空表格旁边有一个明显的 “”​ (加号) 按钮。JSON 编辑器视图一个大的文本框里面可能已经有几行默认的JSON内容如 { “platformName”: “Android” }。如果找不到表格或“”按钮请直接在那个大的 JSON 编辑器文本框​ 中输入或修改为以下格式的JSON内容请将 中的示例值替换为您从开发同事那里获取的或通过 adb命令查到的实际值填写完成后点击右下角的 “Start Session”​ 按钮即可尝试连接手机和App5、 启动并开始检查①配置完成后点击右下角的 “Start Session”​ 按钮。②此时手机会自动启动App并跳转到指定的登录界面。③电脑上会弹出 Inspector 窗口左侧是手机屏幕的实时截图右侧是当前界面的元素层级树。第三步验证登录python脚本在任何路径写这个python脚本执行脚本python poc_mars_login_fixed.py这个脚本只是为了验证登录是否连通和resource-id是否加上python脚本如下fromappiumimportwebdriverfromappium.options.androidimportUiAutomator2Optionsfromappium.webdriver.common.appiumbyimportAppiumByimporttime# # 第一部分配置与定义 (请根据您的实际情况修改以下变量)# # 1. 设备与App配置DEVICE_PLATFORM_VERSION10# 您的手机Android版本请确认YOUR_TEST_ACCOUNT# 测试用的手机号/邮箱FIXED_VERIFICATION_CODE# 固定验证码# 2. App 标识 (关键修改点必须使用您App的真实标识)APP_PACKAGE# 您的应用包名APP_ACTIVITY# 登录界面的Activity# 3. 期望的元素ID (与开发约定的定位符用于验证是否已添加)EXPECTED_ELEMENT_IDS{email_input_id:,password_input_id:,login_button_id:,home_element_id:# 用于登录成功后断言}# # 第二部分脚本主体 - 自动化登录流程# defrun_login_poc():print( 启动 App 登录自动化 PoC ...)# 1. 创建并配置驱动选项optionsUiAutomator2Options()options.platform_nameAndroidoptions.automation_nameUiAutomator2options.platform_versionDEVICE_PLATFORM_VERSION options.device_nameMy_MARS_Test_Phone# 【核心修正】此处已修改为您的MARS App包名和Activityoptions.app_packageAPP_PACKAGE options.app_activityAPP_ACTIVITY options.no_resetTrueoptions.new_command_timeout60# 2. 连接 Appium Server 并启动应用driverwebdriver.Remote(http://localhost:4723,optionsoptions)time.sleep(2)# 等待应用初始加载try:print( 应用已启动开始执行登录步骤...)# 3. 使用【期望的ID】定位元素并操作# 3.1 输入账号email_inputdriver.find_element(AppiumBy.ID,EXPECTED_ELEMENT_IDS[email_input_id])email_input.send_keys(YOUR_TEST_ACCOUNT)print(f ✅ 已向元素 {EXPECTED_ELEMENT_IDS[email_input_id]} 输入账号)# 3.2 输入固定验证码password_inputdriver.find_element(AppiumBy.ID,EXPECTED_ELEMENT_IDS[password_input_id])password_input.send_keys(FIXED_VERIFICATION_CODE)print(f ✅ 已向元素 {EXPECTED_ELEMENT_IDS[password_input_id]} 输入验证码)# 3.3 点击登录按钮login_buttondriver.find_element(AppiumBy.ID,EXPECTED_ELEMENT_IDS[login_button_id])login_button.click()print(f ✅ 已点击元素 {EXPECTED_ELEMENT_IDS[login_button_id]})# 4. 验证登录结果print(⏳ 等待登录结果...)time.sleep(3)# 等待网络请求和页面跳转# 尝试查找登录后才能看到的首页元素home_elementdriver.find_element(AppiumBy.ID,EXPECTED_ELEMENT_IDS[home_element_id])asserthome_element.is_displayed(),登录失败未找到首页标志性元素print(f ✅ 登录成功首页元素 {EXPECTED_ELEMENT_IDS[home_element_id]} 可见。)print(\n*20)print( PoC 验证成功自动化登录流程完整执行。)print( 如果此脚本运行成功说明开发同学已添加约定的resource-id。)print(*20)exceptExceptionase:print(f\n❌ PoC 执行失败:{e})print(\n可能原因)print(1. 【最常见】期望的 resource-id 尚未被开发添加到应用中。)print(2. 应用包名、Activity名或设备连接不正确。)print(3. 页面加载超时或业务流程有变化。)# 保存截图以便精准定位问题screenshot_pathpoc_login_failure.pngdriver.save_screenshot(screenshot_path)print(f 已保存错误截图至:{screenshot_path}可将其提供给开发同学辅助排查。)finally:# 5. 关闭会话driver.quit()print(\n 测试会话已结束。)# # 第三部分脚本执行入口# if__name____main__:# 运行前提检查提示print(⚠️ 运行前请确认)print( 1. Appium Server 已在另一个命令行窗口中启动 (运行 appium 命令))print( 2. 测试手机已通过USB连接且 adb devices 能识别)print( 3. 手机屏幕已解锁)print(-*40)run_login_poc()