刚入门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,一般就正常了,如果还有作者所述的错误,可以继续按照作者的上述步骤操作。
以上即为小小心得,记录一下。