我如何与TestStack.White测试时操作DataGrid的价值观?(How can I ma

2019-10-20 15:55发布

我有一个使用一个DataGrid显示联系人列表的应用程序。 8列,4代表客户信息(串)和其他4两个复选框(即用于测试目的,我将所有设置为true)。

使用TestStack.White我可以通过它来获取DataGrid控件(即使元素表):

var distributionGrid = window.Get<Table>(SearchCriteria.ByAutomationId("DistributionGrid"));

但是我还没有能够添加行。 我试过了:

distributionGrid.Rows[0].Cells[0].SetValue(firstName); // firstName is a string

但是,这并不能工作,即使它编译和运行。 当我回去使用调试器,单元格的值[0,0]仍然无效。

我似乎无法工作,这一个。 我一直在使用Rows.Add()也试过,但我永远不能得到它似乎是正确的语法。

Answer 1:

我不喜欢这样的:

var dataGrid = page.Get<ListView>(AutomationIds.MyDataGridId);
var cell = dataGrid.Rows[0].Cells[1];
cell.Click();
cell.Enter("New Value");
dataGrid.Select(1); // lose focus

毛毡哈克。



Answer 2:

其实,我已经找到了答案(那种)。

我无法解释为什么的SetValue是行不通的,但如果我改变的代码行:

distributionGrid.Rows[0].Cells[0].Value = firstName;

一切正常。 由于任何人谁看着这一点。



Answer 3:

TestStack.White的最新版本不公开Value属性。 我使用以下行来模拟用户操作:

 var match = FindMatchingRow(SomeSearchCriteria);
 var cell = match.Cells[fieldName];
 cell.Click();
 cell.Enter(fieldValue); 
 Keyboard.Instance.PressSpecialKey(KeyboardInput.SpecialKeys.RETURN);


Answer 4:

另一种可能性,不是投给ListView的,是读取每个一行。 这是我需要的,因为我的DataGrid里面有不同的对象,这改变了一些行的列数。

var column3 = mainWindow.GetMultiple(SearchCriteria.ByAutomationId("Column3"));
var column3cell0 = (CheckBox)column3[0];
var column3cell0State = column3cell0.State;

但是,离开了我的问题是要访问的只有文字,但没有其他的UI对象内部的DataGridTextColumn。 Teststack白不承认该小区为UI项目,并留下阵列空。 我想我必须改变执行的添加一个文本框。



文章来源: How can I manipulate DataGrid values when testing with TestStack.White?