首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按应用程序名称- TestStack.White .NET获取所有应用程序

按应用程序名称- TestStack.White .NET获取所有应用程序
EN

Stack Overflow用户
提问于 2016-09-26 03:56:26
回答 1查看 560关注 0票数 2

我有3-4个windows应用程序运行在名称"WorkflowActionProcessor"下,我想循环并模拟每个窗口的按钮点击。

为了模拟点击,我使用了teststack.white .NET库。

下面的代码只提供了一个应用程序的详细信息:

代码语言:javascript
复制
    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();

但是,如何将所有应用程序保存在一个可枚举中并对它们进行处理。

EN

回答 1

Stack Overflow用户

发布于 2016-10-13 11:07:11

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

代码语言:javascript
复制
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次,然后附加到每一个。

代码语言:javascript
复制
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();
}

我还没有运行这段代码,所以可能需要几个星期的时间,但是一般的想法是从自动化应用程序中多次启动应用程序,这样您就可以为每个应用程序对象创建一个应用程序对象,因为附件将始终以您指定的名称附加到第一个进程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39694487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档