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学习笔记:字典的使用示例详解
Jun 13 Python
python编程羊车门问题代码示例
Oct 25 Python
Python中join函数简单代码示例
Jan 09 Python
python 重定向获取真实url的方法
May 11 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
PyTorch的深度学习入门之PyTorch安装和配置
Jun 27 Python
Python3.7 pyodbc完美配置访问access数据库
Oct 03 Python
浅谈Django2.0 加xadmin踩的坑
Nov 15 Python
python中从for循环延申到推导式的具体使用
Nov 29 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
python执行js代码的方法
May 13 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判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
thinkPHP查询方式小结
2016/01/09 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
如何使用Javascript正则表达式来格式化XML内容
2013/07/04 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
python中的编码知识整理汇总
2016/01/26 Python
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
HTML5之语义标签介绍
2016/07/07 HTML / CSS
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
营销总经理的岗位职责
2013/12/15 职场文书
感恩的演讲稿
2014/05/06 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
python对文档中元素删除,替换操作
2022/04/02 Python