1. 程式人生 > >Selenium_python自動化跨瀏覽器執行測試

Selenium_python自動化跨瀏覽器執行測試

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

 轉:https://www.cnblogs.com/dong-c/p/8976746.html

 

    跨瀏覽器測試是功能測試的一個分支,用以驗證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把軟體相容性做的更好,還有更多的需要挖掘;