我有一个使用LeanFT自动化工具(Java(的自动化测试项目。这些测试涵盖了web应用程序的UI流。
Jenkins作业每晚在远程从属RDP虚拟机上执行这些测试。
我意识到测试有时会失败,但无法找出确切的原因。经过调查,我发现如果最后一个登录到虚拟机的用户的分辨率不同于1920 X 1080(例如,使用具有不同本地分辨率的笔记本电脑登录(,测试就会失败。
我在测试中使用LeanFT VRI方法(Visual Relational Identifiers(来识别没有ID的对象,这意味着基于DOM中的其他对象(在x/y轴上最接近(来识别对象。所以这显然与屏幕分辨率有关。
我的问题是:如何确保我的测试以所需的屏幕分辨率开始,而不管上次登录的分辨率如何?我想我需要一种方法来使用Jenkins参数覆盖现有的分辨率,或者在我的测试项目中添加一些代码行,以支持分辨率不同于1920 x 1080的情况。
假设我们在这里谈论的是Windows操作系统,您可以通过调用一些WinAPI函数来实现这一点。
如本答案所述,您可以使用:
- EnumDisplayDevices来确定可用的显示器
- EnumDisplaySettings以获取显示器的可用分辨率列表。3.更改DisplaySettings以设置所需的分辨率
要在Java中调用这些函数,可以使用Java Native Access(JNA(。正如他们提到的:
最终的JNA参考(包括概述和使用细节(在JavaDoc中。请阅读概述。[…]您可能会发现在StackOverflow上更容易找到已解决问题的答案。