一,Selenium 簡介
Selenium是目前最流行的web自動化測試工具,也常用於網路爬蟲,已經更新到3以上的版本。
1,元件
它提供了以下web自動化測試元件:
-
Selenium IDE,Firefox瀏覽器的一個外掛,提供簡單的指令碼錄製、編輯與回放功能。
-
Selenium Remote Control (RC),是selenium 1 提供的元件,包含:Selenium Server(用於提供自動化測試服務)、Selenium Client(用於執行指令碼)。
-
Selenium Grid,用於對測試用例集做分散式處理(並行),現已整合到selenium server中。
-
WebDriver,Selenium2(包括Selenium3)拋棄了Selenium RC,而是使WebDriver。相比Selenium RC,Webdriver 的API更容易理解和使用,可讀性和可維護性也有很提高。
因為後面我們的web自動化測試使用的是Selenium3(即WebDriver),這裡對WebDriver做一下說明:
-
Webdriver不依賴於任何測試框架,除了必要的瀏覽器驅動,無需啟動其他程式,也不必像Selenium 1那樣需要先啟動服務。
-
設計模式:按照Server-Client的經典設計模式設計;
-
Server端:可以是任意的瀏覽器,當指令碼啟動瀏覽器時,該瀏覽器就是Server,它的職責是處理Client傳送的請求並做出響應;
-
Client端:即我們的測試程式碼,測試程式碼傳送HTTP請求給Server(即瀏覽器),Server接受請求,執行相應操作並返回結果。
-
不同的瀏覽器,WebDriver需要依賴對應的瀏覽器驅動(如 chromedriver.exe)來轉化瀏覽器的native呼叫,所以進行Selenium自動化時,需先下載對應的瀏覽器的驅動。
2,特點
-
免費開源的自動化測試工具(框架)
-
支援多平臺:windows、linux、MAC
-
支援多種瀏覽器:Chrome、Firefox、IE、Safari、Opera
-
支援多種開發語言: java、ruby、python、C、C#等
-
支援分散式執行測試用例集,即可並行執行測試
不過多贅述,當你看到這篇部落格的時候,相信你已經對selenium有了個大概的認知。接下來我們開始在windows 10 上搭建python+selenium環境。
二,Python+Selenium環境搭建
1,下載python
建議下載python 3.x版本,官方已經停止對python 2.x版本維護更新。
windows版本官網下載地址:https://www.python.org/downloads/windows/
以安裝Python 3.7.7為例,進入上面的網址,根據系統 (32/64位)選擇,我這裡選擇下載64位的
2,安裝python
雙擊下載好的檔案,一路預設安裝即可,這裡注意勾選新增python至環境變數,這樣就不需要後續再設定環境變數了。
3,驗證是否安裝完成
cmd視窗輸入命令:python,出現版本資訊等則說明安裝成功,且環境變數設定成功,如下
如果在上一步中,未勾選新增python至環境變數,輸入python命令後會提示:不是內部或外部命令,只需將python的安裝路徑新增至環境變數即可,具體新增方法可百度。
4,安裝Selenium
cmd視窗輸入命令:pip install selenium,安裝最新版本的selenium
安裝完成後可以檢視版本號,命令為:pip show selenium
安裝指定版本命令為:pip install selenium==xxx
解除安裝命令:pip uninstall selenium
三,啟動Chrome瀏覽器
不同的瀏覽器,需要安裝對應瀏覽器的Selenium驅動才能進行自動化測試。首先介紹Chrome瀏覽器。
1,安裝Chrome瀏覽器
沒有安裝Chrome瀏覽器,則需先安裝(建議官方地址下載)
官方下載地址為:https://www.google.cn/chrome/
下載安裝過程很機械,不做過多說明。
2,檢視Chrome版本
開啟Chrome瀏覽器 --> 輸入網址:chrome://settings/help --> 按Enter鍵,如下:
3,下載驅動 chromedriver
下載地址:http://chromedriver.storage.googleapis.com/index.html
也可以選擇淘寶映象下載,地址為:http://npm.taobao.org/mirrors/chromedriver/
低版本Chrome瀏覽器已經很少使用,就不做對應下載說明了。更新版本的Chrome瀏覽器(從70~87),只需根據自己電腦上安裝的Chrome瀏覽器版本下載對應的chromedriver即可,如下:
我電腦上的Chrome瀏覽器版本為 86.0.4240.111(正式版本) (64 位),選擇下載如下:
注意:這裡按照chrome版本查詢對應的chromedriver(只需對應大版本就行)下載即可,比如我的瀏覽器版本是86.0.4240.111,chromedriver裡沒有對應的86.0.4240.111版本,下載86.0.4240.22版本就行。
下載完成後,解壓該zip檔案得到chromedriver.exe檔案,將chromedriver.exe放置在python安裝目錄的Scripts中
注意:需要將解壓出來的chromedriver.exe檔案放置在Scripts中,而不是將解壓得到的chromedriver資料夾放置在Scripts中,否則啟動指令碼時會報錯。
4,啟動Chrome瀏覽器
指令碼如下:
# -*- coding:utf-8 -*-
# @author: 給你一頁白紙
import time
from selenium import webdriver
driver = webdriver.Chrome() # 啟動瀏覽器
driver.get("https://www.baidu.com") # 開啟某個網址
time.sleep(10)
driver.quit() # 關閉瀏覽器
注意:get()方法中URL要填寫完整,如:"https://www.baidu.com",而不是"www.baidu.com",否則會報錯
執行指令碼,啟動Chrome瀏覽器並開啟百度網址,如下:
四,啟動火狐瀏覽器(Firefox)
1,安裝火狐瀏覽器
官網下載地址:https://www.firefox.com.cn/
安裝過程不贅述。
2,檢視火狐瀏覽器版本
開啟火狐瀏覽器,點選右上角"選單"按鈕進行檢視,步驟如下:
我這裡的火狐瀏覽器版本為:82.0.2 (64 位)
3,下載驅動 geckodriver
selenium 3 只支援Firefox 48及以上版本,且需下載驅動,所以配置如下:
-
Firefox 48 及以上版本,Selenium 3.X + FireFox驅動(geckodriver)
-
Firefox 47 及以下版本,Selenium 2.X,內建驅動,無需下載
geckodriver下載地址:https://github.com/mozilla/geckodriver/releases
我這裡選擇目前最新的版本下載(瀏覽器為64位),如下:
如果按照後續步驟不能啟動瀏覽器,可以嘗試刪除該版本的geckodriver下載更低的版本的geckodriver。
下載後解壓檔案,將解壓後得到的 geckodriver.exe 檔案放置在python安裝目錄的Scripts中(同chromedriver.exe),如下:
4,啟動Chrome瀏覽器
指令碼如下:
# -*- coding:utf-8 -*-
# @author: 給你一頁白紙
import time
from selenium import webdriver
driver = webdriver.Firefox() # 啟動瀏覽器
driver.get("https://www.baidu.com") # 開啟某個網址
time.sleep(10)
driver.quit() # 關閉瀏覽器
執行指令碼,啟動Firefox瀏覽器並開啟百度網址,如下:
五,啟動IE瀏覽器
windows系統自帶IE瀏覽器,無需下載。
1,檢視IE瀏覽器版本
開啟IE瀏覽器 --> 點選右上角"設定"圖示 --> 點選"關於 Internet Explorer"按鈕,檢視
我電腦上IE版本為IE 11。
2,下載驅動 IEDriverServer
Selenium3 只支援IE 9及以上版本,所以這裡建議:
-
IE 9及以上版本,Selenium3.X + IE驅動 (IEDriverServer)
-
IE 8及以下版本,Selenium2.X + IE驅動 (IEDriverServer)
IEDriverServer下載地址如下(官網下載速度較慢,也可以使用淘寶映象下載):
官網下載地址:http://selenium-release.storage.googleapis.com/index.html
淘寶映象下載地址:https://npm.taobao.org/mirrors/selenium/
因為沒有找到不同版本的IE瀏覽器對應的驅動版本,所以我這裡直接下載最新的版本,如下:
下載後解壓該zip檔案,同樣的,將解壓後得到的IEDriverServer.exe放置在python安裝目錄的Scripts中,如下:
3,啟動IE瀏覽器
首先要禁止啟用IE瀏覽器的保護模式,步驟如下:
開啟瀏覽器 --> 點選左上角"設定"圖示 --> Internet選項 --> 安全,將四個選項中的"啟用保護模式"的勾選去掉,如下:
編寫指令碼如下:
# -*- coding:utf-8 -*-
# @author: 給你一頁白紙
import time
from selenium import webdriver
driver = webdriver.Ie() # 啟動瀏覽器
driver.get("https://www.baidu.com") # 開啟某個網址
time.sleep(10)
driver.quit() # 關閉瀏覽器
執行指令碼,啟動IE瀏覽器並開啟百度網址,如下:
執行指令碼開啟IE瀏覽器時,遇到報錯如下:
selenium.common.exceptions.SessionNotCreatedException: Message: Unexpected error launching Internet Explorer. Browser zoom level was set to 150%. It should be set to 100%
解決方法:開啟瀏覽器 --> 點選左上角"設定"圖示 --> 選擇"縮放",修改成100%即可。
至此,windows上Python + Selenium環境便搭建完成,並且能通過指令碼啟動Chrome、Firefox、IE瀏覽器。
實際測試過程中,大家可根據需要選擇相應的瀏覽器進行web自動化測試。