You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium使用DataProvider时首次获取数据为null的问题求助

排查Selenium DataProvider返回第一组null数据的问题

我一眼就看出问题出在你的DataProvider里数组初始化和循环索引不匹配上,导致数组的第一行(索引0)完全没有被赋值,所以TestNG拿到的第一组数据就是null,null。下面给你详细分析和修正方案:

问题根源拆解

  1. 你通过excelfile.RowCount(1)拿到的是Excel表的总行数(包含表头行),比如如果你的表有1行表头+2行数据,rows的值就是3。
  2. 你创建了长度为rows的二维数组Object[][] credentials = new Object[rows][colm];,也就是3行的数组,但循环从i=1(对应Excel的第二行,实际数据行)开始赋值,这就导致数组的第0行(索引0)始终是空的,没有任何数据填充。
  3. TestNG会按照数组的顺序读取测试数据,第一组自然就是未赋值的null,null。

修正方案

我们需要调整数组的长度(只保留实际数据的行数),同时把Excel行索引和数组索引对应起来:

步骤1:计算实际数据行数

总行数减去表头的1行,得到真正需要的测试数据行数:

int dataRows = rows - 1; // 减去表头行

步骤2:用实际数据行数初始化数组

Object[][] credentials = new Object[dataRows][colm];

步骤3:调整循环的数组索引

循环时,Excel的行从1开始(数据行),对应数组的索引从0开始,所以用i-1作为数组的行索引:

for(int i = 1; i < rows; i++) {
    for(int j = 0; j<colm; j++) {
        // 用i-1对应数组的起始索引0
        credentials[i-1][j] = excelfile.getdata("LoginPage", i, j);
        System.out.println("Fetched data from excel sheet is -- "+credentials[i-1][j]);
    }
}

修正后的完整DataProvider方法

@DataProvider
public Object[][] TestData() throws IOException {
    excelfile = new ReadingExcelfile(System.getProperty("user.dir")+"\\src\\main\\java\\testData\\LinkedIn.xlsx");
    int rows = excelfile.RowCount(1);
    int colm = excelfile.TotalColm("LoginPage", 0);
    // 计算实际数据行数,初始化对应长度的数组
    int dataRows = rows - 1;
    Object[][] credentials = new Object[dataRows][colm];
    
    for(int i = 1; i < rows; i++) {
        for(int j = 0; j<colm; j++) {
            // 数组索引从0开始,对应Excel的第i行(i从1开始)
            credentials[i-1][j] = excelfile.getdata("LoginPage", i, j);
            System.out.println("Fetched data from excel sheet is -- "+credentials[i-1][j]);
        }
    }
    return credentials;
}

额外验证点

  • 确认ReadingExcelfile.RowCount(1)方法返回的是Sheet的总行数(包含表头),如果这个方法本身已经返回的是数据行数(排除表头),那你需要调整dataRows的计算逻辑。
  • 可以在循环前打印rows和dataRows的值,确认数据行数是否正确。

内容的提问来源于stack exchange,提问作者Sujanian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:29:10