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实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
Python发送form-data请求及拼接form-data内容的方法
Mar 05 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
Python实现的递归神经网络简单示例
Aug 11 Python
新手入门Python编程的8个实用建议
Jul 12 Python
python+rsync精确同步指定格式文件
Aug 29 Python
解决Python中回文数和质数的问题
Nov 24 Python
Python内存映射文件读写方式
Apr 24 Python
python实现斗地主分牌洗牌
Jun 22 Python
Python Selenium操作Cookie的实例方法
Feb 28 Python
python turtle绘图
May 04 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的类 功能齐全的发送邮件类
2006/10/09 PHP
php.ini 中文版
2006/10/28 PHP
php 购物车实例(申精)
2009/05/11 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
jquery validate使用攻略 第四步
2010/07/01 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Python多进程原理与用法分析
2018/08/21 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
铁人纪念馆观后感
2015/06/16 职场文书
金榜题名主持词
2015/07/02 职场文书
学校运动会感想
2015/08/10 职场文书
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers