本文是作者"一葉染秋"原創(chuàng)虑稼,轉(zhuǎn)載請(qǐng)注明出處和作者:
http://www.reibang.com/p/62ed9231f824
一、概述
我之前用過(guò)selenium 2.x版本操作老版本的firefox,很流暢∫闰穑現(xiàn)在瀏覽器和selenium都升級(jí)后問(wèn)題隨之而來(lái)。
1.<selenium2.x> 版本可能在調(diào)試調(diào)用高版本瀏覽器會(huì)出現(xiàn)系統(tǒng)提示報(bào)錯(cuò),在排除代碼錯(cuò)誤的前提效扫,可能是跟selenium版本與目標(biāo)調(diào)用瀏覽器版本不兼容菌仁。
<selenium3.x>版本則一定會(huì)出現(xiàn),官方提示了最新版本的selenium調(diào)用瀏覽器,需要到指定網(wǎng)站下載一個(gè)類似“補(bǔ)丁文件”的東東(比如,selenium調(diào)用Firefox高版本的geckodriver
文件)2.系統(tǒng)中的瀏覽器可能存在你不留意的更新升級(jí)摹迷,而且主流瀏覽器對(duì)selenium的控制現(xiàn)已普遍要用瀏覽器官方提供的控件補(bǔ)丁近哟,才能正常調(diào)用操作瀏覽器。
二鼠证、問(wèn)題場(chǎng)景復(fù)原
工作環(huán)境
- 1.Ubantu 14.04版本
- 2.Python 2.7 (本問(wèn)題和python版本無(wú)關(guān))
- 3.沒(méi)有提前下載瀏覽器對(duì)selenium的對(duì)應(yīng)補(bǔ)丁文件時(shí)候
- 4.selenium調(diào)用本地Firefox瀏覽器或者Chrome瀏覽器(其他主流瀏覽器高版本同樣可能出錯(cuò))
代碼
#coding:utf-8
from selenium import webdriver
‘’‘ 這是一段selenium代碼’‘’
browser = webdriver.Firefox()
browser.get("http://docs.seleniumhq.org/")
browser.close()
如果你調(diào)用的是Chrome瀏覽器颂碧,我們換成調(diào)用Chrome瀏覽器方法
browser = webdriver.Chrome()
注意:代碼沒(méi)有錯(cuò)誤,錯(cuò)誤的是selenium與高版本瀏覽器不兼容
報(bào)錯(cuò)信息
調(diào)用Firfox瀏覽器方法報(bào)錯(cuò)
調(diào)用Chrome瀏覽器方法報(bào)錯(cuò)
報(bào)錯(cuò)解讀
- 1 對(duì)于調(diào)用Firefox瀏覽器力细,系統(tǒng)提示我們煞聪,缺少一個(gè)叫
geckodriver
的文件,并且需要設(shè)置路徑指向 - 2 對(duì)于調(diào)用Chrome瀏覽器云稚,系統(tǒng)提示我們,缺少一個(gè)叫
chromedriver
的文件窿给,并且需要設(shè)置路徑指向
三禁荒、解決辦法
Step1.你需要從selenium官網(wǎng)的提供網(wǎng)址針對(duì)不通瀏覽器下載這類補(bǔ)丁文件(每個(gè)主流瀏覽器的補(bǔ)丁文件都不相同)
官方提供瀏覽器driver補(bǔ)丁文件下載地址:
selenium提供瀏覽器官方driver補(bǔ)丁文件下載.
Step2.把下載后的壓縮包,解壓縮后的文件,放在瀏覽器文件夾下,并且在終端命令行下配置環(huán)境變量
舉例說(shuō)明:
1.我把調(diào)用Firefox瀏覽器的補(bǔ)丁文件
geckodriver
文件解壓縮后放在我本地的Firefox文件夾下2.對(duì)照
geckodriver
所在位置,我在終端執(zhí)行一條指令進(jìn)行配置路徑:
#export PATH=$PATH:/usr/lib/firefox
3 或者直接編輯:
vim /etc/environment
文件
在PATH = ':/usr/lib/firefox/geckodriver'
把geckodriver的路徑加入環(huán)境 變量文件中
注意:
1.必須是在管理員權(quán)限下配置(linux: root#)
2.如果你的配置后,程序依舊提示報(bào)錯(cuò)奕锌,那么請(qǐng)重啟電腦趁桃!
3.我們配置環(huán)境變量指向的是瀏覽器補(bǔ)丁文件所在瀏覽器文件的位置卫病,且不能指向這個(gè)文件。
#export PATH=$PATH:/usr/lib/firefox/geckodriver
如果這么輸入終端命令就會(huì)出現(xiàn)如下報(bào)錯(cuò):
- 3.關(guān)于Windows環(huán)境下,MacOS環(huán)境下,都需各位少俠們自己配置其相同原理的環(huán)境變量的操作,才能有效罕模。
四蒿讥、一個(gè)小延伸
此時(shí)此刻估計(jì)很多小伙伴們和一樣倔強(qiáng)固執(zhí),我就是不想下載那個(gè)XXX瀏覽器補(bǔ)丁文件,我就是要用低版本selenium調(diào)用指定位置低版本瀏覽器桃犬。
"固執(zhí),是盤(pán)踞于心靈的根源性沖動(dòng)之一 "行楞。
美國(guó)哲學(xué)家攒暇、詩(shī)人 桑塔亞那
原先使用的是selenium 版本低(目前我在pip源上顯示可提供的最低版本也是2.4x,大家可以從別的網(wǎng)站上找到老版本的selenium源碼)子房,低版本的瀏覽器文件需要大家自行查找下載形用。
ps:低版本的selenium能調(diào)用打開(kāi)高版本的瀏覽器,但是會(huì)出現(xiàn)閃退等異持ず迹現(xiàn)象
代碼
#coding:utf-8
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
ffBinary = FirefoxBinary(firefox_path="/usr/lib/firefox/firefox.sh")
browser = webdriver.Firefox(firefox_binary=ffBinary)
browser.get("http://docs.seleniumhq.org/")
代碼說(shuō)明
本處的路徑是相對(duì)路徑,py文件和下載的firefox瀏覽器文件夾是同一級(jí),如果你的py文件路徑和firefox文件夾路徑不通田度,要注明絕對(duì)路徑。
注意:此處的firefox文件是ubantu下的,如果是Win平臺(tái)下的firefox文件應(yīng)該是firefox.exe啟動(dòng)文件
這樣修改完之后躯砰,你的舊版本selenium配合指定路徑下的老版本瀏覽器就開(kāi)始那些年熟悉的操作了。携丁。琢歇。
-閑言碎語(yǔ)-
本文的寫(xiě)作緣由是因?yàn)橐淮魏芎?jiǎn)單的調(diào)試而消耗了本不應(yīng)該花費(fèi)的時(shí)間長(zhǎng)度,暴露了自己的一些問(wèn)題梦鉴,我覺(jué)得我不寫(xiě)出來(lái)我都虧得慌李茫。
因?yàn)橛龅絾?wèn)題報(bào)錯(cuò)或者系統(tǒng)bug時(shí)候,每個(gè)的解決問(wèn)題的方法因自己的能力水平和固化的思維邏輯所影像肥橙,這就是導(dǎo)致每個(gè)人解決問(wèn)題的能力不通和效率高低的一種原因魄宏。
我在這里總結(jié)了一點(diǎn)我的解決問(wèn)題小思路想和和大家探討交流
- 1.根據(jù)系統(tǒng)提示信息確定問(wèn)題位置出處(判斷是多個(gè)原因還是單個(gè)原因),排除人為低級(jí)失誤存筏。
- 2.首先應(yīng)該去官方網(wǎng)站去檢索問(wèn)題關(guān)鍵詞宠互,查找解決方案,最為直接有效椭坚,降低廣域搜索解決問(wèn)題的原因予跌,因?yàn)槌R?guī)出錯(cuò),官方的解決方案還是比較全面的
- 3.不能從官方網(wǎng)站上解決問(wèn)題善茎,就直接利用科學(xué)瀏覽器檢索“系統(tǒng)報(bào)錯(cuò)部分的提示語(yǔ)”券册,或者是從各大知名平臺(tái)進(jìn)行檢索問(wèn)題關(guān)鍵詞尋求答案。
- 4.如果你有個(gè)技術(shù)扛把子的同事,同時(shí)他比較好相處烁焙,那就不要舍近求
遠(yuǎn)航邢。
切記不要自己一個(gè)勁和自己的報(bào)錯(cuò)代碼死較真,當(dāng)局者迷何必自己折磨自己骄蝇,在外部尋求解決方案膳殷,要相信你犯過(guò)的錯(cuò)別人都犯過(guò)(一碗雞湯,各位少俠請(qǐng)喝下)乞榨。
-鳴謝-
本次對(duì)我提供過(guò)幫助的秽之,一位真誠(chéng)無(wú)私且喜歡《秦時(shí)明月》的技術(shù)員朋友ZYJ
(大家都覺(jué)得:你側(cè)目的眼神很YD)
我的朋友千千萬(wàn),他們都很可愛(ài)吃既。
-尾語(yǔ)-
嘮嘮叨叨啰啰嗦嗦寫(xiě)完了考榨,我<簡(jiǎn)書(shū)>上的第一篇原創(chuàng)文章,的確鹦倚,我寫(xiě)的很自嗨(因?yàn)槎际俏业那袑?shí)體會(huì)啊河质,魂淡),還因?yàn)槲也皇且粋€(gè)人在戰(zhàn)斗震叙。
如果文章內(nèi)容有出錯(cuò)和相關(guān)意見(jiàn)想法掀鹅,歡迎大家指正,我都會(huì)及時(shí)改正.
十一快到啦媒楼,散花~~