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‘)
时间: 2024-10-10 16:11:01

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

python+selenium自动化软件测试(第8章) 多线程

前戏:线程的基础 运行多个线程同时运行几个不同的程序类似,但具有以下优点:进程内共享多线程与主线程相同的数据空间,如果他们是独立的进程,可以共享信息或互相沟通更容易.线程有时称为轻量级进程,他们并不需要多大的内存开销,他们关心的不是过程便宜.一个线程都有一个开始,执行顺序,并得出结论.它有一个指令指针,保持它的上下文内正在运行的跟踪.(1).它可以是抢占(中断)(2).它可以暂时搁置(又称睡眠),而其他线程正在运行看一下以下的小案例: import thread from time import

python+selenium自动化软件测试(第13章):selenium面试题

前言最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下 一.selenium中如何判断元素是否存在?expected_conditions模块提供了16种判断方法,以下方法是判断元素存在DOM中:presence_of_element_located    """ An expectation for checking that an element is present on the DOM of a page. This does n

python+selenium自动化软件测试(第10章):测试驱动TDD

测试驱动开发模式,要求开发在写业务代码的时候,先写出测试代码,同时单元测试例子决定了如何来写产品的代码,并且不断的成功的执行编写的所有的单元测试例子,不断的完善单元测试例子进而完善产品代码, 这样随着功能的开发完成,测试代码也会对应的完成, 很显然,这是一个全新的开发模式, 在一定程度上,可以完全的提高软件的质量,以及开发可以对自己写的代码进行一个全面的评估和测试. TDD 模式是一个很大的概念,在这里, 我重点介绍下测试驱动模式与自动化的融合以及精简自动化的测试代码.下面我们来看一个登录的案例

python+selenium自动化软件测试(第9章) :Logging模块

9.1 Logging模块 什么是日志记录?记录是跟踪运行时发生的事件的一种手段.该软件的开发人员将记录调用添加到其代码中,以指示某些事件已发生.事件由描述性消息描述,该消息可以可选地包含可变数据(即,对于事件的每次出现可能不同的数据).事件也是开发人员对事件的重视; 重要性也可以称为级别 或严重性.记录功能logging.debug('此功能提供详细信息')logging.warning('意外发生')logging.error('用于存储异常跟踪')logging.info('确认事情正在按

python+selenium自动化软件测试(第11章):持续集成jenkins和GitHub的使用

11.1 jenkins持续集成环境 相关安装包下载链接:http://pan.baidu.com/s/1qYhmlg4 密码:dcw2赠送jenkins集成selenium环境视频链接http://pan.baidu.com/s/1qXAHwg0 密码:juy7 11.2 tomcat+jenkins *******************************************************************************相关安装包下载链接:http://p

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

#coding=utf-8 from selenium import webdriven from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException im

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

#coding:utf-8 from time import sleep from selenium import webdriver class cloudedge_register(object): def __init__(self,mailaddr,passwd,url): self.mailaddr = mailaddr self.passwd = passwd self.url = url self.browser = webdriver.Finefox() def register

python+selenium自动化软件测试(第7章):Page Object模式

什么是Page ObjectModel模式Page Objects是selenium的一种测试设计模式,主要将每个页面看作是一个class.class的内容主要包括属性和方法,属性不难理解,就是这个页面中的元素对象,比如输入用户名的输入框,输入登陆密码的输入框,登陆按钮,这个页面的url等,而方法,主要是指这个页面可以提供的具体功能.为什么选择POM?我们先看一段简单的代码如下: from selenium import webdriver import time driver = webdri

python+selenium自动化软件测试(第6章):selenium phantomjs页面解析使用

我们都知道Selenium是一个Web的自动化测试工具,可以在多平台下操作多种浏览器进行各种动作,比如运行浏览器,访问页面,点击按钮,提交表单,浏览器窗口调整,鼠标右键和拖放动作,下拉框和对话框处理等,我们抓取时选用它,主要是Selenium可以渲染页面,运行页面中的JS,以及其点击按钮,提交表单等操作. from selenium import webdriver driver = webdriver.PhantomJS() driver.get("http://www.xxxxxx.com&