diff --git a/docs/EXECUTE_SETUP_GUIDE.md b/docs/EXECUTE_SETUP_GUIDE.md index 179245a..d69435a 100644 --- a/docs/EXECUTE_SETUP_GUIDE.md +++ b/docs/EXECUTE_SETUP_GUIDE.md @@ -8,13 +8,40 @@ ## 目录 -1. [架构概览](#1-架构概览) -2. [PC Web 端配置 (Playwright)](#2-pc-web-端配置-playwright) -3. [Android 端配置 (Appium)](#3-android-端配置-appium) -4. [iOS 端配置 (Appium + XCUITest)](#4-ios-端配置-appium--xcuitest) -5. [验证环境](#5-验证环境) -6. [运行 Execute 战区](#6-运行-execute-战区) -7. [常见问题](#7-常见问题) +1. [一键配置(Windows 用户优先看这里)](#一键配置windows-用户优先看这里) +2. [架构概览](#1-架构概览) +3. [PC Web 端配置 (Playwright)](#2-pc-web-端配置-playwright) +4. [Android 端配置 (Appium)](#3-android-端配置-appium) +5. [iOS 端配置 (Appium + XCUITest)](#4-ios-端配置-appium--xcuitest) +6. [验证环境](#5-验证环境) +7. [运行 Execute 战区](#6-运行-execute-战区) +8. [常见问题](#7-常见问题) + +--- + +## 一键配置(Windows 用户优先看这里) + +如果你用的是 Windows,我们提供了一键配置脚本,自动处理 PATH、环境变量、验证所有依赖: + +```batch +cd QaAutomationHub +scripts\setup_execute_env.bat +``` + +这个脚本会: +- 自动检测 Android SDK 路径 +- 设置 `ANDROID_HOME`、`sdkmanager`、`emulator`、`adb` 到 PATH +- 永久写入系统 PATH(以后开新窗口也生效) +- 逐项验证 Python / Playwright / Java / adb / Appium / Agent +- 打印常用命令速查卡片 + +**你要手动做的只剩下**: + +1. 装 Playwright 浏览器(如果脚本提示未安装) +2. 创建 Android 模拟器(只需一次) +3. 启动 Appium Server + +下面手动步骤为 macOS / Linux 用户和需要精细控制的场景准备。 --- @@ -429,10 +456,10 @@ source .venv/bin/activate ```bash # 新开一个终端窗口 -appium --allow-insecure chromedriver_autodownload +appium --allow-insecure "uiautomator2:chromedriver_autodownload" # 或后台运行 -appium --allow-insecure chromedriver_autodownload & +appium --allow-insecure "uiautomator2:chromedriver_autodownload" & ``` ### 6.3 手动运行生成的脚本 @@ -516,11 +543,22 @@ sudo apt install fonts-noto-cjk ### Q5: Appium 报 `chrome-driver` 相关错误 -**解决**: Android WebView/H5 测试需要匹配的 chromedriver: +**解决**: Android WebView/H5 测试需要匹配的 chromedriver。 +注意 Appium v3.x 和 v2.x 的参数格式不同: + ```bash +# Appium v3.x(当前版本) — 格式: 驱动名:功能名 +appium --allow-insecure "uiautomator2:chromedriver_autodownload" + +# Appium v2.x — 旧格式 appium --allow-insecure chromedriver_autodownload ``` +也可以用项目自带的脚本一键启动: +```batch +scripts\start_appium.bat +``` + ### Q6: 部分设备连接后 `adb` 不识别 **解决**: diff --git a/scripts/setup_execute_env.bat b/scripts/setup_execute_env.bat new file mode 100644 index 0000000..c37e067 --- /dev/null +++ b/scripts/setup_execute_env.bat @@ -0,0 +1,162 @@ +@echo off +chcp 65001 >nul +setlocal enabledelayedexpansion + +echo ======================================== +echo Agentic QE Fleet - Execute 环境一键配置 +echo ======================================== +echo. + +:: ── 1. 自动检测 Android SDK 路径 ── +set "SDK_PATH=" + +:: 默认路径 +if exist "%LOCALAPPDATA%\Android\Sdk" ( + set "SDK_PATH=%LOCALAPPDATA%\Android\Sdk" +) + +:: Android Studio 自定义路径 +if exist "C:\Android\Sdk" ( + set "SDK_PATH=C:\Android\Sdk" +) + +:: 从 Android Studio 配置文件读取 +if exist "%APPDATA%\Google\AndroidStudio*\options\sdkManager.xml" ( + for /f "tokens=*" %%a in ('findstr /c:"sdk.root" "%APPDATA%\Google\AndroidStudio*\options\sdkManager.xml" 2^>nul') do ( + echo %%a | findstr "sdk.root" >nul + ) +) + +if "%SDK_PATH%"=="" ( + echo [WARN] 未自动检测到 Android SDK 路径 + echo 请手动输入 SDK 路径 + echo 示例: C:\Users\23184\AppData\Local\Android\Sdk + set /p SDK_PATH="SDK 路径: " +) + +echo [INFO] Android SDK: %SDK_PATH% +echo. + +:: ── 2. 统一设置环境变量 ── +echo [STEP] 设置环境变量... + +set "ANDROID_HOME=%SDK_PATH%" +set "ANDROID_SDK_ROOT=%SDK_PATH%" + +:: SDK 内部工具路径 +set "SDK_CMDLINE=%SDK_PATH%\cmdline-tools\latest\bin" +set "SDK_TOOLS_BIN=%SDK_PATH%\tools\bin" +set "SDK_EMULATOR=%SDK_PATH%\emulator" +set "SDK_PLATFORM_TOOLS=%SDK_PATH%\platform-tools" + +:: Java (自动搜索) +set "JAVA_PATH=" +if exist "C:\Program Files\Android\Android Studio\jbr\bin" ( + set "JAVA_PATH=C:\Program Files\Android\Android Studio\jbr\bin" +) +if exist "C:\Program Files\Java\jdk-17\bin" ( + set "JAVA_PATH=C:\Program Files\Java\jdk-17\bin" +) + +:: ── 3. 追加到当前会话 PATH ── +set "NEW_PATH=%SDK_CMDLINE%;%SDK_TOOLS_BIN%;%SDK_EMULATOR%;%SDK_PLATFORM_TOOLS%" +if not "%JAVA_PATH%"=="" set "NEW_PATH=%NEW_PATH%;%JAVA_PATH%" +set "PATH=%PATH%;%NEW_PATH%" + +echo [OK] 当前窗口 PATH 已配置(关窗后失效) +echo. + +:: ── 4. 永久写入用户 PATH(这样以后每个新窗口都能用) ── +echo [STEP] 永久写入系统 PATH... + +set "PERMANENT=%SDK_CMDLINE%;%SDK_TOOLS_BIN%;%SDK_EMULATOR%;%SDK_PLATFORM_TOOLS%" +if not "%JAVA_PATH%"=="" set "PERMANENT=%PERMANENT%;%JAVA_PATH%" + +for /f "usebackq tokens=2,*" %%A in (`reg query "HKCU\Environment" /v PATH 2^>nul`) do set "USER_PATH=%%B" +echo !USER_PATH! | findstr /c:"%SDK_CMDLINE%" >nul +if %errorlevel% neq 0 ( + reg add "HKCU\Environment" /v PATH /t REG_EXPAND_SZ /d "!USER_PATH!;%PERMANENT%" /f >nul 2>&1 + echo [OK] 已永久写入(重启终端生效) +) else ( + echo [OK] PATH 已存在,跳过写入 +) +echo. + +:: ── 5. 验证环境 ── +echo ======================================== +echo 环境验证 +echo ======================================== +echo. + +echo [1/7] Python... +python --version 2>nul && echo [OK] || echo [FAIL] Python 未安装 +echo. + +echo [2/7] Playwright... +python -c "from playwright.sync_api import sync_playwright; print(' [OK]')" 2>nul || ( + echo [WARN] Playwright 未安装,正在安装... + pip install playwright + playwright install chromium +) +echo. + +echo [3/7] Java... +java -version 2>&1 | findstr "version" >nul && echo [OK] || echo [WARN] Java 未找到(Appium 需要) +echo. + +echo [4/7] adb... +adb --version 2>nul | findstr "Android" >nul && echo [OK] || echo [WARN] adb 未找到(Android 设备连接需要) +adb devices 2>nul +echo. + +echo [5/7] Appium Server... +appium --version 2>nul && echo [OK] || echo [WARN] Appium 未安装 +echo. + +echo [6/7] Appium Driver (uiautomator2)... +appium driver list --installed 2>nul | findstr "uiautomator2" >nul && echo [OK] || ( + echo [WARN] uiautomator2 驱动未安装 + echo 安装命令: appium driver install uiautomator2 +) +echo. + +echo [7/7] Fleet Agent 验证... +cd /d "%~dp0\.." +python scripts\fleet_runner.py validate 2>nul && echo [OK] || echo [FAIL] 请确认在项目根目录下 +echo. + +:: ── 6. 输出快捷命令卡片 ── +echo ======================================== +echo 常用命令速查 +echo ======================================== +echo. +echo 启动 Appium Server: +echo appium --allow-insecure "uiautomator2:chromedriver_autodownload" +echo. +echo 查看已连接设备: +echo adb devices +echo. +echo 创建 Android 模拟器(只需一次): +echo avdmanager create avd -n test_device -k "system-images;android-34;google_apis;x86_64" -d pixel_6 +echo. +echo 启动模拟器: +echo emulator -avd test_device +echo. +echo 运行 Execute 战区: +echo /qe-fleet execute source_docs/requirements_raw/需求.docx +echo. +echo 一键验证环境: +echo %~dp0setup_execute_env.bat +echo. + +echo ======================================== +echo 配置完成! +echo ======================================== +echo 如果 Android 模拟器还没创建,现在执行: +echo avdmanager create avd -n test_device -k "system-images;android-34;google_apis;x86_64" -d pixel_6 +echo. +echo 如果还没装 uiautomator2 驱动: +echo appium driver install uiautomator2 +echo. + +pause diff --git a/scripts/start_appium.bat b/scripts/start_appium.bat new file mode 100644 index 0000000..d171f52 --- /dev/null +++ b/scripts/start_appium.bat @@ -0,0 +1,21 @@ +@echo off +echo ========================================== +echo 启动 Appium Server +echo ========================================== +echo. + +:: 自动探测 adb 设备 +adb devices 2>nul | findstr "device$" >nul +if %errorlevel% neq 0 ( + echo [WARN] 未检测到 Android 设备/模拟器 + echo 请先运行: emulator -avd test_device + echo 或连接 Android 真机 + echo. +) + +:: Appium v3 格式: 驱动名:功能名 +echo [INFO] 启动 Appium Server... +echo [INFO] 支持 chromedriver 自动下载(WebView/H5 测试需要) +echo. + +appium --allow-insecure "uiautomator2:chromedriver_autodownload"