創(chuàng)建你的第一個(gè)webdriver python代碼

webdriver架構(gòu).png

前言

今天我們開(kāi)始我們的第一個(gè)python webdriver自動(dòng)化測(cè)試腳本炮温。并就測(cè)試腳本進(jìn)行一一解釋說(shuō)明。

webdriver python代碼

本示例代碼演示了使用Ie瀏覽器訪問(wèn)百度進(jìn)行搜索測(cè)試。
HTMLTestRunner 從這里下載:
http://tungwaiyip.info/software/HTMLTestRunner_0_8_2/HTMLTestRunner.py
下載后和當(dāng)前測(cè)試腳本放在同一目錄。

# 將以下代碼保存到first_webdriver.py中

#-*- coding:utf-8 -*-

__author__ = u'苦葉子'

from selenium import webdriver
import unittest
import HTMLTestRunner  
import sys
from time import sleep

reload(sys)
sys.setdefaultencoding("utf-8")

class BaiduTest(unittest.TestCase):
    """百度首頁(yè)搜索測(cè)試用例"""
    def setUp(self):
        self.driver = webdriver.Ie()
        self.driver.implicitly_wait(30)
        self.base_url = u"http://www.baidu.com"
        
    def test_baidu_search(self):
        driver = self.driver
        print u"開(kāi)始[case_0001]百度搜索"
        driver.get(self.base_url)
        
        # 驗(yàn)證標(biāo)題
        self.assertEqual(driver.title, u"百度一下,你就知道")
        driver.find_element_by_id("kw").clear()
        driver.find_element_by_id("kw").send_keys(u"開(kāi)源優(yōu)測(cè)")
        driver.find_element_by_id("su").click()
        sleep(3)
        
        # 驗(yàn)證搜索結(jié)果標(biāo)題
        self.assertEqual(driver.title, u"開(kāi)源優(yōu)測(cè)_百度搜索")
        
    def tearDown(self):
        self.driver.quit()
        

if __name__ == '__main__':
    testunit = unittest.TestSuite()
    testunit.addTest(BaiduTest('test_baidu_search'))    
    # 定義報(bào)告輸出路徑
    htmlPath = u"testReport.html"
    fp = file(htmlPath, "wb")
    
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp, 
           title=u"百度測(cè)試", 
           description=u"測(cè)試用例結(jié)果")
    
    runner.run(testunit)
    
    fp.close()

代碼解釋

總體上代碼分為五大塊

  1. 文件保存編碼及作者定義
#-*- coding:utf-8 -*-
__author__ = u'苦葉子'
  1. 導(dǎo)入相關(guān)基礎(chǔ)模塊
# 從selenium中導(dǎo)入webdriver模塊
from selenium import webdriver
# 導(dǎo)入unittest模塊碳蛋,作為用例基類(lèi)
import unittest
# 導(dǎo)入html報(bào)告生成模塊,用于html格式報(bào)告生成
import HTMLTestRunner  
# 導(dǎo)入sys模塊
import sys
# 導(dǎo)入sleep模塊省咨,用于強(qiáng)制等待
from time import sleep
  1. 設(shè)置當(dāng)前python運(yùn)行環(huán)境為utf8
# 設(shè)置當(dāng)前python運(yùn)行在utf-8編碼下肃弟,這樣你的中文就不會(huì)亂碼了
reload(sys)
sys.setdefaultencoding("utf-8")
  1. 定義和實(shí)現(xiàn)測(cè)試用例
# 從unittest.TestCase繼承
class BaiduTest(unittest.TestCase):
    """百度首頁(yè)搜索測(cè)試用例"""
    
    # 用例級(jí)初始化函數(shù),自動(dòng)執(zhí)行
    def setUp(self):
        # 初始化基于IE瀏覽器的webdriver實(shí)例
        self.driver = webdriver.Ie()
        
        # 給當(dāng)前webdriver設(shè)置全局隱性等待時(shí)間零蓉,最大30s
        self.driver.implicitly_wait(30)
        
        # 設(shè)置首頁(yè)url
        self.base_url = u"http://www.baidu.com"
        
    def test_baidu_search(self):
        # 簡(jiǎn)單賦值笤受,這樣在本測(cè)試中后續(xù)就不用每次都寫(xiě)self.driver,
        # 少寫(xiě)幾個(gè)字符壁公, 都是為了偷懶啊??
        driver = self.driver
        
        # 在控制臺(tái)打印輸出
        print u"開(kāi)始[case_0001]百度搜索"
        
        # 啟動(dòng)瀏覽器感论,并訪問(wèn)首頁(yè)
        driver.get(self.base_url)
        
        # 驗(yàn)證標(biāo)題
        self.assertEqual(driver.title, u"百度一下,你就知道")
        
        # 清理搜索輸入框中的數(shù)據(jù)
        driver.find_element_by_id("kw").clear()
        
        # 在搜索輸入框中輸入 開(kāi)源優(yōu)測(cè)
        driver.find_element_by_id("kw").send_keys(u"開(kāi)源優(yōu)測(cè)")
        
        # 單擊 百度一下  按鈕
        driver.find_element_by_id("su").click()
        
        # 強(qiáng)制等3s
        sleep(3)
        
        # 驗(yàn)證搜索結(jié)果標(biāo)題
        self.assertEqual(driver.title, u"開(kāi)源優(yōu)測(cè)_百度搜索")
    
    # 用例級(jí)清理函數(shù)紊册,自動(dòng)執(zhí)行    
    def tearDown(self):
        # 退出webdriver比肄,同時(shí)關(guān)閉當(dāng)前webdrier session下所有瀏覽器窗口
        self.driver.quit()
  1. 測(cè)試腳本主運(yùn)行入口
