【发布时间】:2019-04-14 08:56:05
【问题描述】:
我有 2 个列表,它们的内容相同,但名称参考不同。
我有一个表格,我使用“导出”按钮下载该表格,该按钮将 CSV 文件下载到我的本地文件系统,我正在使用 selenium 获取表格我试图将这些列表转换为“集合”,但没有这样做诡计。
这就是我的 CSV 列表的样子:
AuditCsvRow{dateStr='"2019-04-14 11:48"', userStr='"admin"', entityStr='"Users"', actionStr='"Login"', nameStr='"admin"', descriptionStr='"User login successful: admin"', clientIpStr='"192.168.51.35"'}
这是使用 selenium 下载的列表:
AuditRow{dateStr='2019-04-14 11:48', userStr='admin', entityStr='Users', actionStr='Login', nameStr='admin', descriptionStr='User login successful: admin', clientIpStr='192.168.51.35', clientIpTxt='192.168.51.35'}
List<AuditRow> uiRowList = new ArrayList<>();
List<AuditCsvRow>CSVrows = readAuditLogFromCSV(CSV_FILE_PATH);
uiRowList = auditPage.getAudittable();
Collection listOne = new ArrayList(Arrays.asList(CSVrows));
Collection listTwo = new ArrayList(Arrays.asList(uiRowList));
listOne.equals(listTwo);
private List<AuditRow> readAuditLogFromCSV(String fileName) throws IOException {
List<AuditRow> rowsList = new ArrayList<>();
Path pathToFile = Paths.get(fileName);
try(BufferedReader br = Files.newBufferedReader(pathToFile, StandardCharsets.US_ASCII)){
String line = br.readLine();
while(line != null){
String[] attributes = line.split(",");
AuditRow auditCsvRow = auditPage.createCsvRow(attributes);
rowsList.add(auditCsvRow);
line = br.readLine();
}
}
return rowsList;
}
【问题讨论】:
-
更改您的
readAuditLogFromCSV方法以将数据加载到AuditRow对象中并删除重复的类AuditCsvRow也删除行Collection listOne = new ArrayList(Arrays.asList(CSVrows)); Collection listTwo = new ArrayList(Arrays.asList(uiRowList));因为它们没有任何用处,@987654329 @ 和CSVRows已经是列表。 -
这些列表不包含相同的内容。第一个列表包含双引号,而第二个列表没有。显然,您的第一个 CSV 读取方法应该包含引号字符。
-
谢谢@ErwinBolwidt 我确实使用了你的建议,但现在我面临一个问题,我的列表中的项目由于某种原因被双引号,这就是我将 CSV 文件解析为列表的方式(编辑我最后的问题)。
-
@RealSkeptic - 你将如何处理双引号?我在我的问题中添加了我用来将 CSV 行解析为列表的方法。
-
我会使用 CSV 解析器,有可用的常用库。 CSV 不只是用逗号分隔。有引用和转义需要处理。
标签: java string list selenium object