使用 Jenkins 在 Windows Slave 中自动化 TestStack.White UI 测试
Automating TestStack.White UI Testing in Windows Slave using Jenkins
首先,如果我浪费了你的时间,我深表歉意,因为这看起来是一个简单的步骤,即使经过一些研究我也无法弄清楚。
好的,这就是我想要实现的目标,我已经使用 TestStack.White 编写了一些 UI 测试,我想以不同的用户身份在 Jenkins Slave 上执行它,因为应用程序根据在 Active Directory 中分配给它们的角色,它们的行为会有所不同。
所以在 google 上做了一些查找后,我发现了以下与我想要实现的目标相关的链接。
- http://teststackwhite.readthedocs.io/en/latest/AdvancedTopics/ContinuousIntegration/
How to get Sikuli working in headless mode
Jenkins on Windows and GUI Tests without RDC
看来我必须在 Jenkins slave 上安装 TightVNC 并且应该从 Jenkins Master 连接到 slave 并在 slave 上执行测试。
这让我想到了我的第一个问题,我如何从 Jenkins 工作中准确地实现这一目标?
关于以不同用户身份登录,我知道我可以使用 "autologon.exe" 来实现这一点。所以只是想知道如何在 Jenkins Master 的 Windows Slave 上执行此操作。我的公司不允许 SSH 到 Windows 个实例(从机),我无法从 Jenkins Master 远程执行 SSH。
我知道我可能没有正确看待这个问题,因此非常感谢您的帮助。
提前感谢您的时间和建议。
我正准备做类似的事情,但我正在我们的 UI 自动化应用程序中构建一个通信层,以便我们的构建机器(我们公司推出了我们自己的构建机器)可以发回 TCP 请求来回。我将部署 UI 自动化和构建到一个共享然后启动一个虚拟机。构建机器模板将有一个启动脚本,可以从共享中启动我们的应用程序。虚拟机启动后,我将与 UI 自动化应用程序通信,告诉它启动,它会告诉我它何时完成,以便我可以拆除虚拟机。我将把所有测试结果保存到共享中以供报告之用。
我知道这并不能直接回答您的问题,但我从使用各种自动化框架的多个人那里听说过这种方法。
如果我要在 Jenkins 中执行此操作,我会研究 Jenkins 插件系统。据我所知,插件系统使用 Java 因此您应该能够创建某种类型的通信层和与某种类型的 VM 的接口。如果您没有启动和停止 VM 的选项,您将需要在伪装成用户时查看远程计算机上的启动和停止进程。我知道这可以在 C# 中完成,但我从未在 Java.
中研究过它
感谢大家的评论和回答,基本上这就是我所做的让它为我工作,
- 在 Jenkins slave 上与 VNC 客户端建立 VNC 连接,这是手动完成的,而不是通过 Jenkins。
- 使用名为 "Caffeine" 的应用程序来防止 windows 锁定,它模拟 F15 上的按键事件(每 xx 秒),因此我的项目中的测试任务不会中断。
- 启动与 Jenkins Master 和 "Caffeine" 应用程序的 JNLP 连接,作为通过 VNC 连接 windows 登录的一部分。
- 关闭 VNC 连接(不是注销),这是手动完成的,而不是通过 Jenkins。
- 让构建 运行 作为不同的用户在从属服务器上使用 PSExec。
到目前为止这似乎工作正常,我没有早点回复,因为我想在此处发布我的回复之前监控几天的工作。
首先,如果我浪费了你的时间,我深表歉意,因为这看起来是一个简单的步骤,即使经过一些研究我也无法弄清楚。
好的,这就是我想要实现的目标,我已经使用 TestStack.White 编写了一些 UI 测试,我想以不同的用户身份在 Jenkins Slave 上执行它,因为应用程序根据在 Active Directory 中分配给它们的角色,它们的行为会有所不同。
所以在 google 上做了一些查找后,我发现了以下与我想要实现的目标相关的链接。
- http://teststackwhite.readthedocs.io/en/latest/AdvancedTopics/ContinuousIntegration/
How to get Sikuli working in headless mode
Jenkins on Windows and GUI Tests without RDC
看来我必须在 Jenkins slave 上安装 TightVNC 并且应该从 Jenkins Master 连接到 slave 并在 slave 上执行测试。
这让我想到了我的第一个问题,我如何从 Jenkins 工作中准确地实现这一目标?
关于以不同用户身份登录,我知道我可以使用 "autologon.exe" 来实现这一点。所以只是想知道如何在 Jenkins Master 的 Windows Slave 上执行此操作。我的公司不允许 SSH 到 Windows 个实例(从机),我无法从 Jenkins Master 远程执行 SSH。
我知道我可能没有正确看待这个问题,因此非常感谢您的帮助。
提前感谢您的时间和建议。
我正准备做类似的事情,但我正在我们的 UI 自动化应用程序中构建一个通信层,以便我们的构建机器(我们公司推出了我们自己的构建机器)可以发回 TCP 请求来回。我将部署 UI 自动化和构建到一个共享然后启动一个虚拟机。构建机器模板将有一个启动脚本,可以从共享中启动我们的应用程序。虚拟机启动后,我将与 UI 自动化应用程序通信,告诉它启动,它会告诉我它何时完成,以便我可以拆除虚拟机。我将把所有测试结果保存到共享中以供报告之用。
我知道这并不能直接回答您的问题,但我从使用各种自动化框架的多个人那里听说过这种方法。
如果我要在 Jenkins 中执行此操作,我会研究 Jenkins 插件系统。据我所知,插件系统使用 Java 因此您应该能够创建某种类型的通信层和与某种类型的 VM 的接口。如果您没有启动和停止 VM 的选项,您将需要在伪装成用户时查看远程计算机上的启动和停止进程。我知道这可以在 C# 中完成,但我从未在 Java.
中研究过它感谢大家的评论和回答,基本上这就是我所做的让它为我工作,
- 在 Jenkins slave 上与 VNC 客户端建立 VNC 连接,这是手动完成的,而不是通过 Jenkins。
- 使用名为 "Caffeine" 的应用程序来防止 windows 锁定,它模拟 F15 上的按键事件(每 xx 秒),因此我的项目中的测试任务不会中断。
- 启动与 Jenkins Master 和 "Caffeine" 应用程序的 JNLP 连接,作为通过 VNC 连接 windows 登录的一部分。
- 关闭 VNC 连接(不是注销),这是手动完成的,而不是通过 Jenkins。
- 让构建 运行 作为不同的用户在从属服务器上使用 PSExec。
到目前为止这似乎工作正常,我没有早点回复,因为我想在此处发布我的回复之前监控几天的工作。