最近Robot帶給我的麻煩還真有點多呀!這兩天不知為啥的突然間Robot FrameWork 跟我說他打開不了Firefox Browser,其實這是在我發現robot好像有點問題之後給他強制做了升級,包括robot framework . Selenium2Library . Selenium 和 Firefox全部都升到最新,robot 在3.0以上,selenium也在3.5,而firefox首次突破46被我升到55版,然後robot就再也開不了Firefox了,每次執行要開啟browser的test case時總是會看到:WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
火狐是 55.0.3 version
Robot framework 是 3.0.2 version
從C:\Python27\Lib\site-packages\selenium\webdriver\__init__.py 可知目前selenium目前已是3.5 version
在這邊稍微補充一下,通常我們都是透過pip的程式來直接安裝(Install)或升級(Upgrade) python的packages,而pybot . selenium. Selenium2library其實都是python的package,所以可以透過pip指令安裝或更新:
pip 安裝 package:
pip install <package name> |
pip 更新 package:
pip install –U <package name> |
而之所以會出現這個錯誤訊息‘WebDriverException: Message: 'geckodriver' executable needs to be in PATH.’,上網找了一下,有個神人提供了本年度最佳解答(https://www.zhihu.com/question/49568096):
原來是這個原因
大概原因是說,selenium 3.X 版以上,webdriver的executable_path被改成了’geckodriver’這個driver所在路徑,在windows上就是一個geckodriver.exe檔,因為我現在selenium以是3.5版,自然是需要提供geckodriver路徑的。
Selenium3.5的web driver 之executable path 預設指向了 ‘geckodriver’這個program的路徑
另外我的FireFox也因為已是version 55 ,大於firefox 47,所以我必需去抓取第三方提供的geckodriver ,可以從selenium官網下的這個位置Mozilla GeckoDriver抓到目前最新版本driver 0.18.0版 for windows。
抓回來解壓縮之後會得到一個geckodriver.exe檔,此時只要把他的所在目錄加到system path底下,selenium的executable_path便可以直接找到該程式了,以我為例是把它放到C:\Python27底下,因為在安裝python27時此目錄已成為system path,因此selenium可以直接找到C:\python27\geckodriver.exe檔。
C:\python27\geckodriver.exe
當然,如果不用system path,那就得改寫executable_path=geckodriver,強制指定geckodriver.exe檔位置,如:我們把geckodriver.exe放在C:\Program Files\Webdriver\geckdriver.exe,那麼: executable_path="C:\Program Files\Webdriver\geckdriver.exe”。
當確定executable_path是可以找到geckodriver的有效路徑後,這時候就可以讓Robot Framework安心開啟Firefox了。
2017年9月14日星期四 3:43 AM