有一堆GUI测试,但是只有在远程桌面连接(RDC)会话打开时才能运行。
当尝试在没有RDC的情况下运行测试时,Jenkins不显示任何测试进度。然后,当我连接到从机的桌面时,可以看到应用程序的主窗口启动了,但UI测试框架(White)无法执行任何操作。
Jenkins从节点是通过Java Web Start启动的。
我在几个网站上读到,很遗憾不能在没有RDC会话的情况下运行GUI测试。
我只想确认这是真的,并想知道是否有任何解决方法。
测试运行前,您的从机必须处于桌面状态。我们曾遇到过同样的问题。
解决方案是让测试机器启动并自动登录到桌面。为了确保测试仅在桌面可用后开始,我们添加了一个定时任务,设置为在用户登录时运行,并通过Java Web Start启动Jenkins从机。这样,只有当桌面正在运行时,Jenkins才会看到从机。之后,一切都正常工作了。
如何保持GUI测试活动 - RDC无法解决,只有在RDC会话处于活动状态时,GUI应用程序才能正常运行。我已尝试过各种方法,请不要再试了。当RDC窗口最小化或断开连接后,你的测试将中断。到目前为止,解决方案是安装VNC Server(我使用的是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>
还有另外一种方法可以在不使用Windows自动登录的情况下完成(对我几台机器有效)。
1. 进入计算机管理 -> 服务和应用程序 -> 服务 -> Jenkins从属服务 -> 属性
2. 在登录选项卡中选择本地系统帐户并勾选允许服务与桌面交互
3. 点击确定关闭此窗口,然后重新启动Jenkins从属服务
4. 进入您的测试应用程序所在的目录,并在可执行的应用程序上选择属性
5. 在安全选项卡上点击编辑...
6. 在新窗口中点击添加..
7. 在新窗口中点击位置...并选择本地计算机(列表上最上方的选项),点击确定
8. 将LOCAL SERVICE放到窗口的白色区域中并点击检查名称,点击确定
9. 允许该用户完全控制,点击确定,关闭所有窗口
这就是全部内容。如果可以,请告诉我它是否起作用。