带有托盘窗口的TestStack White

时间:2015-07-01 17:45:07

标签: c# ui-automation white

我需要与其他应用程序进行交互,位于托盘中。 我现在以这种方式使用TestStack White:

ProcessStartInfo processStartInfo = new ProcessStartInfo("MyProg.exe");
Application application = Application.AttachOrLaunch(processStartInfo);
_window = application.GetWindows()[0];

如果应用程序在此调用之前未运行,则一切正常,因为启动它,这是可见的。

相反,如果应用程序已经运行,并且在托盘中,White找不到任何窗口,我可以在控制台中看到以下日志:

  

无法找到此应用程序的任何窗口

...并且,在一些重试之后,它失败并出现异常。 现在,我找到的最佳解决方案是杀死应用程序并重新启动它:

application.Kill();
application = Application.Launch("MyProg.exe");

这是有效的。 但我想有更好的解决方案。

2 个答案:

答案 0 :(得分:0)

打开要自动执行的应用程序并打印所有正在运行的进程名称,找到代表该应用程序的名称。

添加以下代码......

Application myApp;
myApp = Application.Attach("ProcessName");

希望它有所帮助...

答案 1 :(得分:0)

您是否尝试附加到explorer.exe进程?由于应用程序的系统托盘图标将驻留在explorer.exe下。 像这样:

您是否尝试附加到explorer.exe进程?由于应用程序的系统托盘图标将驻留在explorer.exe下。 像这样:

Process _explorerProcess = Process.GetProcessesByName("explorer")[0];
application = Application.Attach(_explorerProcess.Id);
Window desktopWindow = application.GetWindows()[0];

然后,您应该能够与系统托盘图标进行交互。