1. 项目概述为什么Appium环境搭建是自动化测试的第一道坎搞移动端自动化测试Appium几乎是绕不开的名字。但很多新手甚至是有一定经验的测试同学都卡在了环境搭建这一步。我见过太多人兴致勃勃地打开官方文档照着步骤一步步来结果不是Node.js版本不对就是Android SDK路径配错要么就是Appium Desktop启动报错折腾一两天还没跑通第一个Demo热情瞬间被浇灭。这太正常了因为Appium的环境依赖链条长涉及Java、Node.js、Android SDK、模拟器/真机、Appium Server/Desktop以及各种客户端库任何一个环节出问题都会导致失败。所以这篇教程的目标很明确做一份真正能“一次成功”的保姆级指南。我不会只给你一串命令而是会解释清楚每一步在干什么、为什么这么做以及最常见的坑在哪里。无论你是用Windows、macOS还是Linux无论你是测Android还是iOS本篇以Android为主iOS思路相通都能在这里找到清晰的路径。我们最终的目标是让你能成功运行一个最简单的脚本在手机或模拟器上打开计算器App并点击按钮。别小看这个“Hello World”它能跑通就意味着你的核心环境已经就绪后续的学习和项目开发就有了坚实的基础。2. 环境搭建核心思路与工具选型解析在开始动手之前我们先理清思路。Appium是一个C/S架构的自动化工具它的环境可以拆解为几个核心部分理解这个架构能帮你更好地排查问题。2.1 Appium架构与组件角色想象一下你的自动化脚本Client是一个指挥官Appium Server是一个翻译官而手机或模拟器Device是士兵。指挥官用Python/Java等语言下达命令比如“点击登录按钮”翻译官Appium Server接收命令并将其翻译成手机系统能理解的指令通过UIAutomator2 for Android 或 XCUITest for iOS最终由士兵执行。在这个链条里我们需要准备指挥官的环境即编写脚本的语言环境如PythonAppium Client库。翻译官的环境即Appium Server的运行环境主要依赖Node.js。士兵的沟通渠道即与手机通信的工具主要是ADBAndroid Debug Bridge和对应的开发者选项/驱动。士兵本身一部开启了调试模式的安卓真机或一个安卓模拟器。我们的搭建工作就是为这四位角色准备好舞台。2.2 关键工具选型与版本控制建议版本冲突是环境搭建的头号杀手。下面是我的推荐配置经过大量项目验证稳定性较高Java JDK选择JDK 8 或 JDK 11 (LTS版本)。这是Android开发工具链的历史要求虽然新版本也可能工作但为了避免潜在的兼容性问题建议使用这两个版本之一。Oracle JDK或OpenJDK均可。Node.js 与 npmAppium Server基于Node.js因此需要安装Node.js及其包管理器npm。选择Node.js 16 LTS或18 LTS版本。避免使用最新的奇数版本如19、21它们可能包含未稳定的变更。安装后node -v和npm -v能正常显示版本号即可。Android SDK (Command-line Tools)谷歌现在推荐使用独立的命令行工具包而不是完整的Android Studio当然用Android Studio安装SDK也可以。我们将下载这个轻量级的命令行工具来管理SDK。重点是安装Platform Tools包含ADB和至少一个版本的Android Platform即系统镜像如Android 13。Appium Server有两种选择。Appium Desktop包含图形界面和内置Server的应用程序对新手非常友好自带元素检查器Inspector推荐入门使用。Appium Server (via npm)通过npm全局安装的命令行版本更轻量更适合集成到CI/CD流水线中。本教程会以Appium Desktop入门并补充npm安装方式。Python 与 Appium-Python-Client作为客户端语言Python语法简洁生态丰富。选择Python 3.8 及以上版本推荐3.8-3.10。通过pip安装appium-python-client库。模拟器推荐如果不用真机推荐使用Google官方提供的 Android Studio 内置模拟器性能和对新系统的支持最好。也可以使用Genymotion等第三方模拟器。注意请务必记录下你安装的各个组件的具体版本号。当出现问题去搜索时提供“Appium 2.0 Node.js 18 Android API 33”这样的组合信息远比只说“我的Appium报错了”要有用得多。3. 核心组件安装与配置详解现在我们开始一步步安装和配置。我将以Windows系统为例进行演示macOS和Linux的用户操作类似主要区别在于安装包和部分环境变量路径。3.1 Java JDK安装与JAVA_HOME配置下载安装从Oracle官网或AdoptOpenJDK等渠道下载JDK 8或11的安装包。运行安装程序记住安装路径例如C:\Program Files\Java\jdk-11.0.xx。配置环境变量这是最关键的一步很多问题都出在这里。打开“系统属性” - “高级” - “环境变量”。在“系统变量”部分点击“新建”变量名JAVA_HOME变量值你的JDK安装路径如C:\Program Files\Java\jdk-11.0.xx找到并编辑“系统变量”中的Path变量点击“编辑” - “新建”添加两条%JAVA_HOME%\bin%JAVA_HOME%\jre\bin(如果存在)验证打开新的命令行窗口CMD或PowerShell输入java -version和javac -version。如果正确显示版本信息说明配置成功。实操心得JAVA_HOME这个变量名是许多工具如Android SDK的默认查找键必须正确设置。修改环境变量后一定要关闭并重新打开命令行窗口否则新的配置不会生效。3.2 Node.js与npm安装下载安装访问Node.js官网下载16.x或18.x的LTS版本安装包.msi。运行安装基本上一路“Next”即可。安装程序会自动将node和npm添加到系统Path中。验证与换源打开命令行输入node -v和npm -v检查版本。为了后续安装包速度更快建议将npm的仓库源换成国内镜像如淘宝源npm config set registry https://registry.npmmirror.com/可选安装Appium Server命令行版如果你想使用命令行版本的Server此时可以全局安装npm install -g appium安装后可以通过appium -v检查版本通过appium命令启动服务。但新手我建议先用Appium Desktop。3.3 Android SDK命令行工具安装与环境变量配置这是最繁琐但也最重要的一环。下载访问Android开发者网站找到“Command line tools only”进行下载。解压到一个没有中文和空格的路径例如D:\Android\cmdline-tools。解压后你可能会看到一个tools文件夹。组织目录结构重要新版命令行工具要求特定的目录结构。你需要手动创建latest文件夹。最终结构应为D:\Android\cmdline-tools\latest\bin。将解压出来的tools文件夹内的所有内容移动到latest文件夹内。配置环境变量ANDROID_HOME或ANDROID_SDK_ROOT设置为你的Android SDK根目录例如D:\Android。这个变量很重要Appium和Gradle等工具会读取它。编辑Path添加以下条目%ANDROID_HOME%\cmdline-tools\latest\bin%ANDROID_HOME%\platform-tools(这个文件夹稍后通过SDK Manager安装)%ANDROID_HOME%\emulator(这个文件夹稍后通过SDK Manager安装)使用SDK Manager安装必要组件打开命令行使用sdkmanager命令安装。首先更新SDK Manager自身sdkmanager --update查看可安装列表sdkmanager --list安装核心组件请安装一个你需要的API Level例如33对应Android 13sdkmanager platform-tools platforms;android-33 emulator system-images;android-33;google_apis;x86_64platform-tools包含ADB、fastboot等关键工具。platforms;android-33Android 13的系统平台文件。emulator模拟器程序。system-images;...对应API Level的系统镜像用于创建模拟器。验证ADB重新打开命令行输入adb version。如果显示版本信息说明platform-tools安装成功且环境变量正确。踩坑记录sdkmanager命令可能因为网络问题下载失败或极慢。可以尝试在命令前添加代理或者手动从国内镜像站下载zip包放到SDK目录的相应文件夹下。另一个常见坑是目录结构不对导致sdkmanager命令找不到。3.4 Appium Desktop安装与使用下载安装从Appium官网的Releases页面下载Appium Desktop安装包。安装过程简单。启动与基础配置启动Appium Desktop你会看到一个简单的主界面。点击“Start Server”按钮默认会启动在http://127.0.0.1:4723。这个窗口不要关闭它表示翻译官Appium Server已经就位在监听命令。启动Inspector会话点击“Start Inspector Session”按钮这里就是配置你的“指挥官”与“士兵”连接信息的地方。我们需要填写一个JSON格式的“Desired Capabilities”。这是Appium工作的核心配置它告诉Server你要测试什么设备、什么应用。4. 第一个自动化脚本实战从零启动计算器环境准备就绪我们来实战。目标是写一个Python脚本启动安卓模拟器上的计算器App并点击按钮“5”。4.1 准备被测设备模拟器或真机使用模拟器打开命令行使用avdmanager list avd查看已有模拟器设备。如果没有则创建一个。可以通过Android Studio的AVD Manager图形界面创建也可以用命令行较复杂。假设我们通过Android Studio创建了一个名为Pixel_4_API_33的模拟器。启动模拟器可以在Android Studio的AVD Manager里点击启动也可以用命令emulator -avd Pixel_4_API_33。确保ADB能识别设备命令行输入adb devices应该能看到一个设备列表例如emulator-5554 device。使用真机手机开启“开发者模式”通常是在“关于手机”里连续点击“版本号”7次。在开发者选项中开启“USB调试”。用USB线连接电脑手机上可能会弹出“允许USB调试吗”的授权框点击确定。命令行输入adb devices应该能看到你的设备序列号后面跟着device字样。4.2 配置Desired Capabilities这是连接脚本、Appium Server和设备的桥梁。我们以Inspector的配置为例后续脚本中会用到同样的字典。{ platformName: Android, appium:platformVersion: 13, // 根据你的设备系统版本填写 appium:deviceName: emulator-5554, // 在 adb devices 里看到的名称 appium:automationName: UiAutomator2, // Android的自动化引擎 appium:appPackage: com.google.android.calculator, // 计算器的包名 appium:appActivity: com.android.calculator2.Calculator // 计算器的启动Activity }platformName: 操作系统固定为“Android”或“iOS”。appium:platformVersion: 设备的安卓版本号。appium:deviceName: 设备标识可以是adb devices列出的任意一个用于指定在哪台设备上运行。appium:automationName: 自动化驱动Android必须用UiAutomator2。appium:appPackage和appium:appActivity: 应用的包名和入口Activity。如何获取一个简单的方法是打开你要测的App然后在命令行输入adb shell dumpsys window | findstr mCurrentFocus(Windows) 或adb shell dumpsys window | grep mCurrentFocus(macOS/Linux)输出结果里就包含了这两个信息。在Appium Inspector里填写这些信息点击“Start Session”如果一切正常Inspector窗口会加载出手机当前界面的控件树和截图恭喜你连接成功了4.3 编写并运行Python测试脚本安装Python客户端库在命令行中运行pip install Appium-Python-Client。编写脚本创建一个名为first_test.py的文件。from appium import webdriver from appium.webdriver.common.appiumby import AppiumBy import time # 定义Desired Capabilities与Inspector中配置一致 desired_caps { platformName: Android, appium:platformVersion: 13, appium:deviceName: emulator-5554, appium:automationName: UiAutomator2, appium:appPackage: com.google.android.calculator, appium:appActivity: com.android.calculator2.Calculator, # 可选防止每次重置应用提升测试速度 # appium:noReset: True } # 初始化驱动连接至Appium Server # 确保Appium Server正在 http://127.0.0.1:4723 运行 driver webdriver.Remote(http://127.0.0.1:4723, desired_caps) try: # 等待应用加载隐式等待是一种全局等待策略 driver.implicitly_wait(10) # 通过资源ID定位数字5按钮并点击 # 使用Appium Inspector可以轻松获取元素的resource-id、xpath等信息 digit_5 driver.find_element(AppiumBy.ID, com.google.android.calculator:id/digit_5) digit_5.click() print(成功点击数字5按钮) # 为了看到效果等待2秒 time.sleep(2) except Exception as e: print(f运行过程中出现错误{e}) finally: # 无论是否发生异常最后都退出会话关闭驱动 driver.quit() print(测试结束驱动已关闭。)运行脚本确保Appium Desktop的Server正在运行那个有“Stop Server”按钮的窗口。确保你的模拟器或真机已连接且被ADB识别 (adb devices)。在命令行中进入脚本所在目录运行python first_test.py。如果一切顺利你会看到模拟器/手机上的计算器App被自动打开并且数字“5”的按钮被点击了一下可能会有高亮显示。命令行会输出“成功点击数字5按钮”。5. 环境搭建与脚本运行中的常见问题排查即使按照教程你也可能会遇到问题。这里汇总了高频问题及其解决方案。5.1 ADB设备识别失败现象adb devices列表为空或设备状态为unauthorized。排查线缆与端口换一根质量好的USB数据线尝试电脑上不同的USB端口。驱动问题Windows特有对于真机可能需要安装手机厂商的USB驱动。可以前往厂商官网下载或使用第三方工具如“驱动精灵”检测安装。授权弹窗真机连接时查看手机屏幕是否有“允许USB调试”的弹窗务必点击“确定”。ADB服务重启尝试adb kill-server然后adb start-server。模拟器特定确保模拟器已完全启动进入系统有时启动慢会导致ADB识别延迟。5.2 Appium Server启动失败或无法连接现象Appium Desktop启动Server时红字报错或Python脚本报ConnectionRefusedError。排查端口占用默认4723端口可能被其他程序占用。在Appium Desktop的设置中更换一个端口如4724同时修改Python脚本中的连接URL。Node.js或npm问题运行node -v和npm -v确认安装正确。如果是npm安装的appium尝试appium driver install uiautomator2来确保Android驱动已安装。权限问题macOS/Linux可能需要使用sudo权限运行Appium Desktop或命令。5.3 脚本执行时报“无法找到元素”现象脚本运行App也启动了但在find_element时报错提示无法定位元素。排查Capabilities配置错误检查appPackage和appActivity是否正确。用前面提到的adb shell dumpsys window命令再次确认。等待时间不足网络或设备慢可能导致元素未及时加载。增加implicitly_wait的时间或使用更灵活的WebDriverWait配合expected_conditions。定位方式错误元素ID可能动态变化或你获取的ID不对。务必使用Appium Inspector来实时查看和验证元素的定位方式。Inspector里高亮选中元素后它会给出推荐的选择器如ID、XPath。上下文Context问题如果应用内有WebView网页内容需要先切换到WEBVIEW上下文才能定位网页元素。使用driver.contexts和driver.switch_to.context进行切换。5.4 真机与模拟器特有的问题真机-安装应用失败如果脚本中使用了app能力指定APK路径来自动安装可能因为签名冲突、设备存储空间不足等原因失败。可以尝试手动安装APKadb install -r your_app.apk。模拟器-性能极慢确保电脑BIOS中已开启虚拟化技术Intel VT-x或AMD-V。在AVD Manager中编辑模拟器为其分配更多的RAM和CPU核心并使用x86_64或arm64-v8a的系统镜像以获得更好的性能。6. 进阶配置与最佳实践建议当你的第一个脚本跑通后可以关注以下方面来提升效率和脚本健壮性。6.1 使用Page Object Model (POM) 设计模式不要把所有元素定位和操作都堆在一个脚本里。POM模式将每个页面抽象成一个类页面的元素定位符和基本操作封装在类的方法中。测试脚本则调用这些页面对象的方法。这样做极大地提高了代码的可读性、复用性和可维护性。当UI发生变化时你通常只需要修改对应的页面对象类即可。6.2 配置化的Desired Capabilities将Capabilities配置写在单独的配置文件如JSON、YAML或Python配置文件中根据不同的测试环境如Android版本、设备型号、测试App动态加载。这样一套脚本就能轻松适配多环境运行。6.3 集成单元测试框架将Appium脚本与pytest或unittest框架结合。可以利用框架的Setup/Teardown机制如setUpClass/tearDownClass来管理驱动的初始化和退出利用断言Assert来进行结果验证并生成漂亮的测试报告。6.4 元素等待策略优化抛弃固定的time.sleep()它是脆弱的等待时间可能不够或过长。优先使用隐式等待driver.implicitly_wait(10)设置一个全局的最大寻找元素等待时间。显式等待针对特定元素和条件使用WebDriverWait配合expected_conditions这是最推荐的方式。from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait WebDriverWait(driver, 10) element wait.until(EC.presence_of_element_located((AppiumBy.ID, some_id)))6.5 日志与截图在关键步骤和断言失败时自动截图并保存这对于后期调试和报告至关重要。可以封装一个简单的截图函数在try...except块或pytest的钩子函数中调用。环境搭建是自动化测试的基石虽然过程有些繁琐但一旦打通后面就是一马平川。希望这份详尽的指南能帮你扫清障碍。记住遇到问题多查日志Appium Server的日志非常详细、善用搜索引擎错误信息直接复制去搜、勤用Appium Inspector这个“眼睛”大部分问题都能找到答案。动手去试去踩坑才是最快的学习路径。
Appium自动化测试环境搭建保姆级指南:从零到一运行第一个脚本
发布时间:2026/6/25 19:10:11
1. 项目概述为什么Appium环境搭建是自动化测试的第一道坎搞移动端自动化测试Appium几乎是绕不开的名字。但很多新手甚至是有一定经验的测试同学都卡在了环境搭建这一步。我见过太多人兴致勃勃地打开官方文档照着步骤一步步来结果不是Node.js版本不对就是Android SDK路径配错要么就是Appium Desktop启动报错折腾一两天还没跑通第一个Demo热情瞬间被浇灭。这太正常了因为Appium的环境依赖链条长涉及Java、Node.js、Android SDK、模拟器/真机、Appium Server/Desktop以及各种客户端库任何一个环节出问题都会导致失败。所以这篇教程的目标很明确做一份真正能“一次成功”的保姆级指南。我不会只给你一串命令而是会解释清楚每一步在干什么、为什么这么做以及最常见的坑在哪里。无论你是用Windows、macOS还是Linux无论你是测Android还是iOS本篇以Android为主iOS思路相通都能在这里找到清晰的路径。我们最终的目标是让你能成功运行一个最简单的脚本在手机或模拟器上打开计算器App并点击按钮。别小看这个“Hello World”它能跑通就意味着你的核心环境已经就绪后续的学习和项目开发就有了坚实的基础。2. 环境搭建核心思路与工具选型解析在开始动手之前我们先理清思路。Appium是一个C/S架构的自动化工具它的环境可以拆解为几个核心部分理解这个架构能帮你更好地排查问题。2.1 Appium架构与组件角色想象一下你的自动化脚本Client是一个指挥官Appium Server是一个翻译官而手机或模拟器Device是士兵。指挥官用Python/Java等语言下达命令比如“点击登录按钮”翻译官Appium Server接收命令并将其翻译成手机系统能理解的指令通过UIAutomator2 for Android 或 XCUITest for iOS最终由士兵执行。在这个链条里我们需要准备指挥官的环境即编写脚本的语言环境如PythonAppium Client库。翻译官的环境即Appium Server的运行环境主要依赖Node.js。士兵的沟通渠道即与手机通信的工具主要是ADBAndroid Debug Bridge和对应的开发者选项/驱动。士兵本身一部开启了调试模式的安卓真机或一个安卓模拟器。我们的搭建工作就是为这四位角色准备好舞台。2.2 关键工具选型与版本控制建议版本冲突是环境搭建的头号杀手。下面是我的推荐配置经过大量项目验证稳定性较高Java JDK选择JDK 8 或 JDK 11 (LTS版本)。这是Android开发工具链的历史要求虽然新版本也可能工作但为了避免潜在的兼容性问题建议使用这两个版本之一。Oracle JDK或OpenJDK均可。Node.js 与 npmAppium Server基于Node.js因此需要安装Node.js及其包管理器npm。选择Node.js 16 LTS或18 LTS版本。避免使用最新的奇数版本如19、21它们可能包含未稳定的变更。安装后node -v和npm -v能正常显示版本号即可。Android SDK (Command-line Tools)谷歌现在推荐使用独立的命令行工具包而不是完整的Android Studio当然用Android Studio安装SDK也可以。我们将下载这个轻量级的命令行工具来管理SDK。重点是安装Platform Tools包含ADB和至少一个版本的Android Platform即系统镜像如Android 13。Appium Server有两种选择。Appium Desktop包含图形界面和内置Server的应用程序对新手非常友好自带元素检查器Inspector推荐入门使用。Appium Server (via npm)通过npm全局安装的命令行版本更轻量更适合集成到CI/CD流水线中。本教程会以Appium Desktop入门并补充npm安装方式。Python 与 Appium-Python-Client作为客户端语言Python语法简洁生态丰富。选择Python 3.8 及以上版本推荐3.8-3.10。通过pip安装appium-python-client库。模拟器推荐如果不用真机推荐使用Google官方提供的 Android Studio 内置模拟器性能和对新系统的支持最好。也可以使用Genymotion等第三方模拟器。注意请务必记录下你安装的各个组件的具体版本号。当出现问题去搜索时提供“Appium 2.0 Node.js 18 Android API 33”这样的组合信息远比只说“我的Appium报错了”要有用得多。3. 核心组件安装与配置详解现在我们开始一步步安装和配置。我将以Windows系统为例进行演示macOS和Linux的用户操作类似主要区别在于安装包和部分环境变量路径。3.1 Java JDK安装与JAVA_HOME配置下载安装从Oracle官网或AdoptOpenJDK等渠道下载JDK 8或11的安装包。运行安装程序记住安装路径例如C:\Program Files\Java\jdk-11.0.xx。配置环境变量这是最关键的一步很多问题都出在这里。打开“系统属性” - “高级” - “环境变量”。在“系统变量”部分点击“新建”变量名JAVA_HOME变量值你的JDK安装路径如C:\Program Files\Java\jdk-11.0.xx找到并编辑“系统变量”中的Path变量点击“编辑” - “新建”添加两条%JAVA_HOME%\bin%JAVA_HOME%\jre\bin(如果存在)验证打开新的命令行窗口CMD或PowerShell输入java -version和javac -version。如果正确显示版本信息说明配置成功。实操心得JAVA_HOME这个变量名是许多工具如Android SDK的默认查找键必须正确设置。修改环境变量后一定要关闭并重新打开命令行窗口否则新的配置不会生效。3.2 Node.js与npm安装下载安装访问Node.js官网下载16.x或18.x的LTS版本安装包.msi。运行安装基本上一路“Next”即可。安装程序会自动将node和npm添加到系统Path中。验证与换源打开命令行输入node -v和npm -v检查版本。为了后续安装包速度更快建议将npm的仓库源换成国内镜像如淘宝源npm config set registry https://registry.npmmirror.com/可选安装Appium Server命令行版如果你想使用命令行版本的Server此时可以全局安装npm install -g appium安装后可以通过appium -v检查版本通过appium命令启动服务。但新手我建议先用Appium Desktop。3.3 Android SDK命令行工具安装与环境变量配置这是最繁琐但也最重要的一环。下载访问Android开发者网站找到“Command line tools only”进行下载。解压到一个没有中文和空格的路径例如D:\Android\cmdline-tools。解压后你可能会看到一个tools文件夹。组织目录结构重要新版命令行工具要求特定的目录结构。你需要手动创建latest文件夹。最终结构应为D:\Android\cmdline-tools\latest\bin。将解压出来的tools文件夹内的所有内容移动到latest文件夹内。配置环境变量ANDROID_HOME或ANDROID_SDK_ROOT设置为你的Android SDK根目录例如D:\Android。这个变量很重要Appium和Gradle等工具会读取它。编辑Path添加以下条目%ANDROID_HOME%\cmdline-tools\latest\bin%ANDROID_HOME%\platform-tools(这个文件夹稍后通过SDK Manager安装)%ANDROID_HOME%\emulator(这个文件夹稍后通过SDK Manager安装)使用SDK Manager安装必要组件打开命令行使用sdkmanager命令安装。首先更新SDK Manager自身sdkmanager --update查看可安装列表sdkmanager --list安装核心组件请安装一个你需要的API Level例如33对应Android 13sdkmanager platform-tools platforms;android-33 emulator system-images;android-33;google_apis;x86_64platform-tools包含ADB、fastboot等关键工具。platforms;android-33Android 13的系统平台文件。emulator模拟器程序。system-images;...对应API Level的系统镜像用于创建模拟器。验证ADB重新打开命令行输入adb version。如果显示版本信息说明platform-tools安装成功且环境变量正确。踩坑记录sdkmanager命令可能因为网络问题下载失败或极慢。可以尝试在命令前添加代理或者手动从国内镜像站下载zip包放到SDK目录的相应文件夹下。另一个常见坑是目录结构不对导致sdkmanager命令找不到。3.4 Appium Desktop安装与使用下载安装从Appium官网的Releases页面下载Appium Desktop安装包。安装过程简单。启动与基础配置启动Appium Desktop你会看到一个简单的主界面。点击“Start Server”按钮默认会启动在http://127.0.0.1:4723。这个窗口不要关闭它表示翻译官Appium Server已经就位在监听命令。启动Inspector会话点击“Start Inspector Session”按钮这里就是配置你的“指挥官”与“士兵”连接信息的地方。我们需要填写一个JSON格式的“Desired Capabilities”。这是Appium工作的核心配置它告诉Server你要测试什么设备、什么应用。4. 第一个自动化脚本实战从零启动计算器环境准备就绪我们来实战。目标是写一个Python脚本启动安卓模拟器上的计算器App并点击按钮“5”。4.1 准备被测设备模拟器或真机使用模拟器打开命令行使用avdmanager list avd查看已有模拟器设备。如果没有则创建一个。可以通过Android Studio的AVD Manager图形界面创建也可以用命令行较复杂。假设我们通过Android Studio创建了一个名为Pixel_4_API_33的模拟器。启动模拟器可以在Android Studio的AVD Manager里点击启动也可以用命令emulator -avd Pixel_4_API_33。确保ADB能识别设备命令行输入adb devices应该能看到一个设备列表例如emulator-5554 device。使用真机手机开启“开发者模式”通常是在“关于手机”里连续点击“版本号”7次。在开发者选项中开启“USB调试”。用USB线连接电脑手机上可能会弹出“允许USB调试吗”的授权框点击确定。命令行输入adb devices应该能看到你的设备序列号后面跟着device字样。4.2 配置Desired Capabilities这是连接脚本、Appium Server和设备的桥梁。我们以Inspector的配置为例后续脚本中会用到同样的字典。{ platformName: Android, appium:platformVersion: 13, // 根据你的设备系统版本填写 appium:deviceName: emulator-5554, // 在 adb devices 里看到的名称 appium:automationName: UiAutomator2, // Android的自动化引擎 appium:appPackage: com.google.android.calculator, // 计算器的包名 appium:appActivity: com.android.calculator2.Calculator // 计算器的启动Activity }platformName: 操作系统固定为“Android”或“iOS”。appium:platformVersion: 设备的安卓版本号。appium:deviceName: 设备标识可以是adb devices列出的任意一个用于指定在哪台设备上运行。appium:automationName: 自动化驱动Android必须用UiAutomator2。appium:appPackage和appium:appActivity: 应用的包名和入口Activity。如何获取一个简单的方法是打开你要测的App然后在命令行输入adb shell dumpsys window | findstr mCurrentFocus(Windows) 或adb shell dumpsys window | grep mCurrentFocus(macOS/Linux)输出结果里就包含了这两个信息。在Appium Inspector里填写这些信息点击“Start Session”如果一切正常Inspector窗口会加载出手机当前界面的控件树和截图恭喜你连接成功了4.3 编写并运行Python测试脚本安装Python客户端库在命令行中运行pip install Appium-Python-Client。编写脚本创建一个名为first_test.py的文件。from appium import webdriver from appium.webdriver.common.appiumby import AppiumBy import time # 定义Desired Capabilities与Inspector中配置一致 desired_caps { platformName: Android, appium:platformVersion: 13, appium:deviceName: emulator-5554, appium:automationName: UiAutomator2, appium:appPackage: com.google.android.calculator, appium:appActivity: com.android.calculator2.Calculator, # 可选防止每次重置应用提升测试速度 # appium:noReset: True } # 初始化驱动连接至Appium Server # 确保Appium Server正在 http://127.0.0.1:4723 运行 driver webdriver.Remote(http://127.0.0.1:4723, desired_caps) try: # 等待应用加载隐式等待是一种全局等待策略 driver.implicitly_wait(10) # 通过资源ID定位数字5按钮并点击 # 使用Appium Inspector可以轻松获取元素的resource-id、xpath等信息 digit_5 driver.find_element(AppiumBy.ID, com.google.android.calculator:id/digit_5) digit_5.click() print(成功点击数字5按钮) # 为了看到效果等待2秒 time.sleep(2) except Exception as e: print(f运行过程中出现错误{e}) finally: # 无论是否发生异常最后都退出会话关闭驱动 driver.quit() print(测试结束驱动已关闭。)运行脚本确保Appium Desktop的Server正在运行那个有“Stop Server”按钮的窗口。确保你的模拟器或真机已连接且被ADB识别 (adb devices)。在命令行中进入脚本所在目录运行python first_test.py。如果一切顺利你会看到模拟器/手机上的计算器App被自动打开并且数字“5”的按钮被点击了一下可能会有高亮显示。命令行会输出“成功点击数字5按钮”。5. 环境搭建与脚本运行中的常见问题排查即使按照教程你也可能会遇到问题。这里汇总了高频问题及其解决方案。5.1 ADB设备识别失败现象adb devices列表为空或设备状态为unauthorized。排查线缆与端口换一根质量好的USB数据线尝试电脑上不同的USB端口。驱动问题Windows特有对于真机可能需要安装手机厂商的USB驱动。可以前往厂商官网下载或使用第三方工具如“驱动精灵”检测安装。授权弹窗真机连接时查看手机屏幕是否有“允许USB调试”的弹窗务必点击“确定”。ADB服务重启尝试adb kill-server然后adb start-server。模拟器特定确保模拟器已完全启动进入系统有时启动慢会导致ADB识别延迟。5.2 Appium Server启动失败或无法连接现象Appium Desktop启动Server时红字报错或Python脚本报ConnectionRefusedError。排查端口占用默认4723端口可能被其他程序占用。在Appium Desktop的设置中更换一个端口如4724同时修改Python脚本中的连接URL。Node.js或npm问题运行node -v和npm -v确认安装正确。如果是npm安装的appium尝试appium driver install uiautomator2来确保Android驱动已安装。权限问题macOS/Linux可能需要使用sudo权限运行Appium Desktop或命令。5.3 脚本执行时报“无法找到元素”现象脚本运行App也启动了但在find_element时报错提示无法定位元素。排查Capabilities配置错误检查appPackage和appActivity是否正确。用前面提到的adb shell dumpsys window命令再次确认。等待时间不足网络或设备慢可能导致元素未及时加载。增加implicitly_wait的时间或使用更灵活的WebDriverWait配合expected_conditions。定位方式错误元素ID可能动态变化或你获取的ID不对。务必使用Appium Inspector来实时查看和验证元素的定位方式。Inspector里高亮选中元素后它会给出推荐的选择器如ID、XPath。上下文Context问题如果应用内有WebView网页内容需要先切换到WEBVIEW上下文才能定位网页元素。使用driver.contexts和driver.switch_to.context进行切换。5.4 真机与模拟器特有的问题真机-安装应用失败如果脚本中使用了app能力指定APK路径来自动安装可能因为签名冲突、设备存储空间不足等原因失败。可以尝试手动安装APKadb install -r your_app.apk。模拟器-性能极慢确保电脑BIOS中已开启虚拟化技术Intel VT-x或AMD-V。在AVD Manager中编辑模拟器为其分配更多的RAM和CPU核心并使用x86_64或arm64-v8a的系统镜像以获得更好的性能。6. 进阶配置与最佳实践建议当你的第一个脚本跑通后可以关注以下方面来提升效率和脚本健壮性。6.1 使用Page Object Model (POM) 设计模式不要把所有元素定位和操作都堆在一个脚本里。POM模式将每个页面抽象成一个类页面的元素定位符和基本操作封装在类的方法中。测试脚本则调用这些页面对象的方法。这样做极大地提高了代码的可读性、复用性和可维护性。当UI发生变化时你通常只需要修改对应的页面对象类即可。6.2 配置化的Desired Capabilities将Capabilities配置写在单独的配置文件如JSON、YAML或Python配置文件中根据不同的测试环境如Android版本、设备型号、测试App动态加载。这样一套脚本就能轻松适配多环境运行。6.3 集成单元测试框架将Appium脚本与pytest或unittest框架结合。可以利用框架的Setup/Teardown机制如setUpClass/tearDownClass来管理驱动的初始化和退出利用断言Assert来进行结果验证并生成漂亮的测试报告。6.4 元素等待策略优化抛弃固定的time.sleep()它是脆弱的等待时间可能不够或过长。优先使用隐式等待driver.implicitly_wait(10)设置一个全局的最大寻找元素等待时间。显式等待针对特定元素和条件使用WebDriverWait配合expected_conditions这是最推荐的方式。from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait WebDriverWait(driver, 10) element wait.until(EC.presence_of_element_located((AppiumBy.ID, some_id)))6.5 日志与截图在关键步骤和断言失败时自动截图并保存这对于后期调试和报告至关重要。可以封装一个简单的截图函数在try...except块或pytest的钩子函数中调用。环境搭建是自动化测试的基石虽然过程有些繁琐但一旦打通后面就是一马平川。希望这份详尽的指南能帮你扫清障碍。记住遇到问题多查日志Appium Server的日志非常详细、善用搜索引擎错误信息直接复制去搜、勤用Appium Inspector这个“眼睛”大部分问题都能找到答案。动手去试去踩坑才是最快的学习路径。