1.1 環境搭建
1.1.1 selenium簡介
Selenium 是用於測試 Web 應用程序用戶界面 (UI) 的常用框架。它是一款用於運行端到端功能測試的超強工具。您可以使用多個編程語言編寫測試,並且 Selenium 能夠在一個或多個瀏覽器中執行這些測試。
Selenium的發展經歷了三個階段,第一個階段,也就是selenium1的時代,在運行selenium1.0程序之前,我們得先啟動selenium server端(selenium remote control),我們簡稱RC。RC主要包括三個部分:launcher,http proxy,selenium core。其中selenium core是被selenium server嵌入到瀏覽器頁面中的,selenium core內部是一堆javascript函數構成,通過調用這些函數來實現對瀏覽器的各種操作。
很顯然比較繁瑣,這並不是最佳自動化解決方案,於是后來有了webdriver。
selenium2 的時代合並了webdriver,也就是我們通常說的selenium,selenium2是默認支持Firefox瀏覽器的,這點非常方便。
當然也支持其他更多瀏覽器,Ie和chrome瀏覽器需要下載驅動包,並添加到環境變量下。
selenium3 是2016年10月份發布的,並且現在默認安裝都是selenium3了,selenium3在selenium2的基礎上做了一些調整,最明顯的區別 就是 selenium2對Firefox的支持最高只支持46及以下版本。selenium3可以支持47以上版本,但是需要下載 geckodriver.exe驅動,並添加到環境變量path下。
接下來的內容以selenium2為主。
************環境組合**************************
初學者最佳環境:python2.7+selenium2+Firefox46以下版本
喜歡嘗新的環境:python3.6+selenium3+Firefox47以上版本
*********************************************
小編的環境:
windows10 64位
python 2.7.12
selenium 2.53.6
firefox 44
1.1.2 python安裝
1.小編的電腦操作系統:win10 64位系統
2.下載Python安裝包,選擇2.7版本和3.6版本都可以
(下面的教程,兩個版本會一起講,所以不用擔心版本問題)
官網下載地址:https://www.python.org/
3.Python安裝,雙擊傻瓜式安裝(別安裝在c盤,用英文路徑,不要有空格),安裝時候選中下方紅色框框,如果這一步成功,1.1.3環境變量這一步可以省略。
1.1.3 環境變量
1.安裝完成后,看下這個目錄D:\python\Scripts,有沒pip.exe和easy_install.exe(一般都有,沒有的話得卸載重新安裝一次了)
2.將D:\python和D:\python\Scripts(注意這兩個是復制自己電腦上的路徑),添加到環境變量path下。
D:\python;D:\python\Scripts;(注意帶上英文的分號)
1.1.4 安裝selenium
1.打開cmd窗口輸入:pip
(如果出現其它提示請檢查上面幾步,確認無誤后出現Did not provide a command,看1.3解決pip異常這篇)
2.cmd輸入指令安裝在線安裝selenium
>pip install selenium==2.53.6
(注意:首次裝一定要看到進度100%完成,如果中途失敗了,重新輸入指令安裝,直到看到100%完成為止)
1.1.5 驗證selenium
如何才能知道selenium正確安裝好了呢?
1.確保電腦上安裝了Firefox瀏覽器46以下版本
cmd窗口輸入如下指令
>python
>from selenium import webdriver
>webdriver.Firefox()
3.如果能啟動瀏覽器,說明環境安裝OK。
(啟動不成功,說明沒認真看文檔,卸載了重新來一次)
1.1.6 瀏覽器
1.如果你打算用Firefox瀏覽器,那么千萬別安裝47以上版本(selenium2不兼容47以上)
2.如果你打算用Ie或Chrome瀏覽器,需要先下載瀏覽器驅動,將驅動文件放到python根目錄。
如果有的已經安裝過3.0的版本,啟動firefox時候會報錯,下一章講如何使用pip降級selenium版本
1.1.7 firefox歷史版本
firefox歷年版本的官方鏡像地址:
https://download-installer.cdn.mozilla.net/pub/firefox/releases/
1.2 pip降級selenium3.0
selenium版本安裝后啟動Firefox出現異常:'geckodriver' executable needs to be in PATH
selenium默默的升級到了3.0,然而網上的教程都是基於selenium2的,最近有不少小伙伴踩坑了,決定有必要出這一篇,幫助剛入門的小伙伴們解決好環境問題。
selenium+python環境搭配:
selenium2+firefox46以下版本(無需驅動包,firefox喜歡偷偷升級,你懂的)
selenium3+firefox46以上版本(必須下載驅動:geckodriver.exe,且添加到環境變量)
1.2.1 遇到問題
1.安裝完selenium后,再cmd進入python環境
2.從selenium導入webdriver
3.啟動Firefox瀏覽器
>>python
>>from selenium import webdriver
>>webdriver.Firefox()
然后出現以下異常:'geckodriver' executable needs to be in PATH
1.2.2 解決方案
1.'geckodriver' executable needs to be inPATH,這句話意思就是說,geckodriver.exe的驅動文件需要添加到環境變量下,
selenium2是默認支持firefox的,不需要驅動包,但是,selenium3需要驅動包的支持了,於是就有了上面的問題
2.解決辦法一:繼續使用selenium3,去下載驅動包,然后加到環境變量下(不推薦此辦法,因為解決完這個問題后,后面還會接着有其它問題)
3.解決辦法二:selenium3降級到selenium2(接下來會介紹)
1.2.3 檢查pip環境
1.打開cmd,輸入pip,檢查pip環境是否正常
>>pip
2.如果輸入pip出現提示:Did not provide a command 說明pip環境有問題,臨時解決辦法,輸入pip時候加上后綴pip.exe就可以了,具體原因看下一篇解決辦法。
1.2.4 pip查看selenium版本號
1.打開cmd,輸入pip show selenium
>>pip show selenium
2.看紅色區域位置版本號顯示:2.53.0,顯示的就是當前使用的版本號
(如果你這里顯示的是3.0開頭,就需要接下來步驟了)
1.2.5 pip降級selenium
1.為了避免與之前安裝的selenium版本沖突,先找到selenium3.0目錄:python\Lib\site-packages目錄
把里面selenium開頭的文件全部刪除就可以了。python所有的第三方包都在這個目錄下面。
2.打開cmd,輸入pip install selenium==2.53.6(注意是兩個==,中間不要留空格,這里推薦2.53.6的版本)
>>pip install selenium==2.53.6
1.2.6 升級pip版本
1.在使用pip過程中如果出現下方紅色區域字樣,就是說pip版本過低了,建議升級
2.如何升級pip呢?看最后一句話:python -m pip install --upgrade pip
3.把上面對應的提示照着敲一遍就可以了
1.3 解決pip使用異常問題
1.3.1 pip出現異常
有一小部分童鞋在打開cmd輸入pip后出現下面情況:Didnot provide a command
Did not provide a command?這是什么鬼?
正常情況應該是醬紫
1.3.2 解決辦法
1.pip是一個.exe的可執行文件,在cmd輸入pip.exe就可以解決了。
2.所以在后面的安裝指令中都需要帶上后綴,那么問題來了,為什么會出現這種情況,如何徹底解決?
1.3.3 配置環境變量
1.主要原因是環境變量的PATHEXT里面缺少.EXE的文件名
2.在PATHEXT下編輯后面加上;.EXE(注意分號是英文的)
3.環境變量配置好了后,關掉cmd,重新打開輸入pip試試(要是這一步還不能解決,繼續往下看)
1.3.4 必殺技
1.找到pip所在的文件目錄打開
2.在文件夾地址欄輸入cmd,回車。
然后在打開的窗口輸入pip(或pip.exe)試試吧
1.3.5 絕殺技能
打開cmd(快捷鍵:win+r),cd到pip所在的目錄,如D:\test\python2\Scripts
>d:
>cd d:/test/python2/Scripts
>pip
(要是看到這里,還沒解決,你這台電腦可以砸了!!!)
1.4 Chrome瀏覽器
前言
selenium2啟動Chrome瀏覽器是需要安裝驅動包的,但是不同的Chrome瀏覽器版本號,對應的驅動文件版本號又不一樣,如果版本號不匹配,是沒法啟動起來的。
#############最佳環境搭配#####################
小編環境:selenium2.53.6+Chrome版本V49.0+chromedriverv2.22
(根據小編經驗selenium2搭配Chrome版本40-50比較好,版本太高了會各種奇葩問題的)
###########################################
1.4.1 Chrome遇到問題
1.如果在啟動chrome瀏覽器時候,出現如下界面,無法打開網址,那么首先恭喜你,踩到了坑,接下來的內容或許對你有所幫助。
>># coding:utf-8
>>from selenium import webdriver
>>driver = webdriver.Chrome()
>>driver.get("http://www.cnblogs.com/yoyoketang/")
1.4.2 查看版本號
1.查看Chrome版本號,設置>關於,查出來版本號是49.0
2.查看chromedriver.exe版本號,雙擊這個文件就可以了,查出來版本號是V2.9
3.很顯然是chromedriver的版本號過低了,於是可以找個更高級的版本:V2.22
1.4.3 chromedriver
1.確保chromedriver.exe文件在path路徑下,這里我放到Python的根目錄了(python根目錄已配置到path了)
2.確保驅動文件名稱是chromedriver.exe,如果名稱后面帶版本號的,改下文件名稱就行。
3.Chrome版本V49.0+chromedriverv2.22
1.4.4 各版本匹配表
chromedriver版本 支持的Chrome版本
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-53
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32
Chrome瀏覽器的chromedriver版本驅動大全,下載地址:
http://chromedriver.storage.googleapis.com/index.html
IE瀏覽器的IEdriver版本驅動大全,下載地址:
http://selenium-release.storage.googleapis.com/index.html
1.5 pycharm使用
前言
在寫腳本之前,先要找個順手的寫腳本工具。python是一門解釋性編程語言,所以一般把寫python的工具叫解釋器。寫python腳本的工具很多,小編這里就不一一列舉的,只要自己用着順手就可以的,如果你還沒有選好解釋器,小編這里推薦pycharm。
在安裝pycharm后,有一些小伙伴不會破解,這里小編還是推薦大家買正版的。當然,如果你不想付費,想破解pycharm,也是很容易的事情,這里小編列舉幾種破解辦法。前提是你要先下載pycharm安裝包,安裝包可以去官網http://www.jetbrains.com/pycharm/下載最新版。
1.5.1 pycharm安裝
方法一:
1.在注冊界面,選擇License serve。填入http://idea.lanyus.com/71
2.點擊ok
方法二:
1.注冊界面選擇:Activationcoede
2.打開網址:http://idea.lanyus.com/71,點擊“獲取注冊碼”按鈕
3.復制彈出框的注冊碼
4.copy到注冊界面Activationcoede位置
方法三:
1.安裝pycharm在注冊界面先別動
2.調整電腦系統時間到2036年(20年應該夠用了)。
3.注冊界面選擇申請30天試用
4.退出pycharm
5.電腦時間調整回來。
方法四:
1.安裝pycharm在注冊界面,選擇使用30天
2.打開pycharm菜單里Help>Register
3.打開網址:http://idea.lanyus.com/71,點擊“獲取注冊碼”按鈕
4.copy到注冊界面Activationcoede位置
接下來開始pycharm之旅吧~
1.5.2 新建工程
1.在d盤新建一個test文件夾
2.打開pycharm左上角File按鈕
3.點NewProject新建一個工程
1.5.3 新建腳本
1.在pycharm左側菜單樹右鍵,新建一個Directory(文件夾)。
2.選擇對應文件夾,在文件夾中新建Python File(腳本文件)。
3.腳本名稱自己命名,后綴.py會自動帶出
1.5.4 開始編程
1.雙擊打開需要編寫的腳本
2.在右側編輯框輸入:print("hello world!")
3.點腳本的title,右擊后選擇Run“test01”,運行結果如下
1.6 selenium3+firefox環境搭建
有不少小伙伴在安裝selenium環境后啟動firefox報錯,因為現在selenium升級到3.0了,跟2.0的版本還有有一點區別的。
(備注:這里不建議大家用selenium3,坑太多,如果selenium2實在用不了,那就看這篇吧)
安裝環境過程中主要會遇到三個坑:
1.'geckodriver' executable needs to be in PATH
2.Expected browser binary location, but unable to find binary in default location
3.Unsupported Marionette protocol version 2, required 3
環境准備:
--python3.6
--selenium3.0
--firefox50
一、安裝python
1.安裝python這個簡單,下載版本后傻瓜式安裝就行了。
2.安裝好之后,看下這個目錄D:\python\Scripts,有沒pip.exe和easy_install.exe(一般都有,沒有的話得重新安裝一次了)
3.將D:\python和D:\python\Scripts,添加到環境變量path下
二、檢查pip工具
1.打開cmd,輸入:pip,出現如下圖界面,說明pip環境OK.
>>pip
三、安裝selenium3.0
1.cmd輸入:pip install selenium
>>pip install selenium
2.首次安裝要看到100%完成,中途失敗就重新多輸入幾次安裝。
四、檢查selenium環境
1.在cmd輸入如下指令檢查環境
>>python
>>from selenium import webdriver
>>driver=webdriver.Firefox()
>>driver.get("https://www.baidu.com")
2.能看到瀏覽器正常啟動,說明環境OK,如果遇到異常就繼續看下面解決方案。
五、遇到第一個坑:'geckodriver' executable needs to be in PATH
1.如果啟動瀏覽器過程中報如下錯誤
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\test\python3\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 145, in __init__
self.service.start()
File "D:\test\python3\lib\site-packages\selenium\webdriver\common\service.py", line 81, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
2.這個是因為最新的selenium3.0啟動firefox需要geckodriver.exe這個驅動文件。
3.下載之后,配置到環境變量path下(可以直接放python根目錄)
六、遇到第二坑:Expected browser binary location, but unable to find binary in default location
1.如果啟動瀏覽器過程中報如下錯誤:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\test\python3\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 155, in __init__
keep_alive=True)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 92, in __init__
self.start_session(desired_capabilities, browser_profile)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 179, in start_session
response = self.execute(Command.NEW_SESSION, capabilities)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 238, in execute
self.error_handler.check_response(response)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 193, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Expected browser binary location, but unable to find binary in default location,
no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line.
2.這個是因為firefox.exe這個文件也需要配置到環境變量path下。
3.這個路徑就是安裝完firefox后,找到firefox.exe這個文件的地址,加到path下。
七、遇到第三坑:Unsupported Marionette protocol version 2, required 3
1.如果啟動瀏覽器過程中出現如下錯誤
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\test\python3\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 155, in __init__
keep_alive=True)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 92, in __init__
self.start_session(desired_capabilities, browser_profile)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 179, in start_session
response = self.execute(Command.NEW_SESSION, capabilities)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 238, in execute
self.error_handler.check_response(response)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 193, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Unsupported Marionette protocol version 2, required 3
2.這個錯誤原因是firefox版本過低了,最新的selenium3.0版本支持firefox47以上的版本,升級版本就可以了
總結:整個環境的配置是python3.6+selenium3.0+firefox47以上版本,當然python用2.7版本也是可以的。