Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 如何在没有远程桌面连接的情况下在jenkins windows从属设备上运行GUI测试?_Testing_User Interface_Jenkins_Continuous Integration_Jubula - Fatal编程技术网

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

Testing 如何在没有远程桌面连接的情况下在jenkins windows从属设备上运行GUI测试?,testing,user-interface,jenkins,continuous-integration,jubula,Testing,User Interface,Jenkins,Continuous Integration,Jubula,我在Windows7上安装了jenkins代理,在Linux上安装了jenkins服务器。我正在windows代理上运行GUI测试。如果我有一个远程桌面连接到它,它运行良好,但在其他情况下失败。我找到了这个链接 但这里提供的解决方案相当模糊。。似乎唯一的解决方案是让Jenkins服务器始终打开远程桌面连接。但我找不到这样的选择。 谁能清楚地教我如何解决这个问题 非常感谢 在测试运行之前,您的从机必须位于桌面上 对。我们也有同样的问题 解决方案是启动测试机器并自动登录到 桌面。确保测试仅在桌面启动

我在Windows7上安装了jenkins代理,在Linux上安装了jenkins服务器。我正在windows代理上运行GUI测试。如果我有一个远程桌面连接到它,它运行良好,但在其他情况下失败。我找到了这个链接

但这里提供的解决方案相当模糊。。似乎唯一的解决方案是让Jenkins服务器始终打开远程桌面连接。但我找不到这样的选择。 谁能清楚地教我如何解决这个问题

非常感谢

在测试运行之前,您的从机必须位于桌面上 对。我们也有同样的问题

解决方案是启动测试机器并自动登录到 桌面。确保测试仅在桌面启动后启动 可用时,我们添加了一个计划任务,设置为在用户登录时运行, 这将通过JavaWebStart启动Jenkins从机。这样,, 詹金斯只会在桌面运行时看到从机。之后 这一切都很顺利

这是您链接到的问题的成功答案,非常清楚该怎么做。整个设置都在詹金斯之外。Jason Swager描述了他如何自动让用户登录windows桌面计算机,然后在用户会话中启动Jenkins slave

现在一步一步: 1.确保您有一个可评估的GUI 解决方案是启动测试机并自动登录到桌面

配置标准Windows桌面,以便在Windows启动时自动登录特定用户。这样,任何人都不需要物理登录到桌面。(见附件)

2.启动詹金斯奴隶 您需要在该用户设置中启动Jenkins从机。否则,Jenkins slave将无法访问Windows UI组件(或者换句话说,无法与桌面交互)

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

因此,您必须重新启动并配置它以启动您的

3.使用它 这样,Jenkins只会在桌面运行时看到从机。之后 这一切都很顺利


当从属设备联机时,您可以使用它运行UI测试。

要解决此问题,请设置Windows自动登录,如我在此处所述:

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

java -jar slave.jar -jnlpUrl http://{Your Jenkins Server}:8080/computer/{Your Jenkins Node}/slave-agent.jnlp
(slave.jar可以从http://{Your Jenkins Server}:8080/jnlpJars/slave.jar下载)

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

%windir%\system32\tscon.exe %SESSIONNAME% /dest:console

下面的事情帮了我的忙:

在Jenkins中,执行windows shell命令:

  • cmdkey/generic:TERMSRV//user:/pass:
  • mstsc/v:/w:/h:
  • cd
  • (例如
    mvn测试-Dfiles\u to\u run=groupLaunch.xml
  • cmdkey/delete:TERMSRV/

它在Jenkins支持的虚拟mstsc会话(Jenkins to Win)中创建具有指定宽度和高度的真实mstsc会话(Win to Win)。

我尝试了这里提供的解决方案,但没有任何效果。最后,我想出了一个解决方法

我在另一个VM(VM2)中打开了与VM的RDP连接。 我让VM2内部的第一个连接打开并断开


它工作了,但这意味着有两个虚拟机可用。

您仍然需要使用RDP,但在我的情况下,我们可以在同一个VM中使用RDP的环回

程序如下:

  • 在VM中,创建两个不同的帐户,并为这两个帐户创建Jenkins slave
  • 现在,您将在一个VM中为两个帐户提供两个Jenkins slave

    从机1-帐户1

    从属2-帐户2

  • 启用多个RDP跟随指南

  • 在从机2(使用帐户2)中,运行rdp命令连接到从机1(使用帐户1),如下所示 开始/b“C:\RDP\RDP.exe”/v:127.0.0.2/domain:\/u:admin/p:xxxx/fullscreen/w:1920/h:1200

  • 127.0.0.2非常重要,它是RDP的环回连接


    将上述命令放入Jenkins作业中,名称为“OpenRDP_ToVMXXX”,然后您可以在启用GUI的slave 1上运行任何测试,尽情享受。

    由于上述解决方案似乎有点过火,我使用了这种方法:

  • 禁用詹金斯服务
  • 使用
    java-jarc:\ProgramFiles(x86)\Jenkins\Jenkins.war从命令行启动Jenkins

  • 由于某些原因,我不得不在以这种方式启动时安装所有插件和所有东西,因此我建议创建一个备份,并为此提供插件。祝你好运。

    我相信我已经完成了所有这些-通过java web start启动它,自动登录用户(只有一个用户,即管理员)。但是如果没有RDC连接,它仍然无法工作。系统是否有一个监视器连接到它?您需要让UI组件处于活动状态,并且只有当您的jenkins客户端在同一个用户下运行,然后是登录到UI的用户。不,测试机是一个虚拟机。它没有连接到的物理监视器它。windows从机下只有一个用户,即admin。因此,它不应该由多个用户引起任何问题,而且我已经启用了自动登录。因此,如果不设置物理计算机,就无法进行自动登录。我确信它将与物理机一起工作,因为如果我打开RDP连接,它工作正常。但这是ex它不能像虚拟linux机器那样运行吗?我可以按照Peter.a提到的步骤在win7虚拟机中设置它