一、实战准备
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
浙公网安备 33010602011771号