0

0

Java Selenium 中使用双列 CSV 数据驱动表单填写的完整实践指南

聖光之護

聖光之護

发布时间:2026-02-02 11:17:11

|

694人浏览过

|

来源于php中文网

原创

Java Selenium 中使用双列 CSV 数据驱动表单填写的完整实践指南

本文详解如何在 selenium webdriver 中读取双列 csv 文件,并将每行的两列数据分别填入网页两个不同输入框,配合固定操作完成批量表单提交

在自动化测试或批量数据录入场景中,常需将外部结构化数据(如 CSV)映射到网页表单字段。当 CSV 包含两列(例如:用户名、邮箱),而目标页面有两个对应输入框(Element1 和 Element2),关键在于按行解构数组、按索引精准赋值,而非嵌套遍历。

以下为推荐实现方案(已整合异常处理与资源管理):

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

// 假设 driver 已初始化(如 ChromeDriver)
WebDriver driver = ...; 

ArrayList records = new ArrayList<>();
try (Scanner scan = new Scanner(new File("data.csv"))) {
    while (scan.hasNextLine()) {
        String[] line = scan.nextLine().trim().split(",", -1); // -1 保留空字段
        if (line.length >= 2) { // 防止数据不全导致 ArrayIndexOutOfBoundsException
            records.add(line);
        }
    }
} catch (FileNotFoundException e) {
    throw new RuntimeException("CSV 文件未找到: data.csv", e);
}

// 逐行处理:record[0] → Element1, record[1] → Element2
for (String[] record : records) {
    try {
        // 清空并填入第一列数据到第一个输入框
        driver.findElement(By.id("Element1")).clear();
        driver.findElement(By.id("Element1")).sendKeys(record[0].trim());

        // 清空并填入第二列数据到第二个输入框
        driver.findElement(By.id("Element2")).clear();
        driver.findElement(By.id("Element2")).sendKeys(record[1].trim());

        // 执行固定操作:点击按钮
        driver.findElement(By.id("Element3")).click();
        driver.findElement(By.id("Element4")).click();

        // 可选:添加显式等待,确保页面响应(如跳转/加载)
        // new WebDriverWait(driver, Duration.ofSeconds(3)).until(...);

    } catch (Exception e) {
        System.err.println("处理行 [" + String.join(",", record) + "] 时出错: " + e.getMessage());
        // 建议记录失败日志或截图,便于调试
        continue; // 继续下一行,避免单行失败中断整个流程
    }
}

关键要点说明:

一键抠图
一键抠图

在线一键抠图换背景

下载
  • 取消内层循环:原代码中 for (String temp1 : temp) 会将同一行的两列数据都塞进 Element1,导致逻辑错误;正确做法是直接通过 record[0] 和 record[1] 按列索引访问。
  • 健壮性增强:使用 try-with-resources 自动关闭 Scanner;split(",", -1) 避免末尾空字段被忽略;if (line.length >= 2) 防止数据缺失异常。
  • 用户体验优化:对输入框调用 .clear() 再 .sendKeys(),避免残留内容;.trim() 去除 CSV 中常见的首尾空格。
  • ⚠️ 生产环境建议
    • 使用 Apache Commons CSV 或 OpenCSV 库替代手动 split(),支持引号包裹、换行符等复杂 CSV 格式;
    • 将定位器(By.id(...))提取为 WebElement 常量或 Page Object 模式,提升可维护性;
    • 添加失败重试机制或断言验证提交结果,确保流程可靠性。

该模式可轻松扩展至多列场景(如 record[2], record[3]),是 Selenium 数据驱动测试(DDT)的基础实践范式。

立即学习Java免费学习笔记(深入)”;

相关文章

驱动精灵
驱动精灵

驱动精灵基于驱动之家十余年的专业数据积累,驱动支持度高,已经为数亿用户解决了各种电脑驱动问题、系统故障,是目前有效的驱动软件,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

523

2023.08.02

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1505

2023.10.24

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

786

2023.08.22

length函数用法
length函数用法

length函数用于返回指定字符串的字符数或字节数。可以用于计算字符串的长度,以便在查询和处理字符串数据时进行操作和判断。 需要注意的是length函数计算的是字符串的字符数,而不是字节数。对于多字节字符集,一个字符可能由多个字节组成。因此,length函数在计算字符串长度时会将多字节字符作为一个字符来计算。更多关于length函数的用法,大家可以阅读本专题下面的文章。

929

2023.09.19

apache是什么意思
apache是什么意思

Apache是Apache HTTP Server的简称,是一个开源的Web服务器软件。是目前全球使用最广泛的Web服务器软件之一,由Apache软件基金会开发和维护,Apache具有稳定、安全和高性能的特点,得益于其成熟的开发和广泛的应用实践,被广泛用于托管网站、搭建Web应用程序、构建Web服务和代理等场景。本专题为大家提供了Apache相关的各种文章、以及下载和课程,希望对各位有所帮助。

411

2023.08.23

apache启动失败
apache启动失败

Apache启动失败可能有多种原因。需要检查日志文件、检查配置文件等等。想了解更多apache启动的相关内容,可以阅读本专题下面的文章。

931

2024.01.16

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

44

2025.12.13

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

0

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

61

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 3.1万人学习

C# 教程
C# 教程

共94课时 | 8.3万人学习

Java 教程
Java 教程

共578课时 | 55.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号