如何更改Amazon EC2 Windows计算机的分辨率?


9

(我在将其发布在此处,ServerFault和StackOverFlow之间进行了辩论。为此,对此进行了解决。希望它在正确的位置。)

我们将Selenium Grid 2与Amazon EC2 Windows计算机(使用Amazon的CloudFormation API启动)一起运行UI测试套件。我的问题是,如何更改该机器的分辨率?

如果我远程使用它,则可以使用“远程桌面”指定分辨率。但这显然不会永久改变分辨率。当我们运行测试时,分辨率是如此之小,以至于浏览器将元素压缩在一起并导致测试失败。

有任何想法吗?我可以在CloudFormation配方中添加一些内容吗?创建AMI之前,我可以对图像做些什么吗?

设备管理器的屏幕截图

谢谢。


1
有趣。我想象它必须是标准实例,因此没有分配给该实例的CUDA图形卡。因此,您正在使用标准的虚拟图形卡。在设备管理器中看起来像什么?您可以发布屏幕截图吗?您可以通过rdp-ing来将其提高到控制台:mstsc.exe /console
Paul

@Paul,我添加了一个屏幕截图。这是一个标准实例。Windows Server R2。谢谢。
Joel 2012年

@Joel,您解决了吗?我已经尝试了几天的方法,包括使用下面的答案,但到目前为止还没有运气。重新启动或从AMI创建(即使已将其应用了答案的AMI)后,它们仍以1024x768开始。
肖恩

Answers:


4

免责声明:TightVNC不安全,因此,如果安全性成为问题,则可能需要找到其他方法。整个过程仅需几分钟,因此安全漏洞很小,但是仍然存在。

  1. 在EC2实例上安装TightVNC服务器,以便您可以登录控制台
  2. 断开所有用户远程桌面会话的连接,并将会话返回到控制台
  3. 使用TightVNC Viewer登录EC2实例控制台,确保已为该连接打开端口5900
    • 右键点击桌面,然后选择“屏幕分辨率”
    • 选择“高级设置”
    • 选择“列出所有模式”
    • 选择更高的分辨率

这的确使我可以更改分辨率,我认为该分辨率可以解决我的实际问题,但事实并非如此。通过任务计划程序在Windows 2008 ec2服务器上自动运行的硒测试仍在小分辨率下运行。即使进行了上述更新,它们仍以较小的分辨率运行。是的,在硒配置中将窗口设置为最大化分辨率。
复制和粘贴

1

您可以通过修改两个注册表值来更改屏幕分辨率。这两个值是: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.XResolution HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.YResolution其中GUID是随机生成的GUID。

实际上,您可以指定任何XResolution和YResolution值,只要它们是十六进制的即可。

注意:对于CRT显示器,指定荒谬的分辨率可能会损坏显示器。对于LCD监视器,您的监视器可能不再显示任何用户界面。更改屏幕分辨率的一种好方法是记下要用其填充屏幕宽度的像素数量(这是XResolution)和要在屏幕高度上保留的像素数量(YResolution)。Windows计算器(在Server Core中不可用,您必须找到其他计算机或硬件高级计算器)提供了一种将十进制数转换为十六进制数的简便方法。然后,您可以使用这些值来修改相应的注册表值。重新启动将使您的首选屏幕分辨率达到现实。

监视器上使用的颜色深度通过以下注册表值捕获: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.BitsPerPel在我的框中,此十六进制值设置为0x00000008(8),这意味着我的屏幕使用8位颜色深度。(256色)将其更改为16位(0x00000010)将显示65536种颜色(高色)。其他通常可用的值为24位(0x00000018)和32位(0x00000020)。

资源


我在任何GUID.0000中都没有DefaultSettings。* Resolution键。我认为是因为它只有虚拟设备。我可以将该密钥添加到每个密钥中吗?那行得通吗?
Joel

@乔尔:我对此表示怀疑。根本没有“视频”分支吗?我在EC2上有一个Server Core 2008 R2实例,所以今天晚上我来看一下。
paradroid

是的,不是这样。以为我还是会问。我将继续寻找解决方案。让我知道您是否找到任何东西。谢谢。
乔尔

我的注册表中也没有DefaultSettings。*。我什至无法尝试这种解决方案。看来它可以帮助一些,但不是全部。
复制和粘贴

1

我可以使用上面@ kenny-trytek的答案并设置自动登录来使此工作正常。

我认为VNC分辨率仅针对当前用户设置,因此设置自动登录可确保该用户具有打开的会话。

设置自动登录 https://support.microsoft.com/en-us/kb/324737

接下来,在用户的Start Up文件夹中,提供一个快捷方式或bat文件来启动硒节点进程。


1
请在参考链接中引用答案的关键部分,因为如果链接页面发生更改,答案可能会失效。
DavidPostill

1

我尝试了所有以上所有方法,但都失败了。找到了一种适合我的情况的独特解决方案,该解决方案很简单..使用Windows Power-shell。

写了power-shell脚本

Set-DisplayResolution -Width 1920 -Height 1080 -Force

将其命名为resolution.ps1

保存在C:\ myTestFolder

并从下面的命令行运行它.....(我的脚本由批处理文件驱动)

WindowsPowerShell\v1.0\powershell.exe C:\myTestFolder\resolution.ps1

0

这是我使用RDP在AWS Windows上设置无头屏幕分辨率的方法:

  • 创建一个名为rdp_local的新用户
  • 以指定的分辨率为RDP创建启动脚本到指定的用户帐户(例如,硒)
  • 添加防火墙规则以打开RDP端口3389
  • 配置自动登录以在重新启动时以rdp_local身份登录

请注意,自动登录需要用户名和密码,并且密码未加密存储在Windows注册表HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon下。

在Amazon Windows Server 2012 R2 AMI上测试。

这是执行上述操作的厨师食谱:https : //github.com/dhoer/chef-windows_screenresolution


更新:我建议使用github.com/dhoer/choco-screen-resolution#screen-resolution在用于硒测试的Windows机器上设置屏幕分辨率。它不需要安装驱动程序,并且自动登录是安全的(无密码以纯文本格式)
Dennis Hoer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.