自动化测试设计测试用例时有的用例需要重复执行很多次,此时就需要对测试使用到的测试值进行参数化设计,而且参数化有利于测试用例的后期维护;并且自动化web测试也需要xpath进行页面元素的定位,所以我学习下python如何处理xml文件。
以下为使用到的html文件,把他放在了程序父文件夹的configure文件夹下
<html> <head> <title>通讯录</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> </head> <body> <center><h1>通讯录</h1></center> <table border="1" align="center" id="contactForm"> <thead> <tr><th>编号</th><th>姓名</th><th>性别</th><th>年龄</th><th>地址</th><th>电话</th></tr> </thead> <tbody> <tr> <td>001</td> <td>张三</td> <td>男</td> <td>18</td> <td lang="10">广州市天河区</td> <td>134000000000</td> </tr> <tr> <td lang="20">002</td> <td>李四</td> <td>女</td> <td>20</td> <td>广州市越秀区</td> <td>13888888888</td> </tr> <tr> <td>002</td> <td>郭靖</td> <td>男</td> <td>30</td> <td>广州市番禺区</td> <td>1111</td> </tr> </tbody> </table> </body> </html>
先下载需要的库lxml,我是直接在pycharm中下载的库,如果使用pip安装可能使用:
pip install lxml
命令会失败,需要加版本号之类的。
然后从文件中读取数据
from lxml import etree f = open("../configure/a.html","r",encoding="utf-8") #读取文件 f = f.read() #把文件内容转化为字符串 html = etree.HTML(f) #把字符串转化为可处理的格式
之后我主要写了两个函数,一个是把表格进行分项输出,一个是测试不同符号的使用.
test1:
def test1(html): result = html.xpath('//tbody/tr/td/text()') #把html文件中所有表格数据都存入result中,需注意result是一个列表 num = len(result) i = 1 while 6 * i <= num: #示例html文件中每一行有6列,所以以6个单元为一组对列表进行分片读取,需注意,这种方法需要保证表格中没有空元素或者和开发约定好假如有空元素以空格为占位符 first = (i - 1) * 6 last = i * 6 - 1 print(result[first:last + 1]) i += 1
test2:
def test2(html): result = html.xpath('//tbody/tr/td[@lang]/text()') result2 = html.xpath('//tbody/tr/td[@lang=20]/text()') result3 = html.xpath('//tbody/tr/*/text()') print(result) print(result2) print(result3)
调用函数:
test1()
test2()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异