Selenium 1 - 原理與安裝


教程官網 白月黑羽教Python


原理

點擊這里,邊看視頻講解,邊學習以下內容


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

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

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

Selenium 的自動化原理是這樣的

白月黑羽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

安裝瀏覽器驅動

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

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

我們就以Chrome瀏覽器為例。

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

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

Chrome 瀏覽器驅動下載地址

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

瀏覽器驅動

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

注意:驅動和瀏覽器的版本號越接近越好,但是略有差別(比如72和73),通常也沒有什么問題。


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

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

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

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

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


上面的網址,有些朋友可能打不開,我們在如下百度網盤提供了較新的驅動給大家下載

鏈接:https://pan.baidu.com/s/1dCZ4LGvcAPrzg25UVW8rrQ

提取碼:huwt


基於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


那么,selenium又是如何 自動化地 在網頁上 點擊、輸入、獲取信息,將在接下來的章節要學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM