自动化测试设计测试用例时有的用例需要重复执行很多次,此时就需要对测试使用到的测试值进行参数化设计,而且参数化有利于测试用例的后期维护;并且自动化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()

 

 
posted on 2019-07-30 12:11  盈盈的月儿  阅读(16048)  评论(0编辑  收藏  举报