• 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,一般就正常了,如果还有作者所述的错误,可以继续按照作者的上述步骤操作。

    以上即为小小心得,记录一下。

  • 相关阅读:
    python 最简单的web应用(一)
    adb命令
    python 面向对象(四)--实例属性和类属性
    python 面向对象(三)--继承和多态
    python 面向对象(二)--访问限制
    python 面向对象(一)--类(class)和实例(Instance)
    前端性能优化方法
    myeclipse实现Servlet实例(1) 通过继承servlet接口实现
    myeclipse实现Servlet实例(3) 通过继承HttpServlet接口实现
    马士兵Servlet&Jsp学习
  • 原文地址:https://www.cnblogs.com/biyuting/p/8625258.html
Copyright © 2020-2023  润新知