我有一个 url 列表,我在浏览器中打开每一行,然后将一些值收集到 HashMap 中。当我打印在 HashMap 中收集的值时,我看到它重复了每个先前的值。我究竟做错了什么?
这是网址的样子:
- https://myurl.com/test1111
- https://myurl.com/test2222
- https://myurl.com/test3333
- https://myurl.com/test4444
- https://myurl.com/test5555
这就是 HashMap 打印的样子:
- 测试1111 | 可用文件
- 测试2222 | 可用文件
- 测试1111 | 可用文件
- 测试2222 | 可用文件
- 测试3333 | 文件不可用
- 测试1111 | 可用文件
- 测试2222 | 可用文件
- 测试4444 | 可用文件
- 测试3333 | 文件不可用
- 测试1111 | 可用文件
- 测试2222 | 可用文件
- 测试4444 | 可用文件
- 测试5555 | 可用文件
- 测试3333 | 文件不可用
- 测试1111 | 可用文件
- 测试2222 | 可用文件
- 测试4444 | 可用文件
- 测试5555 | 可用文件
- 测试6666 | 可用文件
- 测试3333 | 文件不可用
- 测试7777 | 文件不可用
这是我的整个代码:
public class Access_file{
public static void readFile() throws IOException {
HashMap<String, String> values = new HashMap<String, String>();
CSVReader reader = null;
System.setProperty("webdriver.chrome.driver", "chromedriver");
WebDriver driver = new ChromeDriver();
try {
reader = new CSVReader(new FileReader("x_url.csv"), ',');
String[] nextLine;
while((nextLine = reader.readNext()) != null) {
for(String line : nextLine) {
driver.get(line);
String[] url_split = line.split("/");
String test_url = url_split[4];
String availability = driver.findElement(By.cssSelector("#mySelector']")).getText();
values.put(test_url, availability);
}
for(String i : values.keySet()) {
System.out.println(i + "|"+ values.get(i));
}
}
}
catch (NoSuchElementException e) {
e.printStackTrace();
}
finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}