最近Robot帶給我的麻煩還真有點多呀!這兩天不知為啥的突然間Robot FrameWork 跟我說他打開不了Firefox Browser,其實這是在我發現robot好像有點問題之後給他強制做了升級,包括robot framework . Selenium2Library . Selenium Firefox全部都升到最新,robot 3.0以上,selenium也在3.5,而firefox首次突破46被我升到55版,然後robot就再也開不了Firefox了,每次執行要開啟browsertest 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) pythonpackages,而pybot . selenium. Selenium2library其實都是pythonpackage,所以可以透過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 版以上,webdriverexecutable_path被改成了’geckodriver’這個driver所在路徑,在windows上就是一個geckodriver.exe檔,因為我現在selenium以是3.5版,自然是需要提供geckodriver路徑的。

Selenium3.5web driver executable path 預設指向了 ‘geckodriver’這個program的路徑

 

  另外我的FireFox也因為已是version 55 ,大於firefox 47,所以我必需去抓取第三方提供的geckodriver ,可以從selenium官網下的這個位置Mozilla GeckoDriver抓到目前最新版本driver 0.18.0 for windows

  抓回來解壓縮之後會得到一個geckodriver.exe檔,此時只要把他的所在目錄加到system path底下,seleniumexecutable_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了。

 

2017914日星期四 3:43 AM

arrow
arrow

    jackterrylau 發表在 痞客邦 留言(0) 人氣()