1. 程式人生 > >Mac OS下搭建python+selenium環境

Mac OS下搭建python+selenium環境

哈哈,對於我這個菜鳥,搭建環境的第一步是問度娘,順利的找到了一篇很給力的文章,基本寫的很清楚。連結如下(https://www.zhihu.com/question/30496889)

按照這篇文章給的提示,下載了pip9.0.1的壓縮包,解壓縮並cd到pip9.0.1資料夾目錄下。

接著執行了如下幾條命令:

sudo python setup.py install

sudo easy_install pip

sudo pip install -U selenium

pip是一個安裝和管理python包的工具,安裝pip的命令是sudo python setup.py install。那第二條命令sudo easy_install pip又是做什麼呢?

百度後知道,easy_install是老版本的python支援的安裝和管理python包的工具,pip是easy_install的替代版。那就理解成用easy_install 安裝了pip包。(-  -!!!)

第三條命令就是安裝selenium包。

對了,還需要安裝pyCharm和Firefox,

pyCharm版本:2016.3.2

Firefox版本:51.0.1

安裝好pyCharm和Firefox後,就可以在pyCharm中建立測試指令碼來驗證我們搭建的測試環境是否OK啦。

新建一個project,Location不用說了,用來存你新建project的位置。

Interpreter選項一開始沒怎麼注意,直接選了預設的,結果建好測試指令碼後各種報錯。這個稍後再介紹。


對於Mac OS,自帶了兩個版本的python,(至少我的系統是這樣的)2.6.9和2.7.10版本。

但是在Interpreter選項中,居然還有個2.7.12的版本。查看了這個版本的路徑,感覺是自己不知道什麼時候裝的一個版本。

那到底選哪個版本呢?按照文字一開頭給出的那篇文字中的截圖看,人家用的是系統自帶的2.7.10版本。好吧,那就照貓畫虎的選了2.7.10的python直譯器。

接著,在建好的project中新增python檔案,開始寫程式碼。

from selenium import webdriver
import time
dr = webdriver.Firefox()
dr.get('http://baidu.com'
) time.sleep(5) print 'Browser will close' dr.quit() print 'Browser closed'

寫入上面程式碼的時候,第一行就有問題,from後面根本聯想不出selenium。

那怎麼辦呢,然後就是一頓各種百度。看到一篇文章說可能是Interpreter選的不對,那就接著去改Interpreter,在pyCharm的File->Default Settings->Project Interpreter中重新設定。

在這裡設定的時候,能看到的資訊比一開始新建project的時候要多。可以看到該直譯器下包含的Package資訊。找了一圈2.7.10版的直譯器,發現自己剛剛裝的pip、selenium都沒有。pip有,但是版本不對,selenium壓根沒有。再試著切到2.7.12版,你猜怎麼的,原來都裝這裡了。


這下清楚點了,看來是因為在裝pip和selenium的時候就出問題了,問題就出在系統當前預設使用的python是2.7.12版本,在終端中再次輸入python也驗證了這個問題。

然後想到的第一個解決辦法是把2.7.12版的python刪掉,重新安裝一次pip、selenium。結果,又是一頓搜尋python刪除命令,最後還是沒有刪除成功。

後來想著,那就從開始把安裝pip和selenium的命令重新執行一遍,這次試用python2.7.10,於是重新執行了下面命令。

sudo  /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 install

sudo easy_install pip

sudo pip install -U selenium

執行的過程中,貌似也有一些報錯資訊,先忽略啦。趕緊去看pyCharm裡的project Interpreter中python 2.7.10的package資訊。哈哈,這次pip和selenium都有了。

然後建立工程,選擇好直譯器,寫好測試指令碼,執行,還是有錯。


查看了"/usr/local/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py",發現

:param executable_path: Full path to override which geckodriver
    binary to use for Firefox 47.0.1 and greater, which
    defaults to picking up the binary from the system path.
啥意思呢,我理解是,瀏覽器版本在47.0.1及以上的時候需要提供geckodriver的完整路徑,46版本以下的則會呼叫系統預設的路徑。

查看了火狐的版本51,只能提供完整了路徑了。也不知道系統自帶的geckodriver在哪兒,就下了一個。

然後改了下程式碼,執行就OK了!


文章中有些理解可能有誤,大家多多指正。