Visual studio 2015 在编码的UI测试C上,从WPF网格控件中的所有行和列生成对象数组#

Visual studio 2015 在编码的UI测试C上,从WPF网格控件中的所有行和列生成对象数组#,visual-studio-2015,coded-ui-tests,Visual Studio 2015,Coded Ui Tests,在visual studio 2015编码的UI测试中,尝试从WPF网格生成一个对象数组,获取所有行及其对应的单元格数据,用于测试带有网格控件的桌面应用程序 基本上,我试图在WPF网格上搜索、定位并单击单元格,基于字符串值,该字符串值应该出现在某个特定单元格中 这是一种c#测试方法,我试图获取数据: [TestMethod] public void GridInteractions() { #region Variable Declarations

在visual studio 2015编码的UI测试中,尝试从WPF网格生成一个对象数组,获取所有行及其对应的单元格数据,用于测试带有网格控件的桌面应用程序

基本上,我试图在WPF网格上搜索、定位并单击单元格,基于字符串值,该字符串值应该出现在某个特定单元格中

这是一种c#测试方法,我试图获取数据:

    [TestMethod]  
    public void GridInteractions()
    {
        #region Variable Declarations

        //This is my grid control from 'UIMap.uitest' control repository            
        var gridControl = this.MainWindow.MainPanel.GridPanel;

        #endregion

     }
该方法将返回一个
UITestControlCollection
,其中包含一个控件的所有直接后代。您想要的项可能是它们的(后代的后代…)后代。可以通过将以下内容添加到代码中找到它们:

UITestControlCollection children = gridControl.GetChildren();
使用
GetChildren
gridControl
进行递归下降以获得所需的值可能是值得的。或者,如果您知道控件的确切层次结构,那么如果只需要两个级别,您可以使用以下样式的代码:

UITestControlCollection children = gridControl.GetChildren();
foreach ( UITestControl child in children )
{
    UITestControlCollection grandChildren = child.GetChildren();
    foreach ( UITestControl grandChild in grandChildren )
    {
        ... process the grandchild ...
    }

}
该方法将返回一个
UITestControlCollection
,其中包含一个控件的所有直接后代。您想要的项可能是它们的(后代的后代…)后代。可以通过将以下内容添加到代码中找到它们:

UITestControlCollection children = gridControl.GetChildren();
使用
GetChildren
gridControl
进行递归下降以获得所需的值可能是值得的。或者,如果您知道控件的确切层次结构,那么如果只需要两个级别,您可以使用以下样式的代码:

UITestControlCollection children = gridControl.GetChildren();
foreach ( UITestControl child in children )
{
    UITestControlCollection grandChildren = child.GetChildren();
    foreach ( UITestControl grandChild in grandChildren )
    {
        ... process the grandchild ...
    }

}

感谢man的回复,但是在我得到我真正想要的行或单元格之前,执行后代递归,在某个点上,“UITestControl”不会给您带来任何子代。尝试使用正在使用的编码UI自动化我们的应用程序。我尝试在SpreadControl上使用编码的UI,但它并没有提供网格中的行或列访问,比如根据“字符串”或单击“列或行编号”查找单元格。您能在这里帮助我如何继续吗?@Omm也许行和列位于不支持编码UI的自定义控件中。当您使用编码的UI记录和生成工具时,它可以看到单元格中的内容,还是只将整个控件视为一个项目?如果是后者,那么你需要询问控件的作者它对编码UI有什么支持。在作者的论坛上查看了解决方案,他们说目前还不支持编码UI自动化。我其实是在寻找另一种选择。无论如何,谢谢:)@Omm您的应用程序是否要求有视觉障碍的人或不能使用键盘和鼠标的人使用?编码的UI使用与屏幕阅读器和其他输入设备等工具相同的机制。我相信有些国家要求残疾人可以使用应用程序和网站。这可能会影响你对电子表格支持的选择,这可能是电子表格作者应该考虑的问题。谢谢你的回答,但是做一个递归递归,在某个时候,“uITestPrime'”在我得到真正想要的行或单元格之前,不会给你任何孩子。尝试使用正在使用的编码UI自动化我们的应用程序。我尝试在SpreadControl上使用编码的UI,但它并没有提供网格中的行或列访问,比如根据“字符串”或单击“列或行编号”查找单元格。您能在这里帮助我如何继续吗?@Omm也许行和列位于不支持编码UI的自定义控件中。当您使用编码的UI记录和生成工具时,它可以看到单元格中的内容,还是只将整个控件视为一个项目?如果是后者,那么你需要询问控件的作者它对编码UI有什么支持。在作者的论坛上查看了解决方案,他们说目前还不支持编码UI自动化。我其实是在寻找另一种选择。无论如何,谢谢:)@Omm您的应用程序是否要求有视觉障碍的人或不能使用键盘和鼠标的人使用?编码的UI使用与屏幕阅读器和其他输入设备等工具相同的机制。我相信有些国家要求残疾人可以使用应用程序和网站。这可能会影响电子表格支持的选择,这可能是电子表格作者应该考虑的问题。