• python-Xml 实战


    一、实战准备

      Xml  文件是可扩展标记语言,可以把数据存储到 Xml 文件中,使用时可以直接从 Xml 文件中读取。

      Xml 文件读取,使用标准库 xml.dom.minidom ,通过 document 的方式读取 Xml 文件的内容。创建 sina.xml 文件,文件的内容为:

    <?xml version='1.0' encoding='utf-8'?>
    <DataDriven>
        <url>http://mail.sina.com.cn/</url>
        <errorMsg emailNull="请输入邮箱名" emailFormat="您输入的邮件名格式不正确">
        </errorMsg>
    </DataDriven>
    

      下面读取 xml 文件中 url 节点中的内容和 errorMsg 节点中子节点的内容,代码如下:

    import xml.dom.minidom
    
    def getXmlData(value):
        '''
        获取 xml 单节点中的数据
        :param value: xml 文件中单节点名称
        :return: 返回 xml 文本中单节点名称所对应的文本信息
        '''
        dom = xml.dom.minidom.parse('sina.xml')
        db = dom.documentElement
        name = db.getElementsByTagName(value)
        nameValue = name[0]
        return nameValue.firstChild.data
    
    def getXmlUser(parent,child):
        '''
        获取 xml 子节点中的数据
        :param parent: xml 文件中父节点的名称
        :param child: xml 文件中子节点的名称
        :return: 返回 xml 文件中子节点名称所对应的其中一个文本信息
        '''
        dom = xml.dom.minidom.parse('sina.xml')
        db = dom.documentElement
        itemlist = db.getElementsByTagName(parent)
        item = itemlist[0]
        return item.getAttribute(child)
    
    # print(type(getXmlUser('errorMsg','emailFormat')))

    二、实践代码

      以新浪邮箱登录为例:

    __author__ = "XXX"
    
    import xml.dom.minidom
    import unittest
    from selenium import webdriver
    import time as t
    
    def getXmlData(value):
        '''
        获取 xml 单节点中的数据
        :param value: xml 文件中单节点名称
        :return: 返回 xml 文本中单节点名称所对应的文本信息
        '''
        dom = xml.dom.minidom.parse('sina.xml')
        db = dom.documentElement
        name = db.getElementsByTagName(value)
        nameValue = name[0]
        return nameValue.firstChild.data
    
    def getXmlUser(parent,child):
        '''
        获取 xml 子节点中的数据
        :param parent: xml 文件中父节点的名称
        :param child: xml 文件中子节点的名称
        :return: 返回 xml 文件中子节点名称所对应的其中一个文本信息
        '''
        dom = xml.dom.minidom.parse('sina.xml')
        db = dom.documentElement
        itemlist = db.getElementsByTagName(parent)
        item = itemlist[0]
        return item.getAttribute(child)
    
    class SinaLogin(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.get(getXmlData('url'))
            self.driver.implicitly_wait(30)
    
        def tearDown(self):
            t.sleep(3)
            self.driver.quit()
    
        def login(self,username,password):
            '''验证:测试新浪邮箱登录N中情况'''
            self.driver.find_element_by_id('freename').send_keys(username)
            self.driver.find_element_by_id('freepassword').send_keys(password)
            self.driver.find_element_by_link_text(u'登录').click()
        # @property
        def getLoginError(self):
            loginError = self.driver.find_element_by_xpath('/html/body/div[1]/div/div[2]/'
                                                        'div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
            # 在freeError-span[1]里,根据情况输入情况变化的
            return loginError.text
    
        def test_sina_password_null(self):
            '''验证:测试用户为空密码为空的错误提示信息'''
            # 用户名:空,密码:空,提示:请输入邮箱名
            self.login('','')
            self.assertTrue(self.getLoginError(),getXmlUser('errorMsg','emailNull'))
    
        def test_sina_username_format(self):
            '''验证:测试用户邮箱格式不正确的错误提示信息'''
            # 用户名:admin,密码:空,提示:请输入密码
            self.login('admin','')
            self.assertTrue(self.getLoginError(),getXmlUser('errorMsg','emailFormat'))
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)
    

      效果略。

    谢谢查看!

    2019-11-30

  • 相关阅读:
    升级edk2源码的一点补充
    关于Ubuntu系统忘记密码的解决方法合集
    UEFI Shell 下的程序设计
    Windows下EDK2环境的搭建以及经典的程序设计Print Hello World !-----(Linux下的待后续熟练了再更新)
    一个刚入行的BIOS工程师的自我简介
    反爬虫,非标准的json格式解析
    Scrapy+selenium爬取简书全站-爬虫
    Scrapy
    Python 爬取豆瓣电影Top250排行榜,爬虫初试
    Linux(Ubuntu) MySQL数据库安装与卸载
  • 原文地址:https://www.cnblogs.com/yuntimer/p/11964156.html
Copyright © 2020-2023  润新知