如何通过编程方式将值添加到文件组合框中,以便使用TestStack.White实现自动化

本文关键字:TestStack 自动化 实现 White 方式 编程 何通过 添加 组合 文件 | 更新日期: 2023-09-27 18:19:10

我正在尝试自动化我的c#应用程序,其中包括在打开文件对话框中选择文件。一旦窗口打开,我就可以获取必要的UI元素(一个组合框),但不能将值设置为我想要的文件名。

我相信这是因为组合框在开始时是空的(即我从未手动使用此函数并选择文件,因此它没有存储在组合框中)。是否有一种方法,我可以以编程方式添加一个项目到组合框之前选择它?下面是我当前的代码:

var fileUploadWindow = Program.application.GetWindows().Where(win => ((win.Name == ("File Upload Directory")))).FirstOrDefault();
var fileNameComboBox = fileUploadWindow.Get<ComboBox>(SearchCriteria.ByAutomationId("fileComboBox"));
fileNameComboBox.SetValue(fileName);
var openButton = fileUploadWindow.Get<Button>(SearchCriteria.ByAutomationId("openButton"));
openButton.Click();

使用这个,当我调用SetValue()函数,我收到一个错误:

Item of text 'fileName' not found.

我如何检查文件名是否在组合框内,如果不是,插入它?

我想(如果可能的话)在自动化中处理这个问题,而不必改变应用程序本身。我还希望能够直接将文本插入到组合框中,而不是自动使用文件选择器。

如何通过编程方式将值添加到文件组合框中,以便使用TestStack.White实现自动化

我找到解决办法了。

事实证明,可编辑的组合框也可以作为TextBox检索。所以我所要做的就是修改两行代码:

var fileNameTextBox = fileUploadWindow.Get<TextBox>(SearchCriteria.ByAutomationId("fileComboBox"));
fileNameTextBox.Text = fileName;