2013-10-30 56 views
0

在我的winform应用程序中,有一个BrowseForFolder窗口。在记录测试方法时,我选择了C:\Folder1\MyData。但是,这个路径可能会有所不同,我正在编写一个以driveLetter,文件夹名和文件名作为参数的方法。这些值应该是在浏览器窗口中选择的值。当我看着UIMap时,有一些树木。CodedUI如何将值传递给treeItem

例如,对于驱动器名称,其UILocalDiskCTreeItem。搜索特性有以下几点:

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

我尝试使用

this.UIBrowseForFolderWindow.UITreeViewWindow.UIDesktopTreeItem.UIComputerTreeItem.UILocalDiskCTreeItem.SetProperty("Friendly Name", "D:") 

但是名字似乎是只读属性和友好的名字也是这个树项目的名称/好记的名称属性设置为d驱动器不工作。如何将选择值传递给树项目?

回答

1

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

我推荐做上述事情,即使只是看看如何建立属性。

另一种可能性是在之前使用代码来更改属性。在调用录制动作之前的“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); 
} 
+0

好的,谢谢。我知道它与SearchProperties一起工作// if(!String.IsNullOrEmpty(folderName)) // UITestControl control1 = this.UIBrowseForFolderWindow.UITreeViewWindow.UIDesktopTreeItem.UIComputerTreeItem.UILocalDiskCTreeItem.UISTreeItem; // control1.SearchProperties.Add(WinControl.PropertyNames.Name,folderName,PropertyExpressionOperator.Contains); // Mouse.Click(control1); //}。如果你能帮助我,我还有一个问题。有关我的其他问题,请参阅下面的评论。 – Aqua267

+0

TreeItem中的每个UIElement在SearchProperties中都有一个属性值。此值似乎有深度,例如“我的电脑”的值为1,“我的电脑”中的某个文件夹的值为2,依此类推。我正在尝试修改我的代码以动态查找文件夹名称。为了做到这一点,我试图传递值属性和名称属性作为搜索属性。但WinControl.PropertyNames.Value不存在。我可以做一些像con.SearchProperties.Add(WinControl.PropertyNames.Name,folderName [ii],PropertyExpressionOperator.Contains))。 – Aqua267

+0

@ Aqua267很高兴帮助。如果您将其作为单独问题提出,您的新问题将得到更好的帮助。 – AdrianHHH