Selenium是一個Web應用的自動化框架。html
經過它,咱們能夠寫出自動化程序,像人同樣在瀏覽器裏操做web界面。 好比點擊界面按鈕,在文本框中輸入文字 等操做。java
並且還能從web界面獲取信息。 好比獲取12306票務信息,招聘網站職位信息,財經網站股票價格信息 等等,而後用程序進行分析處理。python
Selenium 的自動化原理是這樣的:web
咱們寫的自動化程序須要使用客戶端庫。chrome
咱們程序的自動化請求都是經過這個庫裏面的編程接口發送給瀏覽器。編程
好比,咱們要模擬用戶點擊界面按鈕, 自動化程序裏面就應該調用客戶端庫相應的函數,就會發送點擊元素的請求給下方的瀏覽器驅動。而後,瀏覽器驅動再轉發這個請求給瀏覽器。api
這個自動化程序發送給瀏覽器驅動的請求是HTTP請求。瀏覽器
客戶端庫從哪裏來的?是Selenium組織提供的。ruby
Selenium組織提供了多種 編程語言的Selenium客戶端庫,包括 java,python,js,ruby等,方便不一樣編程語言的開發者使用。框架
咱們只須要安裝好客戶端庫,調用這些庫,就能夠發出自動化請求給瀏覽器咯。
瀏覽器驅動也是一個獨立的程序,是由瀏覽器廠商提供的,不一樣的瀏覽器須要不一樣的瀏覽器驅動。 好比Chrome瀏覽器和火狐瀏覽器有各自不一樣的驅動程序。
瀏覽器驅動接收到咱們的自動化程序發送的界面操做請求後,會轉發請求給瀏覽器,讓瀏覽器去執行對應的自動化操做。
瀏覽器執行完操做後,會將自動化的結果返回給瀏覽器驅動,瀏覽器驅動再經過HTTP響應的消息返回給咱們的自動化程序的客戶端庫。
自動化程序的客戶端庫接收到響應後,將結果轉化爲數據對象返回給咱們的代碼。
咱們的程序就能夠知道此次自動化操做的結果如何了。
Selenium環境的安裝主要就是安裝兩樣東西:客戶端庫和瀏覽器驅動。
不一樣的編程語言選擇不一樣的Selenium客戶端庫。
對應咱們Python語言來講,Selenium客戶端庫的安裝很是簡單,用pip命令便可。
打開命令行程序,運行以下命令
pip install selenium
瀏覽器驅動是和瀏覽器對應的。不一樣的瀏覽器須要選擇不一樣的瀏覽器驅動。
目前主流的瀏覽器中,Chrome 瀏覽器對Selenium自動化的支持更加成熟一些。
咱們就以Chrome瀏覽器爲例。
建議安裝最新版本的Chrome瀏覽器,點擊這裏下載
訪問Chrome瀏覽器的驅動下載頁面,點擊這裏下載
注意瀏覽器驅動必需要和瀏覽器版本匹配,下圖紅圈裏面的版本號就是和瀏覽器版本號對應的 。
好比:當前Chrome瀏覽器版本是78, 就須要下載78開頭的目錄裏面的驅動程序 。
打開目錄,裏面有3個zip包,分別對應Linux、Mac、Windows平臺。
若是咱們是Windows平臺的電腦,就下載 chromedriver_win32.zip
這是個zip包,下載下來以後,解壓裏面的程序文件 chromedriver.exe 到某個目錄下面,注意這個目錄的路徑最好是沒有中文名和空格的。
好比,解壓到E:\webdrivers目錄下面。
也就是保證咱們的Chrome瀏覽器驅動路徑爲E:\webdrivers\chromedriver.exe
基於selenium的web自動化環境搭建就是這些,比較簡單。
from selenium import webdriver # 建立 WebDriver 對象,指明使用chrome瀏覽器驅動 wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe') # 調用WebDriver 對象的get方法 可讓瀏覽器打開指定網址 wd.get('https://www.baidu.com')
注意,等號右邊返回的是WebDriver類型的對象,咱們能夠經過這個對象來操控瀏覽器,好比打開網址、選擇界面元素等。
而下面這行代碼,就是使用WebDriver的get方法打開網址百度
wd.get('https://www.baidu.com')
執行上面這行代碼時,自動化程序就發起了打開百度網址的請求消息,經過瀏覽器驅動,給Chrome瀏覽器。
Chome瀏覽器接收到該請求後,就會打開百度網址,經過瀏覽器驅動,告訴自動化程序打開成功。
執行完自動化代碼,若是想關閉瀏覽器窗口能夠調用WebDriver對象的 quit 方法,像這樣 wd.quit() 。
前面,咱們的代碼建立 WebDriver對象時,須要指定瀏覽器驅動路徑,好比
wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe')
若是,咱們把瀏覽器驅動所在目錄加入環境變量 Path,再寫代碼時,就能夠無需指定瀏覽器驅動路徑了,像下面這樣。
wd = webdriver.Chrome()
由於,Selenium會自動在環境變量Path指定的那些目錄裏查找名爲chromedriver.exe的文件。
必定要注意的是, 加入環境變量 Path 的,不是瀏覽器驅動全路徑,好比E:\webdrivers\chromedriver.exe
而是瀏覽器驅動所在目錄,好比E:\webdrivers\