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

标签 tfs automated-tests azure-devops azure-pipelines azure-pipelines-build-task

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

但是,当 VM 用作构建机器时,由 TFS 或 VSTS 上的测试代理控制,所有测试都失败,因为屏幕分辨率设置为 1024x768 屏幕分辨率。在此显示设置之前,应用程序不会配置为运行。当我们部署测试代理时,有什么方法可以更改屏幕设置?

Change VSTS agent session screen resolution when running protractor tests

最佳答案

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

因此,没有简单的选项可以让 VM 以特定(指定)分辨率启动,这是一个真正的痛苦。如果有比我要向您展示的更简单的东西,请告诉我,但我找不到任何东西。所以我赞成 Nessi 提到的想法。作为解决方法,我们做了以下工作。

可能的解决方案的想法

本质上我们使用了this post作为指导方针。我们从中使用的最重要的东西是 Windows 凭据部分和 TERMSRV。

我们的设置

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

  • 我们的解决方案

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

    更详细一点,以确保一切都自动进行,无需任何手动输入:
  • 从每个节点创建证书并将其导出/导入到中心
  • 确保凭据存储在凭据管理器 > Windows 凭据尾部(我们在所有机器上创建了一个用户以使生活更轻松)
  • 创建用于检查 RDP 服务是否处于事件状态的脚本
  • 我们将此脚本称为 C:\Scripts\RDPServiceRunCheck.ps1 (参见下面的示例)在带有参数 $(Password) $(Chrome-node) $(Username) 的 VS 构建 block 中
  • 所有这些参数都存储在构建服务器上的变量中
  • 这是 script on github 的代码
  • 创建用于以特定分辨率启动 RDP 的可执行文件
  • 我们将此脚本称为 C:\Scripts\Resolution.RDP.Remoting.exe (参见下面的示例)在带有参数 "C:\Scripts\$(Chrome-node).rdp" 1600 1200 的 VS 构建 block 中
  • 每台机器的 *.rdp 文件(预先)存储在此文件夹中,1600 1200是我们要设置的分辨率
  • 这是 executable on github 的代码
  • 关于tfs - 增加测试代理的屏幕分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45829787/

    相关文章:

    azure - 如何知道管道使用的是 Microsoft 托管代理还是自托管代理

    azure-devops - Azure devops Yaml :how to set for loop over agent pool name

    visual-studio-2012 - 如何从 Visual Studio 2012 中的变更集详细信息打开实际文件,而不是一些散列只读服务器副本?

    tfs - 在 TFS2008 中重新设置分支的父级

    visual-studio-2010 - 更轻松的 TFS 构建定义更新

    android - 如何在 Android Studio v0.5.2 中运行单独的测试方法

    java - 使用azure devops的rest api

    tfs - 提取在两个标签之间更改的所有文件或更改集

    testing - 用小团队(和很少的时间)对大型项目进行手动与自动测试

    PHPUnit + Selenium 2 : Action on ajax load