python+selenium自动化软件测试(第12章):Python读写XML文档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(encodingsutf-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自动化软件测试(第6章):selenium phantomjs页面解析使用

python+selenium自动化软件测试(第14章):基础实战

SELENIUM 2 自动化测试实战 基于PYTHON语言pdf

python+selenium自动化软件测试(第16章):基础实战

Selenium_python自动化第一个测试案例(代码基本规范)