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

如何使用Selenium WebDriver通过JSON/XML向表单传递数据

注册表单自动化用JSON/XML存储测试数据的实现方案

所需依赖

以下优先给出国内最常用的Python自动化技术栈依赖,其他技术栈的对应依赖可参考备选说明:

Python技术栈依赖

  • JSON场景:无需额外第三方依赖,Python标准库自带json模块即可完成序列化/反序列化操作
  • XML场景:基础解析可用标准库xml.etree.ElementTree,如果需要复杂XPath操作、性能更高的解析能力,可安装第三方库lxml,安装命令为pip install lxml
  • 自动化框架无需额外适配:你现有使用的Selenium、Playwright、Requests(接口自动化场景)等工具都可以直接对接JSON/XML解析后的数据

其他技术栈对应依赖

  • Java:JSON解析用jackson/fastjson,XML解析用dom4j
  • JavaScript/TypeScript:JSON原生支持,XML解析用xml2js
  • Go:JSON原生支持,XML解析用标准库encoding/xml

具体实现步骤

优先推荐使用更轻量易用的JSON方案,XML方案可作为兼容老旧系统的备选。

JSON方案实现步骤

  1. 编写测试数据JSON文件,可命名为register_test_data.json,结构示例如下:
[
  {
    "case_name": "正常注册-全字段合法",
    "username": "testUser001",
    "email": "test001@example.com",
    "phone": "13800138000",
    "password": "Test@123456",
    "expected_result": "注册成功"
  },
  {
    "case_name": "异常注册-手机号格式非法",
    "username": "testUser002",
    "email": "test002@example.com",
    "phone": "12345",
    "password": "Test@123456",
    "expected_result": "提示手机号格式错误"
  }
]
  1. 在自动化脚本中读取并解析JSON文件,Python示例代码:
import json

def load_test_data(file_path: str) -> list:
    with open(file_path, 'r', encoding='utf-8') as f:
        return json.load(f)

test_cases = load_test_data("register_test_data.json")
  1. 遍历测试用例执行自动化操作,Selenium场景示例:
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("你的注册页面地址")

for case in test_cases:
    # 清空历史输入
    driver.find_element(By.ID, "username").clear()
    driver.find_element(By.ID, "email").clear()
    driver.find_element(By.ID, "phone").clear()
    driver.find_element(By.ID, "password").clear()
    # 填入对应字段
    driver.find_element(By.ID, "username").send_keys(case["username"])
    driver.find_element(By.ID, "email").send_keys(case["email"])
    driver.find_element(By.ID, "phone").send_keys(case["phone"])
    driver.find_element(By.ID, "password").send_keys(case["password"])
    # 提交注册
    driver.find_element(By.ID, "submit_btn").click()
    # 后续可根据case["expected_result"]补充断言逻辑

XML方案实现步骤

  1. 编写测试数据XML文件,可命名为register_test_data.xml,结构示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<test_cases>
    <test_case case_name="正常注册-全字段合法">
        <username>testUser001</username>
        <email>test001@example.com</email>
        <phone>13800138000</phone>
        <password>Test@123456</password>
        <expected_result>注册成功</expected_result>
    </test_case>
    <test_case case_name="异常注册-手机号格式非法">
        <username>testUser002</username>
        <email>test002@example.com</email>
        <phone>12345</phone>
        <password>Test@123456</password>
        <expected_result>提示手机号格式错误</expected_result>
    </test_case>
</test_cases>
  1. 在自动化脚本中读取并解析XML文件,Python示例代码:
import xml.etree.ElementTree as ET

def load_test_data(file_path: str) -> list:
    tree = ET.parse(file_path)
    root = tree.getroot()
    test_cases = []
    for case_node in root.findall("test_case"):
        case = {
            "case_name": case_node.attrib["case_name"],
            "username": case_node.find("username").text,
            "email": case_node.find("email").text,
            "phone": case_node.find("phone").text,
            "password": case_node.find("password").text,
            "expected_result": case_node.find("expected_result").text
        }
        test_cases.append(case)
    return test_cases
  1. 后续遍历执行操作和JSON方案完全一致,无需修改业务执行逻辑。

选型建议

  • 优先选择JSON格式:语法简洁、文件体积小、几乎所有编程语言原生支持,解析代码复杂度低,适配绝大多数场景
  • XML格式仅适合现有技术栈已有大量XML测试资产、或者需要对接仅支持XML的老旧系统的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:21:02