【问题标题】:Get hold of all applications by application name - TestStack.White .NET按应用程序名称获取所有应用程序 - TestStack.White .NET
【发布时间】:2017-02-03 07:18:12
【问题描述】:

我有 3-4 个 Windows 应用程序以 "WorkflowActionProcessor" 的名称运行,我想循环并模拟每个应用程序的按钮点击。
为了模拟点击,我使用了 .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();

但是,我怎样才能将所有应用程序保存在一个可枚举对象中并对其进行处理。

【问题讨论】:

  • 嘿,我只是想仔细检查一下您是否需要我提供更多信息来接受我的回答?我已经接近 500,所以如果这回答了你的问题,如果你接受它,我将不胜感激。谢谢。
  • 这个项目有点延迟,所以我无法测试你的答案..一旦我验证就会接受:)

标签: teststack.white .net automation automated-tests windows-applications white-framework


【解决方案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();
}

我还没有运行此代码,因此可能需要花费一些时间,但总体思路是从自动化应用程序中多次启动应用程序,以便为每个应用程序提供一个应用程序对象,因为附加将始终使用您指定的名称附加到第一个进程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    相关资源
    最近更新 更多