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)