增加测试代理的屏幕分辨率

GS *_*eam 4 tfs automated-tests azure-devops azure-pipelines-build-task azure-pipelines

当通过RDP访问时,对桌面WPF应用程序运行自动化测试在我的本地计算机和Azure VM Windows Server 2012R2上运行良好.

但是,当VM用作构建机器时,由TFS或VSTS上的测试代理控制,由于屏幕分辨率设置为1024x768屏幕分辨率,所有测试都会失败.在此显示设置之前,应用程序未配置为运行.有没有办法在部署测试代理时更改屏幕设置?

运行量角器测试时更改VSTS代理会话屏幕分辨率

小智 7

我们在Visual Studio + Azure解决方案上遇到了同样的问题.为了能够执行测试,我们需要在VM上获得比1027 x 768更高的分辨率.但由于它是Azure并且您为打开的机器付费,我们还希望在每次运行后关闭它们以降低成本(当你想要扩大一点时特别有用).

因此,真正的痛苦是没有简单的选项让VM以某种(指定的)分辨率启动.如果有比我要给你看的更简单的东西,请告诉我,但我找不到任何东西.所以我对Nessi提到的想法进行了投票.我们作为一种解决方法所做的是以下内容.

想法可能的解决方案

本质上我们使用这篇文章作为指导.我们使用的最重要的事情是Windows凭证部分和TERMSRV.

我们的设置

  • Visual Studio构建服务器
  • 四台Azure VM,一台机器是selenium-grid-hub,另外三台是节点

我们的方案

首先,我们让Build服务器启动资源组中的所有计算机(到目前为止一直很好).然后我们创建了一个Powershell脚本,该脚本在构建服务器上运行到节点以进行检查并等待RDP服务变为可用.这是必需的,因为在我们看到此服务处于活动状态之前可能需要长达10分钟.最后,我们在selenium-grid-hub VM上触发Powershell,以一定的分辨率与所有节点建立RDP连接.

更详细一点,确保一切都自动完成,无需任何手动输入:

  • 创建证书并将证书从每个节点导入集线器
  • 确保凭证存储在凭证管理器> Windows Credentails中(我们在所有计算机上创建了一个用户,以简化生活)
  • 创建用于检查RDP服务是否处于活动状态的脚本
    • 我们C:\Scripts\RDPServiceRunCheck.ps1在带有参数的VS构建块中调用此脚本(请参阅下面的示例)$(Password) $(Chrome-node) $(Username)
    • 所有这些参数都存储在构建服务器上的变量中
    • 这是github上脚本的代码
  • 创建用于以特定分辨率启动RDP的可执行文件
    • 我们C:\Scripts\Resolution.RDP.Remoting.exe在带有参数的VS构建块中调用此脚本(请参阅下面的示例)"C:\Scripts\$(Chrome-node).rdp" 1600 1200
    • 每个计算机的*.rdp文件存储(预先)在此文件夹中,并且1600 1200是我们要设置的分辨率
    • 这是github上可执行文件的代码


Edd*_*SFT 0

这是 Azure VM 的限制,因为它使用 RDP 来设置屏幕分辨率。有关详细信息,请参阅此链接:为什么无法增加或更改 Azure VM 中的显示分辨率

RDP 会话使用 RDP 显示驱动程序,而不是 Microsoft 虚拟机总线视频设备。

尽管 RemoteFX 功能比常规 RDP 能够支持更广泛的图形工作负载,但 RemoteFX 不适用于 Azure VM。