我正在使用编码的UI自动化WPF应用程序,我试图在数据网格中找到一行无法找到控件,当我向开发人员询问控件层次结构时,他们说他们将另一个数据网格放入数据网格中。当我记录无法找到控件的控件时,任何人都可以帮助我。
单击第一个切换按钮后,第二行将显示,实际上它不是第二行,在该行中只添加了数据网格。这是我的代码..
WpfCustom custDetaPre = new WpfCustom(rowGrid);
custDetaPre.SearchProperties.Add(WpfCustom.PropertyNames.ClassName, "Uia.DataGridDetailsPresenter");
//custDetaPre.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
custDetaPre.SearchProperties.Add(WpfCustom.PropertyNames.TechnologyName, "UIA");
当我尝试记录第二个切换按钮时,它在上面的自定义控件中,在此自定义控件中放置了数据网格。
这是我的总代码:
WpfTable tableGrid = new WpfTable(DashboarWindow);
tableGrid.SearchProperties.Add(WpfTable.PropertyNames.ClassName, "Uia.DataGrid");
tableGrid.Find();
以上用于在表单中查找数据网格的代码。
WpfRow rowGrid = new WpfRow(tableGrid);
rowGrid.SearchProperties.Add(WpfRow.PropertyNames.ClassName, "Uia.DataGridRow");
上面的代码是数据网格的行
WpfCell celGrid = new WpfCell(rowGrid);
celGrid.SearchProperties.Add(WpfCell.PropertyNames.ClassName, "Uia.DataGridCell");
上面的代码是数据网格中的第一行和第一个单元格
WpfToggleButton toglButtonShowall = new WpfToggleButton(celGrid);
toglButtonShowall.SearchProperties.Add(WpfToggleButton.PropertyNames.AutomationId, "ShowDetails");
Mouse.Click(toglButtonShowall);
上面的代码是第一个切换按钮,当我点击此(切换)时,第二行将显示,(第二个切换按钮)但这不是第二行,这是行中的另一个数据网格。为了找到第二个数据网格,在这个自定义控件中有一个自定义控件,只有第二个网格存在。但我试图找到这个自定义控件我得到的控件找不到控件,自定义控件的代码如下所示。
WpfCustom custDetaPre = new WpfCustom(rowGrid);
custDetaPre.SearchProperties.Add(WpfCustom.PropertyNames.ClassName, "Uia.DataGridDetailsPresenter");
custDetaPre.DrawHighlight();
从上面的代码我得到了例外。 custDetaPre.Drawhighlight()
答案 0 :(得分:2)
我相信您要指定明确的Row
和Column
索引。
将行索引添加到WpfRow
和WpfCell
以及将列索引添加到WpfCell
从您的屏幕截图中,您至少无法限定该行,因为您有2行。只要您没有连续多个切换按钮,就可能不需要列索引。
按原样,如果您在设置搜索参数后调用rowGrid.FindMatchingControls()
,则应返回两个控件
从您的评论....
WpfRow rowGrid = new WpfRow(tableGrid);
rowGrid.SearchProperties.Add(WpfRow.PropertyNames.RowIndex , "0");
WpfCell celDeffe = new WpfCell(rowGrid);
celDeffe.SearchProperties.Add(WpfCell.PropertyNames.RowIndex, "0");
celDeffe.SearchProperties.Add(WpfCell.PropertyNames.ColumnIndex, "0");
WpfToggleButton toglButtonShowall = new WpfToggleButton(celGrid);
toglButtonShowall.SearchProperties.Add(WpfToggleButton.PropertyNames.AutomationId, "ShowDetails");
Mouse.Click(toglButtonShowall);
我希望上述内容适合您