我正在尝试为网页创建一个自动测试。网页有一个过滤器表格和一个表格。表格有5-6种不同的表示数据的方式。在硒测试中普及获取操作
我已经为每种数据展现方式创建了PageObjects(所有表格都只有不同的列)。现在我有了这个通用的Pageobject,它可以找到表并询问它的行。
但我无法得到代码的pece来获取表的所有行。
public <T> List<T> getAllRows(){
List<AbstractTableRow> allRows = table.findElements(By.xpath("//tr[@role='row']").className("jqgrow")).stream()
.map(AbstractTableRow::new).collect(Collectors.toList());
if(allRows != null) {
return (List<T>)allRows;
}
return null;
}
AbstractTableRow是所有其他行的父项。但它并不是真正的抽象类(我尝试过这种方式,最终导致了泛型的混乱业务+没有最终工作的反射)。所以,现在我需要某种方式来贬低父母对孩子的看法,或者有人可以举一个例子来说明可能会起作用的反思和泛型(然后我可以再次抽象AbstratTableRow抽象)。所有tablerows进来类型WebElement和所有rowobject有
public SomeRow(WebElement element)
的构造。方法需要返回List,其中SomeRow是5-6行类型之一。
似乎是同样的结果可以只是做可以实现“地图(ConcreteRow ::新)”从问题的代码。有些混淆了所有这些问题(不是很通用的通用+反射)逻辑解决了哪些问题? – Kudin