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

如何用Appium、WinAppDriver、VS及C#自动化无支持的桌面应用测试?

针对无自动化支持的桌面应用的WinAppDriver/Appium自动化建议
  • 升级WinAppDriver版本
    你当前用的WinAppDriver 0.7版本较老,新版(如1.2+)对无原生自动化支持的应用兼容性更好,优化了元素识别逻辑。卸载旧版后安装最新稳定版,再用inspect.exe重新排查元素。

  • 调整inspect.exe的捕获方式
    打开inspect.exe后,点击顶部「Options」菜单,勾选「Enable Highlight」和「Show ToolTips」,用「Find Tool」(瞄准图标)点击应用各区域。若仍无元素,切换到「Raw View」模式查看底层UI树,部分无自动化支持的应用会暴露窗口句柄或原始控件信息。另外要确认应用框架:如果是Qt应用,需启用Qt自动化插件;如果是Electron应用,要确保打包时开启了自动化支持。

  • 降级到基于坐标和窗口句柄的操作方案
    若完全识别不到元素,只能依赖坐标和窗口句柄模拟操作:

    • 用WinAppDriver的Driver.Manage().Window获取应用窗口句柄,通过Actions类模拟鼠标、键盘操作,示例代码:
      // 最大化窗口
      var window = Driver.Manage().Window;
      window.Maximize();
      // 模拟点击坐标(100,200)
      new Actions(Driver).MoveByOffset(100, 200).Click().Perform();
      
    • 结合Windows API(如user32.dll的SendMessage、mouse_event)补充WinAppDriver的不足,直接向窗口发送消息模拟输入。
  • 检查Appium与WinAppDriver的配置兼容性
    确认Appium启动参数正确:app指向应用可执行文件路径,platformName设为Windows,deviceName设为WindowsPC,示例代码:

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.SetCapability("app", @"C:\Path\To\Your\AccountingApp.exe");
    capabilities.SetCapability("platformName", "Windows");
    capabilities.SetCapability("deviceName", "WindowsPC");
    Driver = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723"), capabilities);
    

    启动WinAppDriver时加--verbose参数查看日志,排查应用启动时的权限不足、进程挂载异常等问题。

  • 尝试应用兼容模式
    右键应用可执行文件,进入「属性」-「兼容性」,勾选「以管理员身份运行此程序」,或切换到Windows 7/8兼容模式,部分旧应用在兼容模式下会暴露更多自动化接口。

内容的提问来源于stack exchange,提问作者Muhammad Umair Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:00:50