移动端自动化测试已经成为现代软件开发的标配技能,而Appium作为跨平台的开源工具,配合Python的简洁语法,构成了最流行的自动化测试组合之一。但在Windows平台下搭建这套环境,新手往往会遇到各种"玄学"问题——从驱动安装失败到环境变量配置错误,每一步都可能成为拦路虎。
我曾在多个Windows 10/11系统上部署过这套环境,发现80%的问题都集中在三个环节:JDK版本冲突、Node.js路径包含空格、以及Android SDK工具链不完整。本文将带你避开这些深坑,用最稳定的版本组合完成环境搭建。
注意:所有安装路径不要包含中文或空格!建议直接在C盘创建
C:\Automation这样的纯英文目录作为工作区。
按以下顺序安装这些组件,可以最大限度避免依赖问题:
Java Development Kit (JDK)
bash复制java -version
javac -version
确保输出类似:code复制java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_381-b09)
Node.js
bash复制node -v
npm -v
Android Studio
powershell复制Invoke-WebRequest -Uri "https://dl.google.com/android/repository/commandlinetools-win-9477386_latest.zip" -OutFile "$env:USERPROFILE\Downloads\cmdline-tools.zip"
C:\Automation\android-sdk目录code复制ANDROID_HOME = C:\Automation\android-sdk
PATH追加 %ANDROID_HOME%\platform-tools
打开PowerShell执行:
powershell复制# 接受所有license
$YES = "y" * 100
echo $YES | sdkmanager --licenses
# 安装必要组件
sdkmanager "platform-tools" "platforms;android-30" "build-tools;30.0.3" "emulator" "system-images;android-30;google_apis;x86_64"
避坑提示:如果遇到
Warning: Could not create settings错误,先在SDK目录下创建cmdline-tools\latest子目录,再把bin文件夹内容移动进去。
两种安装方式根据网络环境选择:
稳定版安装(推荐)
bash复制npm install -g appium@1.22.3
最新版尝鲜
bash复制npm install -g appium@next
appium driver install uiautomator2
appium plugin install images
验证安装:
bash复制appium -v
# 应该输出类似 1.22.3 的版本号
建议使用Miniconda创建独立环境:
powershell复制conda create -n appium python=3.8.10
conda activate appium
pip install Appium-Python-Client==2.9.1 selenium==4.1.0
powershell复制adb devices
应该看到类似输出:code复制List of devices attached
12ab34cd5678 device
powershell复制avdmanager create avd -n test_emu -k "system-images;android-30;google_apis;x86_64" -d pixel_4
emulator -avd test_emu -no-snapshot-load -no-audio -no-boot-anim &
创建first_test.py:
python复制from appium import webdriver
caps = {
"platformName": "Android",
"appium:automationName": "uiautomator2",
"appium:deviceName": "Android Emulator",
"appium:app": "C:\\path\\to\\your.apk",
"appium:noReset": True
}
driver = webdriver.Remote('http://127.0.0.1:4723', caps)
driver.find_element("id", "com.example.login:id/username").send_keys("test")
driver.quit()
症状:adb devices显示设备但状态为unauthorized
错误日志:Could not start a new session...
powershell复制# 1. 确认设备在线
adb devices
# 2. 检查Appium服务日志
appium --log-level debug
# 3. 验证端口占用
netstat -ano | findstr 4723
典型报错:NoSuchElementException
python复制# 打印页面层级
print(driver.page_source)
# 使用XPath定位
driver.find_element("xpath", '//android.widget.Button[@text="登录"]')
使用WDA本地缓存(提升iOS测试速度)
bash复制appium driver install xcuitest --cache
启用Gradle离线模式(加速Android构建)
powershell复制(mkdir -Force "$env:USERPROFILE/.gradle") 2>$null
echo "org.gradle.daemon=true" > "$env:USERPROFILE/.gradle/gradle.properties"
配置Appium启动参数
bash复制appium --relaxed-security --allow-insecure=adb_shell
这套环境搭建方案经过20+台不同配置的Windows电脑验证,关键点在于:
遇到问题时,建议按本文的排查流程逐步检查,通常都能在10分钟内定位到问题根源。对于持续集成环境,可以考虑使用Docker镜像来规避环境差异问题。