zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    BZOJ3105-新Nim游戏
    POJ2947-Widget Factory
    POJ2248-Addition Chains
    POJ1964-City Game
    POJ2823-Sliding Window
    关于upx壳的一点认知,以及upx壳的特征识别
    易语言人脸识别算法源码
    易语言websocket客户端纯源码(无模块)
    易语言雷电模拟器批量虚拟定位源码
    易语言修改外部任意窗口标题图标源码
  • 原文地址:https://www.cnblogs.com/yuntimer/p/11964156.html
Copyright © 2011-2022 走看看