Java&Selenium报错:List<Map<String,Object>>的get(int)不适用String参数
问题分析与解决:List<Map<String,Object>>调用get(String)报错
报错原因
resultSet是List<Map<String, Object>>类型,本质是存着Map对象的列表。List的get()方法仅接受int类型的索引参数(用来定位列表里的第几个元素),但你传入了字符串"sku"——这是Map的get()方法才会用的key参数,类型完全不匹配,所以触发报错。
解决方法
你得先从List里拿到目标Map对象,再调用Map的get()方法获取"sku"对应的值:
- 如果数据库查询仅返回一行结果(List里只有一个Map),直接取索引0的元素:
// 先获取列表中的第一个Map对象 Map<String, Object> targetRow = resultSet.get(0); // 再从Map中提取sku值并输入 driver.findElement(By.xpath("//*[@id=\"manage-options-panel\"]/table/tbody/tr[117]/td[3]/input")) .sendKeys(targetRow.get("sku").toString());
- 如果List里有多行结果,先确定要取哪一行的索引,再按上述步骤操作。
关键说明
不需要替换List的get()方法,核心是要分清:
- List的
get(int index):按索引取列表中的元素 - Map的
get(Object key):按key取Map中的值
必须先拿到List里的Map对象,再对Map进行key取值操作。
内容的提问来源于stack exchange,提问作者JustToKnow
相关产品推荐
相关产品推荐

