1. 程式人生 > 實用技巧 >自動化測試框架Python+selenium+unittest系列 之 WebDriver瀏覽器驅動(Python)

自動化測試框架Python+selenium+unittest系列 之 WebDriver瀏覽器驅動(Python)

作者:cai.ruiying [ZSK]

前言:Python+selenium+unittest

  在介紹WebDriver瀏覽器封裝方法之前,先簡單介紹自動化測試框架Python+unittest+selenium。selenium是一個用於Web應用程式測試的開源自自動化工具。selenium測試直接執行在瀏覽器中,模擬真正的使用者在操作。selenium具有相容性好的特性,不管是作業系統、還是瀏覽器、還是指令碼程式語言,它都能覆蓋主流,堪稱“萬能”工具,因此很受使用者歡迎。unittest是一款Python自帶的測試框架,使用簡單,與常見的測試框架一樣,使用套件、元件實現自動化測試封裝。這裡也簡單給大家闡述環境搭建:

(1)Python建議大家使用Python3,可以通過官方地址下載安裝,官方下載地址:https://www.python.org/downloads/,再新增環境變數“path”-“Python安裝路徑”即可;

(2)selenium安裝,安裝Python完成後,可以使用pip直接安裝selenium,cmd→pip install selenium;

(3)unittest,由於它是Python自帶的測試框架,我們使用時只需要直接寫入程式碼“import unittest”即可。

  WebDriver是selenium的核心元件,通過瀏覽器驅動driver來驅動瀏覽器,執行測試指令碼。在我們日常指令碼的編寫過程中,不同的系統可能需要不同的瀏覽器來執行,不同的瀏覽器也有不同的配置方法,我們通過封裝了瀏覽器驅動方法,實現一個統一的瀏覽器驅動方法。

《自動化測試框架Python+selenium+unittest》將為大家呈現一個框架系列講解,陸續為大家介紹Web UI自動化測試常用方法的封裝及使用。

本篇是通過自己對瀏覽器驅動的經驗,為大家梳理三大主流瀏覽器的WebDriver驅動方法,及瀏覽器驅動注意事項:Chrome、Firefox、IE/Edge。包括:瀏覽器驅動的選用、瀏覽器驅動方法編寫、驅動方法呼叫。下面按順序為大家介紹。

一、Chrome

  Chrome的驅動是chromedriver.exe。chromedriver不嚴格區分32/64位,對應瀏覽器版本、系統版本即可。   較高版本(Chrome70以後)Chrome與chromedriver版本號一致,根據Chrome大版本下載即可,若一個Chrome對應多個chromedriver可根據詳細版本號或時間順序對應查詢。如下圖:

  低版本的Chrome,Chrome版本號與chromedriver版本號不同,對應下表查詢:

  chromedrivr參考下載地址:http://npm.taobao.org/mirrors/chromedriver/。

二、Firefox

  Firefox的驅動是geckodriver.exe。Firefox需要匹配Selenium、Firefox版本,Selenium2內建驅動向前支援預設路徑安裝的Firefox。Selenium3以上版本Firefox47向後支援,但目前沒有嚴格的版本對照,但區分32/64位,推薦大家根據瀏覽器版本時間、geckodriver版本時間,對照下載。如下圖:

  geckodriver參考下載地址:http://npm.taobao.org/mirrors/geckodriver/。

三、IE/Edge

  IE的驅動是IEDriverServer.exe。IEDriverServer版本與Selenium版本對應,注意區分到詳細版本,根據Selenium版本下載,區分32/64位。另外需要注意的是,需要在瀏覽器的Internet選項中的安全頁裡有4個安全選項,Internet、本地Internet、受信任的站點、受限制的站點,這4個裡面都有一個啟用保護模式,都需要勾選上。如下圖:

  IEDriverServer參考下載地址:http://selenium-release.storage.googleapis.com/index.html。

  Edge的驅動是MicrosoftWebDriver.exe(Legacy)/edgedriver.exe。舊版Edge18及以上會自動提供WebDriver更新。舊版Edge17及以下,根據Edge版本對應MicrosoftWebDriver版本下載。舊版Edge在如下圖:

  注意區分新/舊版本MicrosoftWebDriver下載,如下圖:

  MicrosoftWebDriver/edgedriver參考下載地址:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/。

四、瀏覽器驅動封裝例項(Python)

from selenium import webdriver


class browser_Wrapper(object):

    def browser_wrapper(self, item):
        '''
        啟動瀏覽器
        :param item:Chrome/Firefox/IE/Edge
        :return:
        '''
        # 本方法中的driver使用環節變數配置,將對應版本driver放置Python安裝路徑中即可
        if item == "Chrome":
            print("===為您啟動Chrome...")
            # 配置Chrome啟動項
            self.option = webdriver.ChromeOptions()
            # 遮蔽自動化受控提示 && 開發者提示
            self.option.add_experimental_option("excludeSwitches", ['enable-automation', 'load-extension'])
            # 遮蔽'儲存密碼'提示框
            self.prefs = {}
            self.prefs["credentials_enable_service"] = False
            self.prefs["profile.password_manager_enabled"] = False
            self.option.add_experimental_option("prefs", self.prefs)
            # 啟動谷歌瀏覽器
            webdriver.Chrome(options=self.option)
            # 執行緒等待2秒
        elif item == "Firefox":
            # 火狐瀏覽器無需進行配置,注意這裡的火狐是安裝在預設路徑的,自定義路徑安裝的需要配置火狐的絕對路徑
            print("===為您啟動Firefox...")
            # 啟動火狐瀏覽器
            self.driver = webdriver.Firefox()
            # 執行緒等待2秒
        elif item == "IE":
            print("===為您啟動IE...")
            # 注意iedriver版本需要與selenium版本對應
            self.driver = webdriver.Ie()
        elif item == "Edge":
            print("===為您啟動Edge...")
            # 注意與Edge版本匹配
            self.driver = webdriver.Edge()
        else:
            print("===未找到您的瀏覽器配置,請使用其他瀏覽器()...")


if __name__ == '__main__':
    browser = browser_Wrapper()

# 呼叫啟動瀏覽器方法browser_wrapper(),入參為:"Chrome"/"Firefox"/"IE"/"Edge"
browser.browser_wrapper("Chrome")