如何在没有远程桌面连接的情况下在jenkins windows slave上运行GUI测试?

Kel*_*vin 30 testing user-interface continuous-integration jenkins jubula

我在Windows 7上设置了jenkins代理,在Linux上安装了jenkins服务器.我正在Windows代理上运行GUI测试.如果我连接了远程桌面连接,它运行正常,但否则失败.我找到了这个链接,Jenkins在Windows上和GUI测试没有RDC

但是提供的解决方案非常模糊.似乎唯一的解决方案是以某种方式使Jenkins服务器始终打开远程桌面连接.但我找不到这样做的选择.谁能明确教我如何解决这个问题?

非常感激!

Pet*_*tze 24

在测试可以正常运行之前,您的从属计算机必须位于桌面上.我们遇到了同样的问题.

解决方案是让测试机器启动并自动登录到桌面.为确保测试仅在桌面可用后启动,我们添加了一个计划任务,设置为在用户登录时运行,该任务将通过Java Web Start启动Jenkins从站.这样,一旦桌面运行,Jenkins只会看到奴隶.在那之后,一切都很好.

这是您所关联的问题的获胜答案,并且非常清楚该怎么做.整个设置在Jenkins之外.Jason Swager描述了他如何自动登录到桌面计算机的用户,然后在用户会话中启动Jenkins slave.

现在一步一步:

1.确保你有一个可用的GUI

解决方案是让测试机器启动并自动登录到桌面

配置标准Windows桌面以在Windows启动时自动登录特定用户.这样,没有人需要物理登录桌面.(请参阅如何在Windows 7中启用自动登录)

2.启动詹金斯奴隶

您需要在此用户设置中启动Jenkins从站.否则,Jenkins slave将无法访问Windows UI组件(换句话说,无法与桌面交互).

为确保测试仅在桌面可用后启动,我们添加了一个计划任务,设置为在用户登录时运行,该任务将通过Java Web Start启动Jenkins从站.

因此,您必须创建计划任务并将其配置为使用Java Web Start启动Jenkins客户端.

3.使用它

这样,一旦桌面运行,Jenkins只会看到奴隶.在那之后,一切都很好.

当从属设备在线时,您可以使用它来运行UI测试.

  • 我能够按照Peter提到的步骤在win7 VM中设置它.另外为了确保它在没有RDC连接的情况下工作,我添加了一个包含此内容的批处理文件的快捷方式:for/f"skip = 1 tokens = 3"%% s in('query user%USERNAME%')do(%windir %\ System32\tscon.exe %% s/dest:console`)确保使用此快捷方式断开连接而不是关闭"远程桌面"窗口. (3认同)

Noa*_*nos 6

要解决此问题,请按照我在此解释的那样设置Windows自动登录:https: //serverfault.com/questions/269832/windows-server-2008-automatic-user-logon-on-power-on/606130#606130

然后为Jenkins slave创建一个启动批处理(将它放在Jenkins目录中),这将在桌面上启动它的控制台,并允许GUI作业运行:

java -jar slave.jar -jnlpUrl http://{Your Jenkins Server}:8080/computer/{Your Jenkins Node}/slave-agent.jnlp
Run Code Online (Sandbox Code Playgroud)

(slave.jar可以从http:// {Your Jenkins Server}下载:8080/jnlpJars/slave.jar)

编辑: 如果您正在获取黑色屏幕截图(例如,使用Selenium时),请创建一个断开远程桌面的批处理文件,而不是使用常规X按钮关闭RDP会话:

%windir%\system32\tscon.exe %SESSIONNAME% /dest:console
Run Code Online (Sandbox Code Playgroud)