多iOS模拟器并行时WebDriverAgent报xcodebuild退出码75/SIGTERM如何解决
多iOS设备并行执行自动化脚本WebDriverAgent报错解决方案
s already started! [WebDriverAgent] xcodebuild exited with code '75' and signal 'null'
[WebDriverAgent] xcodebuild exited with code 'null' and signal 'SIGTERM'
问题根因
该报错仅在多台iOS设备并行时触发,本质是多进程调用xcodebuild启动WebDriverAgent(WDA)时产生资源冲突:默认配置下所有WDA进程复用同一服务端口、Xcode派生数据缓存目录,单台执行或跨Android并行时仅会启动1个WDA进程,因此不会触发冲突。
具体修复步骤
- 为每台iOS设备分配独立的WDA服务端口
为每个并行执行的iOS节点单独配置wdaLocalPort参数,端口可从8100~8200区间选择不重复的值。如果使用Appium作为测试驱动,需同步为每个节点配置不重复的mjpegServerPort参数,避免截图流服务端口占用。 - 配置独立的Xcode派生数据目录
给每个并行任务单独指定derivedDataPath参数,路径可按设备UDID命名,比如./wda_build/[设备UDID]/,执行前自动创建对应目录,避免多进程读写默认全局DerivedData目录产生冲突。 - 每个设备启动独立WDA实例
配置参数useNewWDA=true,禁用全局WDA复用机制,每个iOS设备的执行进程单独触发WDA的编译、启动流程,执行完成后自动销毁对应WDA进程,避免残留进程影响下一次执行。 - Cucumber并行执行适配
若使用cucumber-parallel插件实现并行,可在cucumber.yml或运行命令中,将设备UDID、WDA端口、派生数据路径作为环境变量传入每个执行线程,示例运行命令如下:cucumber --parallel 4 --format pretty DEVICE_UDID=$当前设备UDID WDA_PORT=$分配端口 DERIVED_DATA_PATH=$对应目录路径 - 执行前添加全局清理逻辑
每次并行任务启动前,执行清理命令杀掉所有残留的WDA相关进程:pkill -9 xcodebuildpkill -9 WebDriverAgent
避免上一次执行的残留进程导致端口或文件占用。
真机并行额外配置
如果需要实现多台iOS真机并行,除上述配置外,需要为每台真机的WDA设置唯一的Bundle ID,避免证书签名冲突导致启动失败。
内容的提问来源于stack exchange,提问作者Haseeb Ali Khan
相关产品推荐
相关产品推荐

