使用Jenkins在Windows从机上自动化TestStack.White UI测试

5
首先,如果浪费了您的时间,我感到非常抱歉,因为这似乎是一个简单的步骤,即使经过一些研究,我也无法解决问题。
好的,这就是我想要实现的,我使用TestStack.White编写了一些UI测试,我想在Jenkins Slave上以不同的用户身份执行此操作,因为应用程序根据Active Directory中分配给它们的角色而表现不同。
因此,在谷歌上查找了一下,我发现以下链接与我想要实现的内容相关。
- http://teststackwhite.readthedocs.io/en/latest/AdvancedTopics/ContinuousIntegration/ - 如何在无头模式下让Sikuli工作 - Windows上的 Jenkins 和无 RDC 的 GUI 测试 看起来我需要在Jenkins从机上安装TightVNC,并应该从Jenkins主机连接到从机并在从机上执行测试。
这就带来了我的第一个问题,我如何在Jenkins作业中实现这一点?
关于以不同用户身份登录,我理解可以使用“autologon.exe”来实现这一点。所以想知道如何在Windows从机上从Jenkins主机执行此操作。我的公司不允许SSH到Windows实例(从机器),我无法从Jenkins主机远程执行SSH。
我明白我可能没有正确地看待这个问题,所以非常感谢您的帮助。
提前感谢您的时间和建议。

1
我认为在服务器上无人值守运行UI测试的主要问题是需要一个交互式会话。也就是说,必须有一个用户登录到一个交互式会话中,该会话当前未被锁定或以其他方式处于“无头”状态,否则许多事情就无法正常工作。使用虚拟机通常是一种合适的方法,但会增加更多的复杂性。在我们自己的产品中,我们通过不进行UI测试,而是合成我们自己的抽象输入事件以正确顺序使其余代码执行正确的操作,从而避开了会话问题。 - Joey
2个回答

1
感谢大家的评论和答案,基本上这就是我为了让它在我的项目中正常工作所做的事情:
  1. 使用VNC客户端与Jenkins从机建立VNC连接,这是手动完成的而非通过Jenkins。
  2. 使用名为“Caffeine”的应用程序防止Windows锁定屏幕,它会模拟按下F15键(每隔xx秒),因此不会中断测试任务。
  3. 启动JNLP连接到Jenkins主机,并将"Caffeine"应用程序作为Windows登录的一部分通过VNC连接。
  4. 退出VNC连接(不要注销),这是手动完成的而非通过Jenkins。
  5. 使用PSExec在从机上以不同的用户身份运行构建。
到目前为止,这似乎运行良好。我没有早些时候回复是因为我想监控几天的工作才在这里发布我的回复。

1
我正在准备做类似的事情,但我正在我们的UI自动化应用程序中构建通信层,以便我们的构建机器(我们公司自己的构建机器)可以发送TCP请求来回传递。我将部署UI自动化和构建到一个共享位置,然后启动虚拟机。构建机器的模板将有一个启动脚本,从共享位置启动这两个应用程序。一旦虚拟机启动,我就会与UI自动化应用程序通信,告诉它启动,它会告诉我何时完成,以便我可以关闭虚拟机。我将把所有测试结果保存在共享位置上,以供报告使用。
我知道这并没有直接回答你的问题,但这种方法是我从多个使用各种自动化框架的人那里听说过的。
如果我要在Jenkins中做这件事,我会研究Jenkins插件系统。据我所知,插件系统使用Java,因此您应该能够创建某种类型的通信层并与某种类型的虚拟机进行交互。如果您没有启动和停止虚拟机的选项,则需要查看在冒充用户的情况下启动和停止远程计算机上的进程。我知道这可以在C#中完成,但我从未在Java中研究过它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接