作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有 3-4 个 Windows 应用程序在名称 “WorkflowActionProcessor” 下运行,我想循环并模拟每个应用程序的按钮点击。
为了模拟点击,我使用 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();
但是,我怎样才能将所有应用程序保存在一个可枚举的对象中并对其进行处理。
最佳答案
您可以使用 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();
}
我还没有运行这段代码,所以可能需要一些时间,但一般的想法是从自动化应用程序多次启动应用程序,这样每个应用程序都有一个应用程序对象,因为附加总是使用您指定的名称附加到第一个进程。
关于.net - 通过应用程序名称获取所有应用程序 - TestStack.White .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39694487/
我是一名优秀的程序员,十分优秀!