一、实战准备
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