# python main函數(shù)
if __name__ == '__main__':
    # 初始化一個(gè)用例套件集
    testunit = unittest.TestSuite()
    
    # 往用例套件集新增一個(gè)測(cè)試
    testunit.addTest(BaiduTest('test_baidu_search'))    
    
    # 定義報(bào)告輸出路徑,這里是當(dāng)前目錄
    htmlPath = u"testReport.html"
    
    # 打開(kāi)測(cè)試報(bào)告文件
    fp = file(htmlPath, "wb")
    
    # 構(gòu)建一個(gè)HTMLTestReport執(zhí)行器
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp, 
           title=u"百度測(cè)試", 
           description=u"測(cè)試用例結(jié)果")
    
    # 運(yùn)行測(cè)試集
    runner.run(testunit)
    
    # 關(guān)閉打開(kāi)的測(cè)試報(bào)告文件
    fp.close()

運(yùn)行代碼

使用以下命令運(yùn)行上述代碼

python first_webdriver.py

可以看到:

  1. 將啟動(dòng)瀏覽器訪問(wèn)百度首頁(yè)
  2. 在百度首頁(yè)搜索框中輸入了 開(kāi)源優(yōu)測(cè) 單擊了 百度一下 按鈕 顯示出搜索結(jié)果
  3. 閉關(guān)了瀏覽器
  4. 在當(dāng)前目錄下 生成了testReport.html的測(cè)試報(bào)告文件

總結(jié)

最后總結(jié)下囊陡,要注意的幾個(gè)關(guān)鍵點(diǎn):

  1. 確保要啟動(dòng)的瀏覽器的驅(qū)動(dòng)已經(jīng)下載好芳绩,具體在哪下載請(qǐng)參見(jiàn)上一章
  2. 確保下載了HTMLTestRunner模塊
  3. 最好自己把代碼一行行敲入一遍,不要直接拷貝運(yùn)行
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撞反,一起剝皮案震驚了整個(gè)濱河市妥色,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌遏片,老刑警劉巖嘹害,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撮竿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡笔呀,警方通過(guò)查閱死者的電腦和手機(jī)幢踏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)许师,“玉大人房蝉,你說(shuō)我怎么就攤上這事∥⑶” “怎么了搭幻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)逞盆。 經(jīng)常有香客問(wèn)我檀蹋,道長(zhǎng),這世上最難降的妖魔是什么纳击? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任续扔,我火速辦了婚禮,結(jié)果婚禮上焕数,老公的妹妹穿的比我還像新娘。我一直安慰自己刨啸,他們只是感情好堡赔,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著设联,像睡著了一般善已。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上离例,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天换团,我揣著相機(jī)與錄音,去河邊找鬼宫蛆。 笑死艘包,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的耀盗。 我是一名探鬼主播想虎,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼叛拷!你這毒婦竟也來(lái)了舌厨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤忿薇,失蹤者是張志新(化名)和其女友劉穎裙椭,沒(méi)想到半個(gè)月后躏哩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揉燃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年扫尺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片你雌。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡器联,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出婿崭,到底是詐尸還是另有隱情拨拓,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布氓栈,位于F島的核電站渣磷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏授瘦。R本人自食惡果不足惜醋界,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望提完。 院中可真熱鬧形纺,春花似錦、人聲如沸徒欣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)打肝。三九已至脂新,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粗梭,已是汗流浹背争便。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留断医,地道東北人滞乙。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像孩锡,于是被迫代替她去往敵國(guó)和親酷宵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容