获取特定列中所有值的 IEnumerable
Getting an IEnumerable of all values in a certain column
我目前正在使用 Atata 框架并使用 Kendo 网格。我想要实现的是获取一个 IEnumerable 或一个包含列中所有值的集合。 kendo 网格定义如下:
public KendoGrid<TransactionGroupsRow, _> TransactionGroupsGrid { get; private set; }
public class TransactionGroupsRow : KendoGridRow<_>
{
[FindByColumnHeader("Group Name")]
public Link<_> GroupName { get; private set; }
}
我不仅想要所有 links GroupName 的集合,我还特别想要它们的文本部分,即 link 在屏幕上的显示效果。
所以在这个例子中,我想要一个包含“002999”和“003999”的 IEnumerable。
如果我需要提供更多详细信息,请告诉我。提前致谢!
有两种方法可以做到这一点。
使用SelectData
方法。对于计数 <= 50 的项目列表,它工作得非常快。
// Just get all items:
IEnumerable<string> groupNames = page.TransactionGroupsGrid.Rows
.SelectData(x => x.GroupName.Content.Value).Value;
// Assert items:
page.TransactionGroupsGrid.Rows
.SelectData(x => x.GroupName.Content.Value).Should.Contain("002999", "003999");
更快的方法是使用SelectContentsByExtraXPath
方法。即使对于具有 1000 行的 table,这个也会非常快地工作。但是您需要指定行 tr
元素内的 table 单元格 td
元素的相对 XPath。这也可以作为方法提取到页面对象class。
// Just get all items:
IEnumerable<string> groupNames = page.TransactionGroupsGrid.Rows
.SelectContentsByExtraXPath("td[1]", "Group Names").Value;
// Assert items:
page.TransactionGroupsGrid.Rows
.SelectContentsByExtraXPath("td[1]", "Group Names").Should.Contain("002999", "003999");
您还可以查看 Performance Practices for ControlList Atata 示例项目。
我目前正在使用 Atata 框架并使用 Kendo 网格。我想要实现的是获取一个 IEnumerable 或一个包含列中所有值的集合。 kendo 网格定义如下:
public KendoGrid<TransactionGroupsRow, _> TransactionGroupsGrid { get; private set; }
public class TransactionGroupsRow : KendoGridRow<_>
{
[FindByColumnHeader("Group Name")]
public Link<_> GroupName { get; private set; }
}
我不仅想要所有 links GroupName 的集合,我还特别想要它们的文本部分,即 link 在屏幕上的显示效果。
所以在这个例子中,我想要一个包含“002999”和“003999”的 IEnumerable。
如果我需要提供更多详细信息,请告诉我。提前致谢!
有两种方法可以做到这一点。
使用
SelectData
方法。对于计数 <= 50 的项目列表,它工作得非常快。// Just get all items: IEnumerable<string> groupNames = page.TransactionGroupsGrid.Rows .SelectData(x => x.GroupName.Content.Value).Value; // Assert items: page.TransactionGroupsGrid.Rows .SelectData(x => x.GroupName.Content.Value).Should.Contain("002999", "003999");
更快的方法是使用
SelectContentsByExtraXPath
方法。即使对于具有 1000 行的 table,这个也会非常快地工作。但是您需要指定行tr
元素内的 table 单元格td
元素的相对 XPath。这也可以作为方法提取到页面对象class。// Just get all items: IEnumerable<string> groupNames = page.TransactionGroupsGrid.Rows .SelectContentsByExtraXPath("td[1]", "Group Names").Value; // Assert items: page.TransactionGroupsGrid.Rows .SelectContentsByExtraXPath("td[1]", "Group Names").Should.Contain("002999", "003999");
您还可以查看 Performance Practices for ControlList Atata 示例项目。