一、实战准备

  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

posted on 2019-11-30 21:55  三天乐趣  阅读(342)  评论(0编辑  收藏  举报