我有一个使用White的GUI(winforms)测试,它在开发中运行良好,但卡在构建服务器上。
它可以打开应用程序,但只要我尝试'做'任何事情:
Button Button = Window.Get<Button>("btnCalculate");
Button.Click();
它被卡住了。服务器报告:
---- White.Core.UIItems.UIActionException : Window in still wait mode. Cursor: White.Core.InputDevices.MouseCursor, after waiting for 5000 ms
at Bricks.RuntimeFramework.ReflectedObject.Invoke(MethodInfo methodInfo, Object[] arguments)
at Bricks.DynamicProxy.DynamicProxyInterceptors.Process(IInvocation invocation, InterceptContext interceptedContext)
at White.Core.Interceptors.CoreInterceptor.Intercept(IInvocation invocation)
at Castle.DynamicProxy.AbstractInvocation.Proceed()
at ButtonProxy6fcb23ab82174f67960e33c02ddb2259.Click()
at WinCalc.Gui.Test.AcceptanceTests.WhiteTest() in d:\BuildServer\Agent\work\f00b471a939c7f96\WinCalculator\WinCalc.Gui.Test\AcceptanceTests.cs:line 39
----- Inner Stack Trace -----
at White.Core.UIItems.Actions.Action.<Handle>b__2()
at Bricks.Core.Clock.Perform(Do do, Matched matched, Expired expired)
at White.Core.UIItems.Actions.Action.Handle(Window window)
at White.Core.UIItems.WindowItems.Window.ActionPerformed(Action action)
at White.Core.InputDevices.Mouse.ActionPerformed(ActionListener actionListener)
at White.Core.InputDevices.Mouse.Click(Point point, ActionListener actionListener)
at White.Core.UIItems.UIItem.PerformClick()
at White.Core.UIItems.UIItem.Click()
我从哪里开始尝试调试它?
(我已经让它在另一台服务器上运行了,所以我不相信它是我的代码,它是新服务器上的设置)。
答案 0 :(得分:1)
问题可能是因为构建代理上的服务无法实际创建窗口,因为它没有桌面。
您可以尝试的第一件事是在teamcity构建代理服务设置中确保“允许服务与桌面交互”。检查。然后重新启动该服务,并再次尝试运行测试。
过去虽然我的解决方案结果不一致。我真的不知道原因的来龙去脉,但如果这不起作用,您可以尝试在登录框时在命令行运行Team City代理。这绝对可以工作,如果你保持桌面,你可能会看到你的Windows创建并在测试期间做他们需要的任何事情。