在Jenkins代理的虚拟机上设置Selenium测试的显示分辨率

p1tboqfb  于 11个月前  发布在  Jenkins
关注(0)|答案(5)|浏览(150)

我在Jenkins代理上运行一些Selenium测试时遇到问题。具体来说,用于运行测试的显示分辨率太小,导致某些测试失败。
要检查显示分辨率,我们使用以下命令将显示高度和宽度记录到控制台:

driver.manage().window().maximize();
System.out.println("Window height: " + driver.manage().window().getSize().getHeight());
System.out.println("Window width: " + driver.manage().window().getSize().getWidth());

字符串
这将返回:

Window height: 784
Window width: 1040


这对我来说似乎是一个非常奇怪的分辨率。所需的分辨率是1920 x 1080。
用作代理的服务器是虚拟机(Windows Server 2012 R2)。Jenkins代理通过JNLP代理连接。该代理以“本地系统”身份登录并启用“允许服务与桌面交互”选项来运行服务。
到目前为止,我们已经尝试了一些事情,比如:

  • 使用RDP连接到代理虚拟机并断开连接,以保持会话打开并具有所需的显示分辨率
  • 使用powershell设置显示分辨率
  • 在虚拟机配置中设置默认显示分辨率
  • 使用Selenium设置窗口尺寸
  • 和更多...

这些都没有解决问题,欢迎大家提出建议!

ltskdhd1

ltskdhd11#

在意识到Jenkins不一定需要将slave作为Windows服务运行后,最终设法修复了这些问题。要启动slave,可以从Jenkins下载JNLP代理并复制到服务器。运行JNLP文件时,您可以选择将slave代理作为服务安装的选项。
x1c 0d1x的数据
之前我们选择了这个选项,这就是为什么从站作为服务运行。在停止并删除服务后,我们再次运行JNLP文件,并确保没有选择这个选项。
建议的解决方案包括断开远程桌面会话并以大分辨率打开会话,但在将从站作为服务运行时不起作用。但是,当以默认方式运行从站时,它们确实起作用。
确保远程桌面会话在一段时间后不会结束:

希望这对某人有帮助!

iibxawm4

iibxawm42#

根据我的经验,您无法通过编程解决此问题。您的测试将在上次物理访问此VM显示器时使用的分辨率上运行。例如,如果我在大屏幕监视器上打开VM并将其最大化,则测试将在该分辨率上运行。但是如果我在笔记本电脑屏幕上打开它并关闭RDP连接,测试将在较小的屏幕尺寸上运行。我知道这听起来很奇怪,但我真的找不到更好的解决方案。:D所以现在我必须在关闭VM之前小心地在较大的屏幕上最大化VM显示。您可能不喜欢这个答案,但当您发现自己没有其他解决方案时请记住它。;)

1mrurvl1

1mrurvl13#

对我来说有效的解决方案是在“无头”模式下运行Chrome(没有GUI)。当GUI不可用时,它与Jenkins Agent作为服务运行。下面是Web驱动程序初始化的代码示例:

var options = new ChromeOptions();
options.BinaryLocation = @"C:\Program Files\Google\Chrome\Application\chrome.exe";
options.AddArgument("Headless");
options.AddArgument("window-size=1920,1080");

driver = new ChromeDriver(@"<path>\Selenium.WebDriver.ChromeDriver.2.37.0\driver\win32", options);

字符串

mo49yndu

mo49yndu4#

我也遇到过同样的问题。我的seleniumn测试在安装为windows服务的jenkins slave下运行,使用windows 7中启用的“本地系统”帐户和“允许服务与桌面交互”选项。由于显示分辨率不正确,一些测试用例总是失败。
我登录到windows VM(EXSI Server + VMware Fusion)的控制台,将分辨率更改为1400x900,并重新启动windwos VM,现在一切正常。

svdrlsy4

svdrlsy45#

对于任何希望处理相同问题的人,但Selenium Node托管在Windows 10虚拟机的Vsphere上,需要执行以下步骤:
1.设置自动登录,以便运行selenium节点的任务可以在用户登录时运行。(要设置windows自动登录,请参阅:this article from Microsoft
1.设置一个计划任务,在指定为自动登录的用户登录时,将以最高权限运行以下命令。
cd“C:\Program Files\VMware\VMware Tools”
VMware ResolutionSet.exe 0 1,0 0 [x] [y]
(其中“x”=所需的像素宽度,“y”=所需的高度)有关第二步的更多信息,请参见this article from vmware

相关问题