我想到的设置是在源代码构建完成时触发UI测试的构建。
问题是,如果TeamCity构建代理程序作为Windows服务运行,然后WebDriver测试在后台运行(即使是一次测试,也要花很长时间)。解决方法是手动启动TeamCity构建代理。现在,浏览器可见,具有焦点,并且测试运行良好。问题是,如果重新启动运行构建代理的计算机,则需要记住再次启动构建代理。
有人进行过类似的设置吗?
如何解决必须手动运行构建代理的问题?
#1 楼
在最新版本的Windows中,Microsoft决定为服务提供自己的隐藏桌面,因此,即使您选中“与桌面交互”并以当前用户身份运行,该服务仍指的是隐藏背景桌面。由于Microsoft故意这样做,因此无法更改此方法。因此,例如,要从执行程序运行Selenium测试,您需要在前台以当前用户身份运行该执行程序。
在使用Jenkins作业服务器计划和运行我的所有程序时,我遇到了这个问题测试。
如果重新启动计算机时需要执行程序自动启动,请在启动时将计算机设置为“自动登录”,然后在前台将执行程序作为启动程序运行。 br />
另一个解决方案是将测试转换为使用网格和节点。然后,您可以将TeamCity作为后台服务运行,在前台运行Grid Hub,并在前台运行Grid节点。然后,您的测试只需将JSON协议与Grid Hub进行通信,并且由于Grid Node以前台用户身份运行它们,因此解决了“作为服务运行”的问题。
评论
您可以提供该隐藏桌面上有关服务主题的一些官方信息的链接吗?谢谢
– Eugene S
16年8月31日在7:36
#2 楼
对于Ranorex和Teamcity,我们也有同样的问题。在可以作为服务运行的构建代理上运行是可以的,但是截图不正确。我们最终要做的是在控制台上登录并在控制台上运行构建代理,然后在该构建代理上运行测试。这不是理想的解决方案,但它解决了我们所有的问题,因此是可行的。#3 楼
我必须在Windows 7机器上执行的两个步骤是:对于Win7机器,将注册表项HKLM \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ AllowRemoteRPC设置为1。允许远程任务在远程计算机上执行。将Windows服务“交互式服务检测”更改为启动“自动”。这使我们能够将桌面远程访问客户端计算机,并查看正在执行的远程任务。
我能够通过Windows服务执行硒测试,而延迟很小。我的测试套件正在使用.net库和所有受支持的浏览器。
评论
您是否在stackoverflow.com/questions/2291639/…中看到“问题是,以用户身份运行的Windows服务无法与桌面交互”?@testarab:“运行缓慢”!=“永远做下去”,因此标题现在似乎有点误导。也许作者应该量化“永远” ...
@dzieciou一个通常在8秒内执行的测试现在需要1250秒。
测试的结果是一样的吗?启动浏览器没问题吗?
该测试成功执行,但浏览器不可见,我猜想它在后台运行(可能处于无头状态?),但是由于webddriver需要主动关注浏览器,因此执行该过程花费的时间很长。手动启动Teamcity构建代理没有问题。