第一個(gè)web自動(dòng)化

Pyunittest的內(nèi)容我們看的也差不多了还栓,主體功能大致如此对嚼,現(xiàn)在我們來(lái)看看selenium如何使用Pyunittest執(zhí)行自動(dòng)化測(cè)試敲霍。

本期目標(biāo)

  1. 打開百度肋乍,搜索“selenium”庐舟,關(guān)閉瀏覽器
  2. 打開百度,設(shè)置搜索的最大條數(shù)為20條(默認(rèn)是10條)住拭,關(guān)閉瀏覽器

編寫測(cè)試案例

先編寫我們的測(cè)試類,在初始化的時(shí)候要做一些處理历帚,代碼如下

class Baidu(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.base_url = "http://www.baidu.com"
        self.verificationErrors = []
        self.accept_next_alert = True

Baidu類繼承unittest.TestCase滔岳。初始化中實(shí)例化webdriver.Chrome()。

self.driver.implicitly_wait(30)                             #表示等待一段時(shí)間挽牢。
self.base_url = "http://www.baidu.com"          #定義我們測(cè)試的地址谱煤。
self.verificationErrors = []                                    #這行定義的是一個(gè)錯(cuò)誤接受的列表,暫時(shí)不用管禽拔。
self.accept_next_alert = True                           #這行表示接受彈出的alert窗口刘离。

第一個(gè)目標(biāo)

第一個(gè)目標(biāo)很簡(jiǎn)單,用ID定位輸入框和搜索按鈕睹栖,具體代碼如下

def test_baidu_search(self):
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_id("kw").send_keys("selenium webdriver")
        driver.find_element_by_id("su").click()
        time.sleep(2)
        driver.close()

第二個(gè)目標(biāo)

第二個(gè)目標(biāo)有點(diǎn)麻煩硫惕,首先百度高級(jí)設(shè)置的地址是"http://www.baidu.com/gaoji/preferences.html",我們定義的基礎(chǔ)地址是“http://www.baidu.com”野来,要在后面把相關(guān)的字符串補(bǔ)齊恼除。之后我們要定位到搜索條數(shù)的地方,修改為20.修改完畢之后會(huì)彈出一個(gè)alert窗口曼氛,我們要干掉這個(gè)窗口后再關(guān)閉瀏覽器豁辉。具體代碼如下:

def test_baidu_set(self):
        driver = self.driver

        driver.get(self.base_url+"/gaoji/preferences.html")

        m = driver.find_element_by_name("NR")
        m.find_element_by_xpath("http://option[@value='20']").click()
        time.sleep(2)

        driver.find_element_by_xpath("http://input[@value='保存設(shè)置']").click()
        time.sleep(2)
        driver.switch_to_alert().accept()

同理,在這個(gè)測(cè)試案例中舀患,我們要先引用初始化的driver徽级。定位地址時(shí)用Python的字符串拼接方法。

m = driver.find_element_by_name("NR")
m.find_element_by_xpath("http://option[@value='20']").click()

這兩行表示定位到下拉選項(xiàng)為20的這個(gè)地方聊浅,第一行是定義到這個(gè)下拉組件中餐抢。

<select name="NR" id="nr">
<option value="10" selected="">每頁(yè)顯示10條</option>
<option value="20">每頁(yè)顯示20條</option>
<option value="50">每頁(yè)顯示50條</option>
</select>

上面是這個(gè)下拉組件的源碼现使,先定位到這個(gè)select組件,再使用xpath的方式定位到20條記錄這個(gè)下拉選項(xiàng)弹澎,調(diào)用點(diǎn)擊按鈕選中這條記錄朴下。谷歌瀏覽器的調(diào)試工具可以直接復(fù)制這條xpath地址(//*[@id="nr"]/option[2])也可以直接使用這個(gè)來(lái)定位。

driver.find_element_by_xpath("http://input[@value='保存設(shè)置']").click()

這條就是直接用xpath方法定位到保存按鈕苦蒿。

driver.switch_to_alert().accept()

這條命令就是接受彈出的alert對(duì)話框殴胧。

結(jié)束測(cè)試時(shí)清除的函數(shù)

每條測(cè)試案例開始時(shí)都會(huì)打開瀏覽器,然后執(zhí)行測(cè)試案例佩迟。執(zhí)行完畢后需要關(guān)閉瀏覽器团滥,關(guān)閉的方法我們寫在清除函數(shù)中,具體代碼如下:

def tearDown(self):
        self.driver.quit()
        self.assertEqual([],self.verificationErrors)

開始跑測(cè)試案例

最后我們需要吧測(cè)試案例跑起來(lái)报强,驗(yàn)證我們寫的對(duì)不對(duì)灸姊。在前面的章節(jié)已經(jīng)講過這里要這么跑了。具體代碼如下:

if __name__ == '__main__':
    testunit = unittest.TestSuite()
    testunit.addTest(Baidu('test_baidu_search'))
    testunit.addTest(Baidu('test_baidu_set'))
    runner.run(testunit)

完整的代碼

# -*- coding: utf-8 -*-
from selenium import webdriver
import unittest,time,re

class Baidu(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.base_url = "http://www.baidu.com"
        self.verificationErrors = []
        self.accept_next_alert = True

    def test_baidu_search(self):
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_id("kw").send_keys("selenium webdriver")
        driver.find_element_by_id("su").click()
        time.sleep(2)
        driver.close()

    def test_baidu_set(self):
        driver = self.driver
        driver.get(self.base_url+"/gaoji/preferences.html")
        driver.find_element_by_xpath('//*[@id="nr"]/option[3]').click()
        time.sleep(2)

        driver.find_element_by_xpath("http://*[@id='save']").click()
        time.sleep(2)
        driver.switch_to_alert().accept()

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([],self.verificationErrors)


if __name__ == '__main__':
    testunit = unittest.TestSuite()
    testunit.addTest(Baidu('test_baidu_search'))
    testunit.addTest(Baidu('test_baidu_set'))
    runner.run(testunit)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末秉溉,一起剝皮案震驚了整個(gè)濱河市力惯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌召嘶,老刑警劉巖父晶,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異弄跌,居然都是意外死亡甲喝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門铛只,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)埠胖,“玉大人,你說我怎么就攤上這事淳玩≈背罚” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵凯肋,是天一觀的道長(zhǎng)谊惭。 經(jīng)常有香客問我,道長(zhǎng)侮东,這世上最難降的妖魔是什么圈盔? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮悄雅,結(jié)果婚禮上驱敲,老公的妹妹穿的比我還像新娘。我一直安慰自己宽闲,他們只是感情好众眨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布握牧。 她就那樣靜靜地躺著,像睡著了一般娩梨。 火紅的嫁衣襯著肌膚如雪沿腰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天狈定,我揣著相機(jī)與錄音颂龙,去河邊找鬼。 笑死纽什,一個(gè)胖子當(dāng)著我的面吹牛措嵌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播芦缰,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼企巢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了让蕾?” 一聲冷哼從身側(cè)響起浪规,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎探孝,沒想到半個(gè)月后罗丰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡再姑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了找御。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片元镀。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖霎桅,靈堂內(nèi)的尸體忽然破棺而出栖疑,到底是詐尸還是另有隱情,我是刑警寧澤滔驶,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布遇革,位于F島的核電站,受9級(jí)特大地震影響揭糕,放射性物質(zhì)發(fā)生泄漏萝快。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一著角、第九天 我趴在偏房一處隱蔽的房頂上張望揪漩。 院中可真熱鬧,春花似錦吏口、人聲如沸奄容。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)昂勒。三九已至蜀细,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間戈盈,已是汗流浹背奠衔。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奕谭,地道東北人涣觉。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像血柳,于是被迫代替她去往敵國(guó)和親官册。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)难捌、插件膝宁、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,103評(píng)論 4 62
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)根吁,斷路器员淫,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 四月季節(jié)踏青坡,桃杏花開柳眏河击敌。 嫩草濕潤(rùn)野花伴介返,白云下面盡情歌。
    老槐樹閱讀 212評(píng)論 1 1
  • 不 說 故 事 , 只 講 道 理 提問 男友特別癡迷游戲怎么破衡瓶? 男朋友自己開工作室徘公,時(shí)間相對(duì)自由,旺季的時(shí)候特...
    愛晚睡閱讀 706評(píng)論 1 2
  • 現(xiàn)在,我們無(wú)論是在購(gòu)買理財(cái)產(chǎn)品還是在進(jìn)行銀行儲(chǔ)蓄的時(shí)候十厢,都會(huì)涉及到“年化收益率”這一概念等太。但是,很多人并不清楚“年...
    八條魚理財(cái)閱讀 928評(píng)論 0 3