首页 文章

Windows上的Jenkins和没有RDC的GUI测试

提问于
浏览
15

我们有Jenkins的主从配置 . 我们的.NET项目是由在Windows上运行的从属Jenkins实例构建的 .

有一堆GUI测试,但是如果打开远程桌面连接(RDC)会话,它们似乎只会运行 .

当试图在没有RDC的情况下运行测试时,Jenkins没有在测试中显示任何进展 . 然而,然后,我连接到Slave的桌面,可以看到启动的应用程序的主窗口,但UI测试框架(白色)无法执行任何操作 .

Jenkins slave是通过Java Web Start启动的 .

我在几个网站上看到,遗憾的是,没有RDC会话就无法运行GUI测试 .

我只想确认这是真的,并想知道是否有任何解决方法 .

4 回答

  • 6

    正如其他答案已经说明的那样,需要一个配置,其中windows机器自动登录到真实用户,有关详细信息,请参阅其他答案 . 然而这对我来说还不够,我需要setup a UltraVNC Server作为服务来解决问题 .

    在网站上提到,通过RDP登录是该技巧的问题,即连接VNC或在RDP访问后重新启动 .

  • 12

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

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

  • 1

    我有一个Jenkins集群运行不同类型的GUI测试,win32,swing,selenium . 他们以无人值守的方式全天候运行数千次测试 . 这是我的解决方案:

    • 如何使GUI测试保持活动状态 - RDC不起作用,GUI应用程序只有在RDC会话处于活动状态时才能正常运行 . 我尝试了不同的方法,所以不要再费心了 . 在RDC窗口最小化或断开连接后,您的测试将中断 . 到目前为止的解决方案是安装VNC服务器(我正在使用UltraVNC)作为服务,并确保它在登录期间启动 . 还要确保您没有使用RDC连接到您的测试机器,因为RDC将中断VNC会话 . 如果可能,也将它与VNC客户端连接 . 但这取决于你 . 我所做的是当我需要在机器上调试某些东西时,我对它进行RDC并重新启动它以确保设置了#2和#3 .

    • 自动登录 - SysInternalsSuite中有一个工具autologon.exe,在你的奴隶上运行它

    • 自动注册从站 - 你需要的是Swarm插件 - https://wiki.jenkins-ci.org/display/JENKINS/Swarm+Plugin . 编写一个简单的批处理并在启动文件夹中放置一个快捷方式 . 每次机器自动登录时,它都会自动注册为从机 .

    我实际上将#2和#3组合为一个简单的批处理文件:

    autologon.exe <user> <domain> <password>
    REM Here to make sure the logonCount is properly generated
    REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoLogonCount /t REG_DWORD /d 0xFFFF /f
    
    start /min java -jar I:\CDC\jenkins\swarm-client-1.9-jar-with-dependencies.jar -executors 1 -fsroot c:\Jenkins -labels "Prod Win7 %ComputerName%" -master <Jenkins URL> -name farm-%ComputerName% -username <username> -password <password>
    
  • 6

    还有另一种方法可以在没有Windows自动登录的情况下执行此操作(在少数计算机上适用于我) .

    1.转到 Computer Management -> Services and Applications -> Services -> Jenkins Slave -> Properties
    2.在 Log On 选项卡中选择 Local System account 并检查 Allow services to interact with desktop
    3.单击 OK 关闭此窗口,然后重新启动 Jenkins slave 服务
    4.转到您的测试应用程序所在的目录,并在您的应用程序可执行文件中选择 Properties
    5.在 Security 选项卡上单击 Edit...
    6.在新窗口中单击 Add..
    7.在新窗口中单击 Locations... 并选择本地计算机(列表中最顶层的选项),单击 OK
    8.将 LOCAL SERVICE 放入窗口的白色区域,然后单击 Check Names ,单击 OK
    9.为该用户允许 Full control ,单击 OK ,关闭所有窗口

    这应该是一切 . 请让我知道这对你有没有用 .

相关问题