1. 程式人生 > >Selenium_python自動化跨瀏覽器執行測試(簡單多線程案例)

Selenium_python自動化跨瀏覽器執行測試(簡單多線程案例)

思路 IT port 情況 art 百度一 吸引 find 導致

發生背景:

    跨瀏覽器測試是功能測試的一個分支,用以驗證web應用在不同瀏覽器上的正常工作,通常情況下,我們都期望web類應用能夠被我們的用戶在任何瀏覽器上使用,例如有的人喜歡IE瀏覽器上使用,有的人喜歡firefox或者有的人喜歡Chrome。我們期望系統在任何瀏覽器上正常使用可以吸引更多的用戶來使用。

問題根源:

    需要我們跨瀏覽器測試的根源是:

    1、web不同和css樣式在不同瀏覽器中顯示結果是不一樣的;(非常讓前段開發頭疼的ie一直伴隨這windows這麽些年)

    2、javascrpt在不同瀏覽器中實現方式不一樣,例如某些點擊後動作和點擊後返回結果等等;

    3、有的低版本瀏覽器不支持h5;

    4、圖片位置大小問題、字體大小問題;

    5、div、span...等標簽float屬性問題等;

    6、瀏覽器和操作系統間的兼容問題;

    以上幾點輕微的是頁面樣式不一樣,嚴重的會導致某些功能不可用;

解決思路:

    如何執行跨瀏覽器測試,手工就是安裝多個瀏覽器執行手工點點測試,但是發現問題有時候可能是之前的緩存等,然後關掉瀏覽器清除歷史瀏覽記錄重新做一遍操作,自動化如何解決這個問題呢?我們可以使用Selenium webdriver在不同的瀏覽器(Firefox、IE、Chrome...)上運行測試用例執行測試;

    下面我們基於Python的多線程技術來嘗試啟動多個瀏覽器進行selenium執行自動化測試;

    具體代碼如下:   

#-*-coding:utf-8-*-
__author__=dong.c
from selenium import webdriver
import sys
import thread
import threading
from time import sleep
reload(sys)
sys.setdefaultencoding("utf-8")
def test_baidu_search(browser,url):
    driver = None
    #你可以自定義這裏,添加更多瀏覽器支持進來
    if browser == "ie":
        driver 
= webdriver.ie() elif browser == "firefox": driver = webdriver.Firefox() elif browser == "chrome": driver = webdriver.Chrome() if driver == None: exit() print u"開始【case_001】百度搜索" driver.get(url) print u"清除搜索中的數據,輸入搜索關鍵詞" driver.find_element_by_id("kw").clear() driver.find_element_by_id("kw").send_keys(u"博客園") print u"單擊 百度一下 按鈕 開始測試" driver.find_element_by_id("su").click() sleep(3) print u"關閉瀏覽器,退出webdriver" driver.quit() if __name__ == "__main__": #瀏覽器和首頁url data = { "ie":"http://www.baidu.com", "firefox":"http://www.baidu.com", "chrome":"http://www.baidu.com" } #構建並啟動線程 for b,url in data.items(): t = threading.Thread(target = test_baidu_search,args=(b,url)) t.start()

運行結果:

    運行上述代碼,你會發現3個瀏覽器都會啟動開始進行百度搜索,這裏只是做了最簡單核心區域的多線程的演示,你可以整理下寫入unittest中加上一些斷言,梳理出更加適合自動化的測試業務場景,至於如何更加深入利用selenium把軟件兼容性做的更好,還有更多的需要挖掘;

Selenium_python自動化跨瀏覽器執行測試(簡單多線程案例)