You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Python运行Airtest自动化项目(.air)并实现双Android设备并行执行?

刚好之前帮朋友解决过类似的需求,给你分享两个可行的方案,一个是你想要的通过Python启动两个Airtest IDE窗口分别执行,另一个是更高效的直接用命令行并行运行(不用开IDE界面),你可以按需选择:

方案1:启动两个Airtest IDE窗口并行执行

这个方案完全匹配你想要的"打开两个IDE窗口对应两台设备执行"的需求,核心是用Python的subprocess模块启动两个独立的Airtest IDE进程,分别指定设备和项目路径:

步骤&代码示例

import subprocess
import time

# 替换成你自己的路径和设备ID
AIRTEST_IDE_PATH = r"C:\Program Files\AirtestIDE\AirtestIDE.exe"  # Windows路径示例
# AIRTEST_IDE_PATH = "/Applications/AirtestIDE.app/Contents/MacOS/AirtestIDE"  # Mac路径示例
AIR_PROJECT_PATH = r"D:\test_projects\my_auto_test.air"
DEVICE_IDS = ["emulator-5554", "emulator-5556"]  # 你的两台设备ID

# 启动两个IDE进程
running_processes = []
for device_id in DEVICE_IDS:
    # 构造启动命令:指定设备、打开项目、自动运行
    launch_cmd = [
        AIRTEST_IDE_PATH,
        "--device", f"Android:///{device_id}",
        "--script", AIR_PROJECT_PATH,
        "--auto_run"  # 打开IDE后自动执行脚本,不用手动点运行
    ]
    # 启动进程
    proc = subprocess.Popen(launch_cmd)
    running_processes.append(proc)
    time.sleep(2)  # 给IDE启动留2秒缓冲,避免同时启动导致资源冲突

# 等待所有测试完成
for proc in running_processes:
    proc.wait()

参数说明

  • --device:指定要连接的安卓设备,格式是Android:///{设备ID}
  • --script:指定要运行的.air项目路径
  • --auto_run:让IDE打开后自动执行脚本,省去手动点击运行的步骤
方案2:用Airtest命令行工具并行运行(更轻量)

如果不需要IDE的可视化界面,更推荐用Airtest自带的airtest run命令行工具,这样不用启动IDE,资源占用更低,运行效率更高:

代码示例

import subprocess

AIR_PROJECT_PATH = r"D:\test_projects\my_auto_test.air"
DEVICE_IDS = ["emulator-5554", "emulator-5556"]

running_processes = []
for device_id in DEVICE_IDS:
    # 构造命令行运行指令
    cmd = [
        "airtest", "run", AIR_PROJECT_PATH,
        "--device", f"Android:///{device_id}",
        "--log", f"./test_logs/{device_id}"  # 每个设备生成单独的日志文件夹
    ]
    proc = subprocess.Popen(cmd)
    running_processes.append(proc)

# 等待所有测试结束
for proc in running_processes:
    proc.wait()
关键注意事项
  • 确保两台设备都已通过adb正常连接,运行adb devices能看到两个设备处于device状态
  • Windows系统下路径要注意用原始字符串(加r前缀),避免转义字符问题
  • 如果启动IDE失败,检查IDE路径是否正确,或者尝试用管理员权限运行Python脚本
  • 并行运行时,给每个设备分配独立的日志目录,避免日志文件冲突

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

火山引擎 最新活动