python 通过xml获取测试节点和属性的实例


Posted in Python onMarch 31, 2018

写在前面:通过xml获取测试数据,主要是为了使数据参数化。测试脚本和测试数据分离,使得脚本清晰容易维护,方便排查问题。

XML:可扩展的标记语言,是一种用于标记电子文件使其具有结构行的标记语言。

自动化测试中的使用场景:

1. 经常变动的测试数据;

2. 数据量大,不方便放在脚本中;

3. 数据作用于多个地方;

4. 相同测试用例,可以使用不同的数据;

5. 例:不稳定,后续改动较多功能;容易出错的功能

XML特征

• 具有自我描述性,本身不做任何事情

• 声明部分 <?xml version="1.0" encoding="UTF-8"?>

• 有开就有闭,成对出现 <data></data>

• 可以有属性值 <data type='demo'></data>

• xml用于传输数据 <data type='demo'> message </data>

• 可以嵌入子标签 <data type='demo'><text>message</text></data>

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文件

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <account type='createText'>
    <text>test data</text>
  </account>
  <account type='email'>
    <username>11111@qq.com</username>
    <password>11111111</password>
  </account>
</data>

下面方法相对应取数据的格式,# 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

以上这篇python 通过xml获取测试节点和属性的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
Python中的pygal安装和绘制直方图代码分享
Dec 08 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
python 实现selenium断言和验证的方法
Feb 13 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
PyQt5 实现给窗口设置背景图片的方法
Jun 13 Python
Python批量修改图片分辨率的实例代码
Jul 04 Python
django使用haystack调用Elasticsearch实现索引搜索
Jul 24 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
python matplotlib包图像配色方案分享
Mar 14 Python
Python 恐龙跑跑小游戏实现流程
Feb 15 Python
Python Xml文件添加字节属性的方法
Mar 31 #Python
Python简单生成随机数的方法示例
Mar 31 #Python
用python 批量更改图像尺寸到统一大小的方法
Mar 31 #Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 #Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 #Python
python如何将图片转换为字符图片
Aug 19 #Python
Pyinstaller将py打包成exe的实例
Mar 31 #Python
You might like
php下检测字符串是否是utf8编码的代码
2008/06/28 PHP
PHP使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
浅谈sass在vue注意的地方
2017/08/10 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
ionic2.0双击返回键退出应用
2019/09/17 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
Python绘制数码晶体管日期
2021/02/19 Python
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
上海某公司.net方向笔试题
2014/09/14 面试题
乡镇庆八一活动方案
2014/02/02 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
六一儿童节开幕词
2015/01/29 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python