Selunium原理與安裝

 

Selenium 是一個 Web 應用的自動化框架。

通過它,我們可以寫出自動化程序,像人一樣在瀏覽器裏操作web界面。 比如點擊界面按鈕,在文本框中輸入文本 等操作。

而且還能從web界面獲取信息。 比如獲取12306票務信息,招聘網站職位信息,財經網站股票價格信息 等等,然後用程序進行分析處理。

Selenium 3.0 版本的自動化架構是這樣的

白月黑羽Python3教程

從上圖可以看出:

我們寫的自動化程序 需要使用 客戶端庫

我們程序的自動化請求都是通過這個庫裏面的編程接口發送給瀏覽器。

比如,我們要模擬用戶點擊界面按鈕, 自動化程序裏面就應該 調用客戶端庫相應的函數, 就會發送 點擊元素 的請求給 下方的 瀏覽器驅動。 然後,瀏覽器驅動再轉發這個請求給瀏覽器。

這個自動化程序發送給瀏覽器驅動的請求 是HTTP請求。

客戶端庫從哪裏來的? 是Selenium組織提供的。

Selenium組織提供了多種 編程語言的Selenium客戶端庫, 包括 java,python,js, ruby等,方便不同編程語言的開發者使用。

我們只需要安裝好客戶端庫,調用這些庫,就可以發出自動化請求給瀏覽器咯。


瀏覽器驅動 也是一個獨立的程序,是由瀏覽器廠商提供的, 不同的瀏覽器需要不同的瀏覽器驅動。 比如 Chrome瀏覽器和 火狐瀏覽器有 各自不同的驅動程序。

瀏覽器驅動接收到我們的自動化程序發送的界面操作請求後,會轉發請求給瀏覽器, 讓瀏覽器去執行對應的自動化操作。

瀏覽器執行完操作後,會將自動化的結果返回給瀏覽器驅動, 瀏覽器驅動再通過HTTP響應的消息返回給我們的自動化程序的客戶端庫。

自動化程序的客戶端庫 接收到響應後,將結果轉化爲 數據對象 返回給 我們的代碼。

我們的程序就可以知道這次自動化操作的結果如何了。


我們再總結一下,selenium 自動化流程如下:

  1. 測試程序調用Selenium 客戶端庫
  2. 客戶端庫會發送Selenium 命令 給瀏覽器的驅動程序
  3. 瀏覽器驅動程序接收到命令後 ,驅動瀏覽器去執行命令(比如點擊按鈕元素)
  4. 瀏覽器執行命令
  5. 瀏覽器驅動程序獲取命令執行的結果,返回給我們測試程序
  6. 測試程序對返回結果進行處理

 

 

安裝

Selenium環境的安裝主要就是安裝兩樣東西: 客戶端庫 和瀏覽器 驅動

安裝客戶端庫

不同的編程語言選擇不同的Selenium客戶端庫。

對應我們Python語言來說,Selenium客戶端庫的安裝非常簡單,用 pip 命令即可。

打開 命令行程序,運行如下命令

pip install selenium

有時候報錯,根據提示,可以在install後面加上--user。

安裝瀏覽器驅動

瀏覽器驅動 是和 瀏覽器對應的。 不同的瀏覽器 需要選擇不同的瀏覽器驅動。

目前主流的瀏覽器中, Chrome 瀏覽器對Selenium自動化的支持更加成熟一些。

我們就以Chrome瀏覽器爲例。

請大家安裝最新版的Chrome瀏覽器,可以點擊這裏下載

大家打開下面的連接,訪問Chrome 瀏覽器的驅動下載頁面

Chrome 瀏覽器驅動下載地址

注意瀏覽器驅動 必須要和瀏覽器版本匹配,下圖紅圈裏面的版本號 就是和瀏覽器版本號對應的

瀏覽器驅動

比如:當前Chrome瀏覽器版本是72, 就需要下載72開頭的目錄裏面的驅動程序 。

打開目錄,裏面有3個zip包,分別對應Linux、Mac、Windows平臺。

如果我們是Windows平臺的電腦,就下載 chromedriver_win32.zip

這是個zip包,下載下來之後,解壓裏面的程序文件 chromedriver.exe 到某個目錄下面,注意這個目錄的路徑最好是沒有中文名和空格的。

比如,解壓到 d:\webdrivers 目錄下面。

也就是保證我們的Chrome瀏覽器驅動路徑爲 d:\webdrivers\chromedriver.exe

 

基於selenium的web自動化環境搭建就是這些,比較簡單。

 

簡單示例

下面的代碼, 可以自動化的 打開Chrome瀏覽器,並且自動化打開百度網站,可以大家可以運行一下看看。

from selenium import webdriver

# 創建 WebDriver 對象,指明使用chrome瀏覽器驅動
wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe')

# 調用WebDriver 對象的get方法 可以讓瀏覽器打開指定網址
wd.get('https://www.baidu.com')

 

其中,下面這行代碼,就會運行瀏覽器驅動,並且運行Chrome瀏覽器

wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe')

注意:等號右邊 返回的是 WebDriver 類型的對象,我們可以通過這個對象來操控瀏覽器,比如 打開網址、選擇界面元素等。


而下面這行代碼,就是使用 WebDriver 的 get 方法 打開網址 百度

wd.get('https://www.baidu.com')

執行上面這行代碼時,自動化程序就發起了 打開百度網址的 請求消息 ,通過瀏覽器驅動, 給 Chrome瀏覽器。

Chome瀏覽器接收到該請求後,就會打開百度網址,通過瀏覽器驅動, 告訴自動化程序 打開成功。

執行完自動化代碼,如果想關閉瀏覽器窗口可以調用WebDriver對象的 quit 方法,像這樣 wd.quit()

 

瀏覽器驅動目錄加入環境變量Path

前面,我們的代碼創建 WebDriver對象時,需要指定瀏覽器驅動路徑,比如

wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe')

如果,我們把瀏覽器驅動 所在目錄 加入環境變量 Path, 再寫代碼時,就可以無需指定瀏覽器驅動路徑了,像下面這樣

wd = webdriver.Chrome()

因爲,Selenium會自動在環境變量 Path 指定的那些目錄裏查找名爲chromedriver.exe 的文件。

一定要注意的是, 加入環境變量 Path 的,

不是瀏覽器驅動全路徑,比如 d:\webdrivers\chromedriver.exe

而是 瀏覽器驅動所在目錄,比如 d:\webdrivers

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章