我正在尝试运行 UI 测试(使用白色编写)。当我使用 NUnitConsole 运行它们时,一切正常。当我尝试使用 TeamCity 运行它们时,出现以下异常Test(s) failed. White.Core.UIItems.UIActionException : Couldn't find window with title Form1 in process 4132, after waiting for 5000 ms
。可能有什么问题?我该怎么做才能使测试通过?
4 回答
不仅需要将构建代理设置为与桌面交互,而且必须显示桌面才能使 UI 自动化工作 - 不能锁定桌面并且不能运行屏幕保护程序。您的代理在无头机器上吗?如果您使用 RDP 连接到代理以检查事物,当您关闭 RDP 时,它会锁定桌面。在这种情况下,自动化将失败。不要使用 RDP,而是使用 VNC 查看器登录到盒子,而不是 RDP,因为当您关闭桌面时,VNC 不会锁定桌面。
另一个需要考虑的问题是网络访问。如果您将 TC 代理作为可以访问桌面的服务运行,那么它将在无法访问网络共享等的服务帐户下运行...如果这是一个问题,那么您将无法运行 TC代理即服务,而是需要使用域用户登录并启动 agent.bat 文件以启动代理。
花了很多时间解决这个问题。
主要步骤:
- 您需要安装了 teamcity 构建代理的单独计算机。电脑应该有显示器和鼠标。
- 代理不应该作为 Windows 服务启动和运行(如果需要,禁用它)。
- 您应该从 .bat 文件(以管理员身份)启动 TeamCity 构建代理。为此,请使用参数转到
TeamCityBuildAgentfolder\bin
并启动agent.bat
文件start
- 一段时间后禁用计算机的屏幕睡眠/锁定。您的测试将需要桌面来进行 UI 操作。
如果您做对了所有事情,您应该能够在 TeamCity 的“代理”菜单中看到您的构建代理处于活动状态。
您还可以自动启动 TeamCity 代理(在选定用户登录时):
自动化用户的登录。更多说明在这里
在任务计划程序中创建任务,该任务将在用户登录时以管理权限(具有最高权限)启动构建代理
确保将自动登录的用户拥有所有必要的权限(运行脚本、执行文件操作等)
重要的!
- 以这种方式运行 UI 测试是一个潜在的安全漏洞,因此请确保非授权人员无法访问运行此测试的计算机。
- 请记住,在运行 UI 测试时,计算机不应被锁定或处于睡眠模式。
您可能必须让 Teamcity 构建代理与桌面交互。
运行 -> services.msc -> 选择 TeamCity Build 代理并右键单击 -> 属性 -> 登录选项卡 -> 选中“允许服务与桌面交互”
编辑:
如果这不起作用,请停止代理服务,转到构建代理文件夹( c:\teamcity\buildagent\bin ?)并发出agent.bat start
然后触发测试。
建议在虚拟机上运行 UI 测试。
似乎是最可靠的解决方案。