文章目錄
- 目錄
- 1. 自動化
- 1.1 自動化概念
- 1.1.1 回歸測試
- 1.2 自動化分類
- 1.3 自動化測試金字塔
- 2. web自動化測試
- 2.1 驅動
- 2.1.1 安裝驅動管理
- 2.1.2 selenium庫
- 3. Selenium
- 3.1 一個簡單的web自動化示例
- 3.2 selenium+驅動+瀏覽器的工作原理
目錄
- 自動化
- web自動化測試
- Selenium
1. 自動化
1.1 自動化概念
自動的代替人的行為完成操作。
自動化在生活中處處可見:自動灑水機,只要通上水就可以自動化灑水并且可以自動的旋轉;自動洗手液,免去了手動擠壓可以自動感應出洗手液;超市自動閘門,不需要手動的開門關門。
生活中的自動化案例有效的減少了人力的消耗,同時也提高了生活的質量。
軟件中的自動化測試也是如此,通過自動化測試有效減少人力的消耗的同時也提高了測試的質量和效率。
自動化的主要目的就是用來進行回歸測試。
1.1.1 回歸測試
軟件有多個版本需要進行功能的整體回歸,為了避免新增功能影響到歷史的功能需要進行功能的回歸。
1.2 自動化分類
1.3 自動化測試金字塔
自動化的類型非常多,那么到底哪一種是最好的?哪一種測試的收益會更佳?
這里我們介紹測試圈內非常著名的自動化測試金字塔:
開發人員寫完代碼之后就執行單元測試,不需要額外的時間和精力來熟悉代碼,因此投資回報率最高。
前端可以看到的元素非常多:文字、圖片、輸入框、按鈕… 每個元素的大小、顏色、形狀… 都需要進行測試,而且前端涉及到的不可靠因素太多了,編寫自動化腳本相較于接口自動化腳本而言難度會大一些,消耗的人力和時間的成本也會更大一些。
理想的自動化測試金字塔表達了自動化測試的理想情況,利用較少的時間和精力在單元測試上就能夠發現更多有效的問題。
然而實際上在企業中,自動化往往是“冰淇淋蛋筒反模式”:
相較于測試人員來說,開發人員不那么注重測試,因此,實際工作中單元測試投入的時間和精力會比較少。
自動化需要大量的初始投資,找到“突破點”,與手動測試相比,我們開始看到它對長期成本產生的積極影響,也能夠清楚,這兩種測試活動都是完全兼容,產生短期和長期利益。
2. web自動化測試
2.1 驅動
上面給大家已經介紹過,web系統的測試前提是需要打開瀏覽器,通過訪問web服務器來對服務器界面進行一系列的操作。對于手工測試來說,這一系列的操作都需要測試人員手動的,一步一步的來執行測試。那么對于自動化程序來說,程序如何才能打開瀏覽器并執行我們預期的操作流程呢?
驅動一詞應用廣泛,同學們都不會陌生。
車有了驅動才能夠讓車跑起來。
計算機有了驅動程序就可以與設備(耳機,攝像頭,麥克風,鍵盤,顯示器等等設備)進行通信。
程序想要打開web瀏覽器就需要安裝web驅動(即WebDriver),WebDriver以本地化方式驅動瀏覽器。
2.1.1 安裝驅動管理
若通過安裝驅動的方式來啟動瀏覽器,每次瀏覽器更新后對應的驅動也需要更新,為了解決這個問題,selenium中提供了驅動管理工具webdriver-manager,有了webdriver-manager無需手動安裝瀏覽器驅動,即使瀏覽器更新也不會影響自動化的執行。
命令:pip install webdriver-manager
驅動管理:
webdriver-manager支持的python版本為:3.7~3.11
WebDriver Manager是一個開源的命令行工具,它可以自動下載和安裝適用于不同瀏覽器的WebDriver。通過使用WebDriver Manager,我們可以確保瀏覽器驅動版本始終與瀏覽器版本保持一致,從而避免因版本不匹配而導致的各種問題。
2.1.2 selenium庫
安裝selenium庫
selenium版本很多,統一使用selenium 4.0.0版本
pip install selenium==4.0.0
3. Selenium
接下來就是使用selenium來編寫web自動化測試腳本。
selenium是一個web自動化測試工具,selenium中提供了豐富的方法供給使用者進行web自動化測試。
3.1 一個簡單的web自動化示例
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager#編寫自動化腳本,具體步驟#1.打開瀏覽器----驅動管理
ChromeIns=ChromeDriverManager().install()
###創建谷歌瀏覽器驅動對象
driver=webdriver.Chrome(service=Service(ChromeIns))
time.sleep(2)
#2.輸入百度網址:https://www.baidu.com(網址一定要完整,不要寫成www.baidu.com)
driver.get("https://www.baidu.com")
time.sleep(2)
#3.找到百度輸入框,輸入關鍵詞“迪麗熱巴”
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("迪麗熱巴")
time.sleep(2)
#4.點擊“百度一下”按鈕
driver.find_element(By.CSS_SELECTOR,"#su").click()
time.sleep(2)
#5.關閉瀏覽器
driver.quit()
3.2 selenium+驅動+瀏覽器的工作原理
實現web自動化測試需要瀏覽器、瀏覽器驅動、selenium自動化腳本。這三者是如何交互最終實現web的自動化測試?
- 通過selenium編寫的自動化腳本代碼中在ChromeDriverService中創建一個服務
- 通過創建好的服務打開webdriver,安裝在本地的驅動服務IP為localhost,PORT為ChromeDriverService中創建的端口號,該服務地址為selenium向webdriver發送請求的服務地址
- 向瀏覽器驅動程序發送HTTP請求,瀏覽器驅動程序解析請求,打開瀏覽器,并獲得sessionid,如果再次對瀏覽器操作需攜帶此id
- 打開瀏覽器后,所有的selenium的操作(訪問地址,查找元素等)均通過創建好的服務鏈接到webdriver,然后使用execute發送請求
- 驅動收到請求并對請求進行解析,轉成瀏覽器能夠解析的腳本并發送給瀏覽器,瀏覽器通過請求的內容執行對應動作
- 瀏覽器再把執行的動作結果通過瀏覽器驅動程序返回給測試腳本