java - 自动化的 IndexOutOfBoundsException
问题描述
我正在尝试自动化应用程序。为此,我将哈希映射用于 excel 数据集,并且我已经创建了对这些数据执行操作的方法。
要执行的类文件如下所示
@Test
public void testLAP_Creamix() throws Exception {
try {
launchMainApplication();
Lapeyre_frMain Lapeyre_frMainPage = new Lapeyre_frMain(tool, test, user, application);
HashMap<String, ArrayList<String>> win = CreamixWindowsDataset.main();
SortedSet<String> keys = new TreeSet<>(win.keySet());
for (String i : keys) {
System.out.println("########### Test = " + win.get(i).get(0) + " ###########");
Lapeyre_frMainPage.EnterTaille(win.get(i).get(1));
Lapeyre_frMainPage.SelectCONFIGURATION(win.get(i).get(2));
Lapeyre_frMainPage.SelectPLANVASQUE(win.get(i).get(3));
Lapeyre_frMainPage.SelectCOULEUR(win.get(i).get(4));
Lapeyre_frMainPage.SelectPOIGNEES(win.get(i).get(5));
Lapeyre_frMainPage.SelectTYPE_DE_MEUBLE(win.get(i).get(6));
Lapeyre_frMainPage.VerifyPanierPrice(win.get(i).get(7));
Lapeyre_frMainPage.VerifyECO_PARTPrice(win.get(i).get(8));
Lapeyre_frMainPage.ClickCREAMIXReinit();
System.out.println("########### Test End ##############");
}
test.setResult("pass");
} catch (AlreadyRunException e) {
} catch (Exception e) {
verificationErrors.append(e.getMessage());
throw e;
}
}
哈希映射代码:
public static HashMap<String, ArrayList<String>> main() throws IOException {
final String DatasetSheet = "src/test/resources/CreamixDataSet.xlsx";
final String DatasetTab = "Creamix";
Object[][] ab = DataLoader.ReadMyExcelData(DatasetSheet, DatasetTab);
int rowcount = DataLoader.myrowCount(DatasetSheet, DatasetTab);
int colcount = DataLoader.mycolCount(DatasetSheet, DatasetTab);
HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
// i = 2 to avoid column names
for (int i = 2; i < rowcount;) {
ArrayList<String> mycolvalueslist = new ArrayList<String>();
for (int j = 0; j < colcount;) {
mycolvalueslist.add(ab[i][j].toString());
j++;
}
map.put(ab[i][0].toString(), mycolvalueslist);
i++;
}
return map;
}
查询:几天前我能够运行此代码,但现在在添加了一些新列之后,它给了我下面提到的错误。IndexOutOfBoundsException 索引 7 超出长度 7 的范围
我无法在这里追踪问题,我应该寻找什么?请帮忙!
解决方案
for (String i : keys) {
arr = win.get(i);//debug here,watch it size
Lapeyre_frMainPage.EnterTaille(arr.get(1));
}
推荐阅读
- sql - 根据 select 语句计算带值的字段
- python - (Python)如何在某个点之后停止将字符串添加到列表中?
- java - 我的应用程序在 2 个片段之间快速切换时崩溃
- ios - 如何在写入 txt 文件之前更改字符串大小?
- ios - 我怎样才能使每个循环的这个双倍工作?
- java - 使用 PubSub 在本地运行 java 数据流管道
- r - R:在经度/纬度图上叠加状态图
- laravel - 是否有可能确保 Laravel 作业实际上在轮次运行?
- powershell - 在 PowerShell 中从 O 盘查找最大的 15 个日志文件
- firebase - Firebase 云消息传递测试不起作用