我将提取字符串类型的数组列表中表格的所有td,一旦提取出所有td,并显示为
[[0, 14], [1, 1], [5, 6]]
现在,我想在一行中写入0,14,在另一行中写入1,1,依此类推。
我用来提取表的td的函数如下:
public List<ArrayList<String>> retrieveTableData(By locator){
List<WebElement> rows = driver.findElements((locator));
List<ArrayList<String>> rowsData = new ArrayList<ArrayList<String>>();
for(WebElement row:rows){
List<WebElement> rowElements = row.findElements(By.xpath(".//td"));
ArrayList<String> rowData = new ArrayList<String>();
for(WebElement column:rowElements){
rowData.add(column.getText().toString());
}
rowsData.add(rowData);
}
System.out.println(rowsData);
return rowsData;
}
有人可以告诉我是否有更简单的方法将此列表写入excel。
提前致谢!
答案 0 :(得分:0)
循环播放列表,它将逐个打印元素。
for (String value : rowsData)
System.out.println(value);
否则将arrayList转换为String数组,
String[] rowsArr = rowsData.toArray((new String[rowsData.size()]));
for(String val : rowsArr)
System.out.println(val);
答案 1 :(得分:0)
我会稍微改变一下。我将使用String的二维数组,以便您可以使用基本上(col,row)来指定每个单元格中保存的String。
public String[][] retrieveTableData(By locator)
{
List<WebElement> rows = driver.findElements((locator));
int rowCount = rows.size();
int colCount = rows.get(0).findElements(By.xpath(".//td")).size(); // this assumes that all rows have the same number of cols
String[][] tableData = new String[colCount][rowCount];
for (int row = 0; row < rowCount; row++)
{
List<WebElement> cells = rows.get(row).findElements(By.xpath(".//td"));
for (int column = 0; column < colCount; column++)
{
tableData[column][row] = cells.get(column).getText();
}
}
return tableData;
}
此函数返回后,您可以将任何单元格指定为tableData [col] [row],这样可以更轻松地将数据写入Excel。
String[][] tableData = retrieveTableData(locator);
tableData[1][4]; // the cell contents of column 1, row 4