Selenium+Python學習之一


剛入門selenium+Python,實驗成功之后,記錄一下過程。

首先是在知乎上面看到一個關於selenium+python的示例,於是自己便嘗試搭建環境上手實驗。

按照作者的代碼敲一遍之后執行,竟然報錯了~

代碼如下:

# coding=utf-8
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://zhihu.com")
browser.close()  

然后運行,竟然報錯了。

其實上面代碼沒有問題,但是,我想通過API來熟悉一下webdriver,於是在WebDriver API上面查看:http://selenium-python.readthedocs.io/api.html

按照API示例編寫代碼如下:

# coding=utf-8
from selenium.webdriver import Firefox
from selenium.webdriver.support.events import EventFiringWebDriver, AbstractEventListener
class MyListener(AbstractEventListener):
    def before_navigate_to(self, url, driver):
        print("Before navigate to %s" % url)
    def after_navigate_to(self, url, driver):
        print("After navigate to %s" % url)

driver = Firefox()
ef_driver=EventFiringWebDriver(driver,MyListener())
ef_driver.get("http://zhihu.com")

assert "TestArt" in ef_driver.title

ef_driver.close()

執行之后,錯誤如下:selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

查找到一篇已經解決改問題的文章:http://www.cnblogs.com/yousuosiyss/p/6882420.html

摘選其中一種方式【下載geckodriver.exe】,步驟如下:

1.下載地址:https://github.com/mozilla/geckodriver/releases,根據自己的電腦,下載的win64位的;
2.在firefox的安裝目錄下,解壓geckodriver,然后將該路徑添加到path環境變量下,不報這個錯了;
3.但是,報了一個新的錯“selenium.common.exceptions.WebDriverException: Message: Unable to find a matching set of capabilities”;
4.繼續網上查,原因是,我下載的geckodriver是V0.16.1版本的,這個版本和selenium3.4.2不兼容,需要使用deckdriverV0.15的版本;
5.重新下載了deckodriverV0.15的版本,ok了,不報這個錯了,但是,又報了一個新的錯“selenium.common.exceptions.WebDriverException: Message: Unsupported Marionette protocol version 2, required 3;
6.繼續往上查原因,說是firefox版本太低了,需要升級到最新版,ok,更新firefox,問題解決。

其實按照作者的分享,很快便能解決該問題,但是,我按照作者的方式正常操作下來,仍然報一開始的錯,各種嘗試未果,然后在網上搜索他人的經驗分享,才終於解決了這個問題。
以下則是嘗試未果的補充:
步驟2,是將firefox的安裝目錄添加到path環境變量中,添加完成之后,如果仍報一樣的錯誤,重啟cmd與IDE,一般就正常了,如果還有作者所述的錯誤,可以繼續按照作者的上述步驟操作。

以上即為小小心得,記錄一下。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM