Squish无法启动cmd.exe:外部设备命令提示符与explorer.exe自动化求助
解决Squish无法启动cmd.exe/explorer.exe的自动化方案
问题根源
cmd.exe和explorer.exe是Windows原生程序,而非Qt应用,直接套用Squish的Qt应用启动逻辑必然失效。需要借助Squish对Windows原生程序的支持能力,调整配置或通过代码手动启动后附加进程。
可行实现方法
方法1:正确配置AUT为Windows应用类型
- 打开Squish IDE,进入AUT Manager
- 点击「添加」,选择
Windows Application类型 - 填入目标程序的完整路径:
- cmd.exe:
C:\Windows\System32\cmd.exe - explorer.exe:
C:\Windows\explorer.exe
- cmd.exe:
- 保存配置后,直接用以下代码启动:
squish.startApplication("cmd.exe") # 替换为explorer.exe即可启动资源管理器
方法2:手动启动程序后附加到进程
如果AUT配置仍有问题,可通过系统API先启动程序,再用Squish附加到目标进程:
import os import squish import time # 启动cmd.exe(可替换为explorer.exe) target_path = "C:\\Windows\\System32\\cmd.exe" os.startfile(target_path) # 等待程序启动完成(根据实际情况调整等待时间) time.sleep(2) # 附加到目标进程 squish.attachToApplication("cmd.exe")
针对explorer.exe,若需启动新实例而非附加已有进程,可改用以下命令启动:
os.system('start explorer.exe "C:\\"') # 启动指向C盘的新资源管理器窗口
注意事项
- 确保Squish安装时包含了Windows扩展组件(默认安装已包含)
- 64位系统下,注意区分
System32(64位程序)和SysWOW64(32位程序)路径,选择对应版本的cmd/explorer - 运行Squish时建议以管理员权限启动,避免进程附加失败
- 附加进程前需确保程序已完全启动,可结合
squish.waitForObject替代固定sleep,提升稳定性
内容的提问来源于stack exchange,提问作者raghav goyal
相关产品推荐
相关产品推荐

