3
Я пишу свои вспомогательные методы для тестов на селен. Один из них:Перечни и карты Groovy
private static List<DataRow> parseTable(WebElement table) {
List<WebElement> tableHeaders = table.findElements(By.tagName("th"))
List<DataRow> dataRow = table.findElements(By.xpath(".//tbody/tr")).collect {
Map<String, String> columns = [:]
it.findElements(By.tagName("td")).eachWithIndex { item, i ->
columns[tableHeaders.get(i).text] = item.text
}
new DataRow(it, columns)
}
return dataRow
}
И я не люблю эту часть:
it.findElements(By.tagName("td")).eachWithIndex { item, i ->
columns[tableHeaders.get(i).text] = item.text
}
Есть ли лучший способ сделать карту из двух списков?
обеспечивается мощность 'a' и' b' одинакова? – dmahapatro
@dmahapatro Да, в противном случае вы получите количество элементов на карте, такое же, как и меньший из двух списков. Я предположил, что это так, поскольку приведенный выше пример будет вести себя одинаково (или сбой, если 'tableHeaders' был короче) –
Это имеет смысл, когда вы думаете с точки зрения' rows' и 'columns'. Если в строке для столбца нет элемента, то это не получается транспонированным. И наоборот, если для строки нет столбца, то пренебречь элементом. Например: 'assert [['a', 'b'], [1, 2, 3]]. Transpose() == [['a', 1], ['b', 2]]' 'assert [['a', 'b', 'c'], [1, 2]]. Transpose() == [['a', 1], ['b', 2]]' – dmahapatro