CodedUI如何将值传递给treeItem

时间:2013-10-30 19:56:12

标签: coded-ui-tests

在我的winform应用程序中,有一个BrowseForFolder窗口。在录制测试方法时,我选择了说C:\Folder1\MyData。但是这个路径可能不同,我正在编写一个方法,它将driveLetter,foldername和filename作为参数。这些值应该是在浏览器窗口中选择的值。当我看到UIMap时,有树木项目。

例如,对于驱动器名称,其UILocalDiskCTreeItem。搜索属性具有以下内容:

ControlType: TreeItem
Name: Local Disk (C:)
Value 2 (denotes the depth)

我尝试使用

将此树项的名称/友好名称属性设置为D驱动器
this.UIBrowseForFolderWindow.UITreeViewWindow.UIDesktopTreeItem.UIComputerTreeItem.UILocalDiskCTreeItem.SetProperty("Friendly Name", "D:")

但是,名称似乎是只读属性,友好名称也不起作用。如何将选择值传递给树项?

1 个答案:

答案 0 :(得分:1)

在UI Map编辑器中打开UI Map(Visual Studio 2012的标准部分,添加到Feature Pack 2中的Visual Studio 2010)。在右侧窗格中找到相关的UI Control并打开其属性面板。选择搜索属性过滤属性,然后单击该属性的省略号。您现在应该有一个窗口,提供用于搜索控件的各种项目,并可以根据需要对其进行编辑。

我建议您执行上述操作,即使只是为了查看属性的构建方式。

另一种可能性是在使用之前通过代码更改属性。在调用记录的操作之前的“Codeduitest1.cs”文件中,声明UITestControl并将其初始化为this.UIBrowseForFolderWindow.UITreeViewWindow.UIDesktopTreeItem.UIComputerTreeItem,然后更改其SearchPropertiesFilterProperties的内容。不知道你的代码,heirachy中的初始化值可能需要更高或更低。

<强>更新即可。提问者展示了对此答案发表评论的代码。该代码在此复制,因此更容易阅读。

if (!String.IsNullOrEmpty(folderName))
{
    UITestControl control1 = this.UIBrowseForFolderWindow
        .UITreeViewWindow.UIDesktopTreeItem.UIComputerTreeIt‌em
        .UILocalDiskCTreeItem.UISTreeItem;

    control1.SearchProperties.Add(WinControl.PropertyNames.Name,
        folderName, PropertyExpressionOperator.Contains);

    Mouse.Click(control1);
}