2016-09-26 82 views
2

我有3-4个Windows应用程序运行在名称“WorkflowActionProcessor”我想循环和模拟按钮点击每个这些。
模拟点击我使用.NET库。通过应用程序名称获取所有应用程序 - TestStack.White .NET

下面的代码给我只能一个应用程序的详细信息:

TestStack.White.Application application = TestStack.White.Application.Attach("WorkflowActionProcessor"); 
    Window window = application.GetWindow("Work Flow Action Processor", InitializeOption.NoCache); 
    SearchCriteria searchCriteria = SearchCriteria.ByText("Stop Execution"); 

    TestStack.White.UIItems.Button button = window.Get<TestStack.White.UIItems.Button>(searchCriteria); 
       button.Click(); 

但是,我怎么能保持在枚举所有的应用程序并进行处理。

+0

嘿,我只是想仔细检查是否有任何更多的信息需要我接受我的答案?我越来越接近500,所以如果这回答你的问题,我会很感激,如果你接受它。谢谢。 –

+1

这个项目被推迟了一下,所以我无法测试你的答案..一旦我确认就会接受:) – JerryGoyal

回答

1

您可以在应用程序上使用GetWindows函数。

TestStack.White.Application application = TestStack.White.Application.Attach("WorkflowActionProcessor"); 
Window windows = application.GetWindows(); 

foreach(var window in windows) { 
    SearchCriteria searchCriteria = SearchCriteria.ByText("Stop Execution"); 

    TestStack.White.UIItems.Button button = window.Get<TestStack.White.UIItems.Button>(searchCriteria); 
      button.Click(); 
} 

也刚刚意识到我认为你的意思是你有4个相同的应用程序具有相同的名称。白色没有方法来获取特定名称的所有应用程序。要做到这一点,你需要启动过程4次,然后附加到每一个。

var startInfo = new ProcessStartInfo 
{ 
    UseShellExecute = false, 
    CreateNoWindow = false, 
    FileName = "your.exe", 
    Arguments = "your arguements", 
}; 

List<TestStack.White.Application> applications = new List<TestStack.White.Application>(); 
for(int applicationCounter = 0, applicationCounter < 3; applicationCounter++) { 
    TestStack.White.Application application = TestStack.White.Application.AttachOrLaunch(startInfo); 
    applications.Add(application); 
} 

List<Window> windows = new List<Window>(); 
foreach(var application in applications) 
{ 
    windows.AddRange(application.GetWindows()); 
} 

foreach(var window in windows) 
{ 
    SearchCriteria searchCriteria = SearchCriteria.ByText("Stop Execution"); 

    TestStack.White.UIItems.Button button = window.Get<TestStack.White.UIItems.Button>(searchCriteria); 
     button.Click(); 
} 

我还没有运行该代码,所以有可能需要一些tweeks到它,但总体思路是多次从自动化应用程序启动应用程序,让你有一个应用对象为他们每个人因为附件将始终以您指定的名称附加到第一个进程。

相关问题