如何使用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方案实现步骤
- 编写测试数据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": "提示手机号格式错误" } ]
- 在自动化脚本中读取并解析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")
- 遍历测试用例执行自动化操作,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方案实现步骤
- 编写测试数据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>
- 在自动化脚本中读取并解析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
- 后续遍历执行操作和JSON方案完全一致,无需修改业务执行逻辑。
选型建议
- 优先选择JSON格式:语法简洁、文件体积小、几乎所有编程语言原生支持,解析代码复杂度低,适配绝大多数场景
- XML格式仅适合现有技术栈已有大量XML测试资产、或者需要对接仅支持XML的老旧系统的场景
内容的提问来源于stack exchange,提问作者enthusiasticCoder
相关产品推荐
相关产品推荐

