Xml是可扩展标记语言,关于xml的技术本人这里不在介绍,感兴趣的同学可以去w3c看看详细的资料,这里,我仅仅介绍的是如何获取xml文档结构中的数据,并且应用到自动化测试中,仅此而已,因为本文档的核心是学习自动化,本节是学习测试驱动方式。已百度登录为实例,xml的数据如下:
<?xmlversion="1.0" encoding="utf-8"?>
<baidu>
<!--百度账号以及密码-->
<login username="your account"password="your password" />
<!--账号密码为空错误信息-->
<null>请您填写手机/邮箱/用户名</null>
</baidu>
如下函数是分别获取xml文档结构的属性值以及获取标签之间的数据,见如下的代码:
importxml.dom.minidom
#获取标签的属性值
defgetPropertyXml(value1,value2):
#打开文档结构
document=xml.dom.minidom.parse("D:\\Git\PyCharm\\SeleniumTestingWithPython\\DataDriverTest\\baiduXml.xml")
#得到文档元素结构
demo=document.documentElement
itemList=demo.getElementsByTagName(value1)
db=itemList[0]
property=db.getAttribute(value2)
return property
importxml.dom.minidom
'''
获取标签对之间的数据
'''
defgetValueXml(value):
#打开xml的文档
document=xml.dom.minidom.parse("D:\\Git\PyCharm\\SeleniumTestingWithPython\\DataDriverTest\\baiduXml.xml")
#得到文档元素结构
demo=document.documentElement
db=document.getElementsByTagName(value)
data=db[0]
return data.firstChild.data
print getValueXml('null')
使用如上的二个方法,我们分别就可以获取到login结点的属性值以及标签之间的数据,如下,我们通过测试实例代码,来实现账号密码为空的时候,验证返回的错误信息的实例,见如下的代码:
#coding:utf-8
importunittest
fromselenium import webdriver
fromddt import ddt,data,unpack
fromtime import sleep
import vke
@ddt
class developTest(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Firefox()
self.driver.implicitly_wait(30)
self.driver.maximize_window()
self.driver.get('http://www.baidu.com')
self.addCleanup(self.driver.quit)
def testLogin(self,value='null'):
self.driver.find_element_by_link_text(u'登录').click()
self.driver.find_element_by_id('TANGRAM__PSP_8__submit').click()
errorText=self.driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_8__error']").text
self.assertEqual(errorText , vke.getValueXml(value))
if__name__=='__main__':
unittest.main(verbosity=2)