python+selenium自动化软件测试(第12章):Python读写XML文档
XML 即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进 行定义的源语言。
xml 有如下特征: 首先,它是有标签对组成:<aa></aa> 标签可以有属性: <aa id=’123’></aa> 标签对可以嵌入数据: <aa>abc</aa>
Python对XML文档读写常用有几个模块:
(1) xml.etree.ElementTree
ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。
(2)xml.dom.*
将XML数据在内存中解析成一个树,通过对树的操作来操作XML。
(3)xml.sax.*
python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。
写入XML文档
#coding:utf-8 from xml.dom import minidom #写入xml文档的方法
def create_xml_test(filename):
#新建xml文档对象
xml=minidom.Document() #创建第一个节点,第一个节点就是根节点了
root=xml.cneateElement('root') #写入属性(xmlns:xsi是命名空间,同样还可以写入xsi: schemaLocation 指定 xsd 文件)
root.setAttribute('xmlns:xsi','http://www.xxx.com') #创建节点后,还需要添加到文档中才有效
xml.appendchild(root) #一般根节点是很少写文本内容,那么给根节点再创建一个子节点
text_node=xml.createElement('element')
text_node.setAttribute('id','id1')
root.appendChild(text_node) #给这个节点加入文本,文本也是一种节点
text=xml.cneateTextNode('hello world')
text_node.appendchild(text) #一个节点加了文本之后,还可以继续追加其他东西
tag=xml.createElement('tag')
tag.setAttribute('data', 'tag data')
text_node.appendchild(tag) #写好之后,就需要保存文档了
f=open(filename,'w')
f.write(xml.toprettyxml(encodings'utf-8'))
f.close() if __name__ == '__main__':
#在当前目录下,创建1. xml
create_xml_test('1.xml')
就会在本地生成一份xml的文档
读取XML文档
#coding:utf-8 from xml.dom import minidom #读取xml文档的方法
def read_xml_test(filename):
#打开这个文档,用parse方法解析
xml = minidom.parse(filename) #获取根节点
root = xml.documentElement #得到根节点下面所有的element节点
#更多方法可以参考以w3school的内容或者用dir(root)获取
elements = root.getElementsByTagName('element') #遍历处理,elements是一个列表
for element in elements:
#判断是否有id属性
if element.hasAttribute('id'):
#不加上面的判断也可以,若找不到属性,则返回空
print 'id:, element.getAttribute('id') #遍历element的子节点
for node in element.childNodes:
#通过nodeMame判断是否是文本
if node.nodeName = = '#text':
#用data属性获取文本内容
text = node.data.replace('\n, '')
#这里的文本需要特殊处理一下,会有多余的\n
print u'\t文本:', text
else:
#输出节点名
print '\t' + node.nodeName #输出属性值,这里可以用getAttribute方法获取
#也可以遍历得到,这是一个字典 for attr,attr_val in node.attributes.items():
print '\t\t', attr,':'jattr_val print '' if __name__ == '__main__':
read_xml_test('test.xml')
raw_input('ok')
python+selenium自动化软件测试(第12章):Python读写XML文档的更多相关文章
- python+selenium自动化软件测试(第8章) :多线程
前戏:线程的基础 运行多个线程同时运行几个不同的程序类似,但具有以下优点:进程内共享多线程与主线程相同的数据空间,如果他们是独立的进程,可以共享信息或互相沟通更容易.线程有时称为轻量级进程,他们并不需 ...
- python+selenium自动化软件测试(第13章):selenium面试题
前言最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下 一.selenium中如何判断元素是否存在?expected_conditions模块提供了16种判断方法 ...
- python+selenium自动化软件测试(第10章):测试驱动TDD
测试驱动开发模式,要求开发在写业务代码的时候,先写出测试代码,同时单元测试例子决定了如何来写产品的代码,并且不断的成功的执行编写的所有的单元测试例子,不断的完善单元测试例子进而完善产品代码, 这样随着 ...
- python+selenium自动化软件测试(第9章) :Logging模块
9.1 Logging模块 什么是日志记录?记录是跟踪运行时发生的事件的一种手段.该软件的开发人员将记录调用添加到其代码中,以指示某些事件已发生.事件由描述性消息描述,该消息可以可选地包含可变数据(即 ...
- python+selenium自动化软件测试(第11章):持续集成jenkins和GitHub的使用
11.1 jenkins持续集成环境 相关安装包下载链接:http://pan.baidu.com/s/1qYhmlg4 密码:dcw2赠送jenkins集成selenium环境视频链接http:// ...
- python+selenium自动化软件测试(第16章):基础实战(3)
#coding:utf-8 from time import sleep from selenium import webdriver class cloudedge_register(object) ...
- python+selenium自动化软件测试(第15章):基础实战(2)
#coding:utf-8 #for windows/py2.7 from time import sleep from selenium import webdriver browser = web ...
- python+selenium自动化软件测试(第14章):基础实战(1)
#coding=utf- from selenium import webdriven from selenium.webdriver.common.by import By from seleniu ...
- python+selenium自动化软件测试(第7章):Page Object模式
什么是Page ObjectModel模式Page Objects是selenium的一种测试设计模式,主要将每个页面看作是一个class.class的内容主要包括属性和方法,属性不难理解,就是这个页 ...
随机推荐
- swift3.0 CoreGraphics绘图-实现画板
swift3.0对绘图的API进行了优化,看起来更swift了. 看下UI的构造.设置画笔粗细.清空面板和保存到本地 下面直接看画板文件 这里我做的比较复杂,记录触摸到的每个点,再连成路径,其实直接用 ...
- 一份关于npm的新手指南
Node.js使得在服务器端使用JavaScript编写应用程序成为可能.它是基于V8Javascript运行时并且使用C++编写的,所以它的速度很快.最初,它旨在作为应用程序的服务器环境,但是开发人 ...
- 【JS】cookies 的使用
摘要 cookies 的限制 IE6~IE6以下,每个域名最多20个cookie IE7及以上,每个域名最多50个cookie Firefox,每个域名最多50个cookie Opera,每个域名最多 ...
- 关于EF第一次加载慢或过一段时间不访问时再次访问加载慢问题的总结
优化方案 1.安装Application Initialization 这是在iis8出来后才有的,iis8内置的功能,而对于iis7.5也提供了一个扩展以支持这个功能. Application In ...
- Android学习笔记- Fragment实例 底部导航栏的实现
1.要实现的效果图以及工程目录结构: 先看看效果图吧: 接着看看我们的工程的目录结构: 2.实现流程: Step 1:写下底部选项的一些资源文件 我们从图上可以看到,我们底部的每一项点击的时候都有不同 ...
- IntelliJ idea学习资源
工作需要, 最近得从Eclipse转战到Idea, 找了些不错的学习资料: 1, 从eclipse上迁移过来的用户说明: https://www.jetbrains.com/help/idea/201 ...
- 微信小程序实现“鲜肉APP”首页效果
项目地址http://git.oschina.net/djcx/WeiXinXiaoChengXu/tree/master 如果您觉得不错,记得给一个star 由于微信小程序目前是当下趋势,正好昨天弄 ...
- mybatis入门介绍一
首先介绍一下Mybatis是什么?mybatis是Java的持久层框架, JAVA操作数据库是通过jdbc来操作的,而mybatis是对jdbc的封装. 使用mybatis之后,开发者只需要关注sql ...
- Java基础之接口与抽象类及多态、内部类
final关键字 被其修饰的类,不能被继承. 被其修饰的方法,不能被覆盖. 被其修饰的变量,是一个常量,不能被修改,所以定义时必须初始化(和C++的const类似). 一般有final,会搭配stat ...
- strcpy.strcmp.strlen.strcat函数的实现
#include <stdio.h> #include <string.h> char *copy(char *a,char *b);//声明一个复制函数 char *ca ...