
本文介绍如何用 java 和 selenium 自动化处理 csv 文件中的两列数据,将每行第一列填入页面第一个输入框、第二列填入第二个输入框,并执行后续点击操作,实现高效批量表单提交。
在 Web 自动化测试或数据录入场景中,常需将结构化数据(如 CSV)映射到网页表单字段。当 CSV 包含两列(例如:用户名、邮箱),且页面对应两个 元素时,关键在于按行索引精准访问数组元素,而非嵌套遍历所有字段。
以下为完整、健壮的实现方案:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
// 假设 driver 已初始化(如 ChromeDriver)
WebDriver driver = ...;
try (Scanner scan = new Scanner(new File("data.csv"))) {
ArrayList records = new ArrayList<>();
// 逐行读取 CSV,按逗号分割(注意:简单场景可用;含逗号/引号需用 OpenCSV 等库)
while (scan.hasNextLine()) {
String line = scan.nextLine().trim();
if (!line.isEmpty()) {
String[] record = line.split(",", -1); // -1 保留空字段
if (record.length >= 2) {
records.add(record);
}
}
}
// 核心逻辑:逐行处理,record[0] → Element1,record[1] → Element2
for (String[] record : records) {
try {
// 显式等待确保元素可交互(推荐替代直接 findElement)
WebElement input1 = driver.findElement(By.id("Element1"));
WebElement input2 = driver.findElement(By.id("Element2"));
input1.clear(); // 避免残留内容
input1.sendKeys(record[0].trim());
input2.clear();
input2.sendKeys(record[1].trim());
driver.findElement(By.id("Element3")).click();
driver.findElement(By.id("Element4")).click();
// 可选:添加短暂停顿或页面校验(如成功提示出现)
Thread.sleep(1000); // 生产环境建议用 WebDriverWait 替代
} catch (Exception e) {
System.err.println("处理行失败 [" + String.join(",", record) + "]: " + e.getMessage());
// 可记录日志、截图或跳过当前行继续执行
}
}
} catch (FileNotFoundException e) {
throw new RuntimeException("CSV 文件未找到: data.csv", e);
} ✅ 关键要点说明:
- 取消内层循环:原代码中 for (String temp1 : temp) 会将同一行的两个值都塞进 Element1,导致逻辑错误;正确做法是直接通过下标 record[0] 和 record[1] 分别赋值。
- 增强健壮性:添加 trim() 去除首尾空格、isEmpty() 和 length >= 2 校验、异常捕获与错误提示,避免单行失败中断整个流程。
-
生产级建议:
- 使用 Apache Commons CSV 或 OpenCSV 解析复杂 CSV(支持引号包裹、换行符等);
- 用 WebDriverWait 替代 Thread.sleep() 实现智能等待;
- 将定位器(By.id)提取为常量或 Page Object 模式,提升可维护性;
- 对敏感操作(如 click)添加 isDisplayed() 和 isEnabled() 判断。
通过此方案,你即可稳定、清晰地完成“一CSV行→两表单字段→多操作”的自动化闭环,大幅提升重复性任务执行效率。
立即学习“Java免费学习笔记(深入)”;










