You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否下载Appium v1.7.2命令行工具(CLI)?如何通过代码启动其服务

关于通过代码启动Appium v1.7.2服务的解决方案

你理解的完全没错——Appium Desktop版本确实没办法通过代码/程序直接启动,它本质是带可视化调试界面的工具,主要用于手动调试定位元素这类场景,没有提供程序化启动的接口。不过你完全可以单独安装Appium v1.7.2的CLI版本来满足框架自动化启动的需求,下面是具体步骤和示例脚本:

第一步:安装Appium v1.7.2 CLI

Appium CLI基于Node.js开发,所以先确保你的环境已经安装了兼容的Node.js版本(建议用Node.js 8.x或10.x,因为v1.7.2是比较早期的版本,过高的Node版本可能会出现兼容性问题)。然后通过npm全局安装指定版本:

npm install -g appium@1.7.2

安装完成后,在终端/命令行输入appium -v,如果能输出1.7.2就说明安装成功了。

第二步:代码启动/停止Appium服务的示例

Python版本(用subprocess模块)

这个示例可以直接集成到你的Python自动化框架中,实现服务的自动启停:

import subprocess
import time

def start_appium_server():
    # 启动命令:指定服务端口、bootstrap端口,日志输出到本地文件
    appium_cmd = ["appium", "-p", "4723", "-bp", "4724", "--log", "./appium_runtime_log.txt"]
    # Windows环境需要加上shell=True,Linux/macOS可以去掉
    appium_process = subprocess.Popen(
        appium_cmd,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        shell=True
    )
    # 等待服务初始化完成,时间可以根据你的环境调整
    time.sleep(5)
    # 返回服务是否启动成功(进程未退出则说明启动成功)
    return appium_process if appium_process.poll() is None else None

def stop_appium_server(process):
    if process and process.poll() is None:
        # 终止进程并等待退出
        process.terminate()
        process.wait()
        print("Appium服务已成功停止")

# 框架中使用示例
if __name__ == "__main__":
    appium_server = start_appium_server()
    if appium_server:
        print("Appium v1.7.2服务启动成功!")
        # --------------------------
        # 这里执行你的自动化测试脚本逻辑
        # --------------------------
        # 测试完成后停止服务
        stop_appium_server(appium_server)
    else:
        print("Appium服务启动失败,请检查环境配置或端口是否被占用")

Java版本(用ProcessBuilder)

如果你的自动化框架是Java编写的,可以用以下示例:

import java.io.IOException;

public class AppiumServerHandler {
    private Process appiumProcess;

    public void startAppiumServer() throws IOException, InterruptedException {
        // 构建启动命令,自定义端口和日志路径
        ProcessBuilder processBuilder = new ProcessBuilder(
            "appium", "-p", "4723", "-bp", "4724", "--log", "./appium_runtime_log.txt"
        );
        // 启动进程
        appiumProcess = processBuilder.start();
        // 等待服务启动完成
        Thread.sleep(5000);
        
        if (appiumProcess.isAlive()) {
            System.out.println("Appium v1.7.2服务启动成功!");
        } else {
            System.err.println("Appium服务启动失败,请检查环境或端口状态");
        }
    }

    public void stopAppiumServer() {
        if (appiumProcess != null && appiumProcess.isAlive()) {
            appiumProcess.destroy();
            System.out.println("Appium服务已停止");
        }
    }

    public static void main(String[] args) {
        AppiumServerHandler handler = new AppiumServerHandler();
        try {
            handler.startAppiumServer();
            // --------------------------
            // 执行你的自动化测试逻辑
            // --------------------------
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        } finally {
            handler.stopAppiumServer();
        }
    }
}

一些注意事项

  • 端口冲突:如果4723端口被占用,可以修改-p参数指定其他空闲端口,-bp是Appium和设备通信的bootstrap端口,也要确保不被占用
  • Windows环境:如果输入appium命令提示找不到,需要把npm的全局安装路径(一般是C:\Users\<你的用户名>\AppData\Roaming\npm)添加到系统环境变量的PATH中
  • 日志:示例中把日志输出到本地文件,方便后续排查问题,你也可以根据需求调整日志级别或输出方式

内容的提问来源于stack exchange,提问作者Raman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:37:13