最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
python 通过xml获取测试节点和属性的实例
时间:2018-04-03 编辑:猪哥 来源:一聚教程网
自动化测试中的使用场景:
1. 经常变动的测试数据;
2. 数据量大,不方便放在脚本中;
3. 数据作用于多个地方;
4. 相同测试用例,可以使用不同的数据;
5. 例:不稳定,后续改动较多功能;容易出错的功能
XML特征
• 具有自我描述性,本身不做任何事情
• 声明部分
• 有开就有闭,成对出现
• 可以有属性值
• xml用于传输数据 message
• 可以嵌入子标签
python获取xml文件方法集合
引入模块处理xml文件
from xml.dom.minidom import parse
打开xml文档,
DOMTree = xml.dom.minidom.parse(data_path)
根据xml文档,得到文档元素的对象
data = DOMTree.documentElement
获取节点列表
nodelist = data.getElementsByTagName(大类名称)
获取第一个节点的子节点列表
childlist = nodelist[0].childNodes
获取XML节点属性值
node.getAttribute(AttributeName)
获取XML节点对象集合
node.getElementsByTagName(TagName)
返回子节点列表
node.childNodes
获取XML节点值
node.childNodes[index].nodeValue
访问第一个节点
node.firstChild ,等价于pagexml.childNodes[0]
访问元素属性 例如:
Node.attributes["id"] a.name #就是上面的 "id" a.value #属性的值
以下为具体的demo内容:
方法调用
#方法调用 text = get_data_vaule('account','type','createText','text') print text #结果 test data
xml文件
test data 11111@qq.com 11111111
下面方法相对应取数据的格式,# style = xml中的大类 ; typename = 细分属性; typevalue = 细分属性的值; valuename = xml文件,需要获取的值的tag;
如果需要获取相对应的上面XML文件中
“test data”的值,那么style = data ; typename = type; typevalue = createText; valuename = text “11111@qq.com”的值,那么style = data ; typename = type; typevalue = email; valuename = username
方法文件
#!/usr/bin/python # -*- coding: UTF-8 -*- import unittest import os import time from xml.dom.minidom import parse import xml.dom.minidom #获取xml文件地址 path = os.path.abspath('.') data_path = os.path.join(path,'features/data/data.xml') #获取xml文件地址 DOMTree = xml.dom.minidom.parse(data_path) data = DOMTree.documentElement def get_attrvalue(node, attrname): return node.getAttribute(attrname) # style = xml中的大类 ; typename = 细分属性; typevalue = 细分属性的值; valuename = xml文件,需要获取的值的tag; def get_data_vaule(style, typename, typevalue, valuename): nodelist = data.getElementsByTagName(style) for node in nodelist: if typevalue == node.getAttribute(typename): node_name = node.getElementsByTagName(valuename) value = node_name[0].childNodes[0].nodeValue print value return value return
相关文章
- Golang ProtoBuf的基本语法详解 10-20
- Python识别MySQL中的冗余索引解析 10-20
- Python+Pygame绘制小球代码展示 10-18
- Python中的数据精度问题介绍 10-18
- Python随机值生成的常用方法介绍 10-18
- python3解压缩.gz文件分析 09-27