zoukankan      html  css  js  c++  java
  • selenuim +python环境配置遇到的诸多问题

    自动化测试入门,总结一下安装selenium、python以及配置webdriver遇到的问题:

    准备工作:

    1、下载火狐浏览器并安装插件selenium IDE、Firebug~~

    2、下载安装python,并配置环境变量

    3、下载setuptools(python基础工具包)并解压,通过cmd命令进入该解压目录,执行文件setup.py

      E:Softwarepythonsetuptools-28.8.0>python setup.py install

    网上很多资料都说执行ez_setup.py文件,然后本人下载的28.8.0版本的并没有ez_setup.py文件,于是就尝试执行setup.py发现可以运行~

    4、下载pip(python的安装包管理工具)并解压,通过cmd命令进入该解压目录,执行文件setup.py

      E:Softwarepythonpip-9.0.1>python setup.py install

      然后切换到python目录Scripts文件夹下执行 D:ProgramsPythonPython35-32Scripts>easy_install pip

    5、下载selenium3

      可直接使用cmd命令下载,在python的安装路径scripts文件下运行:

        D:ProgramsPythonPython35-32Scripts> pip install -U selenium

      或者直接下载selenium,并解压文件夹将整个目录放到D:ProgramsPythonPython35-32Libsite-packages目录下。

    这里我下载的selenium3.0.1版本解压后文件夹名是“selenium-3.0.1”,然后尝试以下脚本:

    from selenium import webdriver

    browser = webdriver.Firefox()
    browser.get("http://www.baidu.com")
    browser.find_element_by_id("kw").send_keys("selenium")
    browser.find_element_by_id("su").click()
    browser.quit()

    报错ImportError: No module named “selenium”。解决办法:将“selenium-3.0.1”文件夹重命名为“selenium”,如果不改文件夹名称,导入包名的时候就必须用文件夹的名字,即from selenium-3.0.1 import webdriver而“-”为非法字符也会报错,可以使用selenium3.0.1这种命名,总之名称要相同才能识别。

    重命名为selenium后继续运行~

    接着是webdriver报错selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.这里如果你的火狐浏览器安装不是默认路径,需要修改Python的两个文件配置(即path改为firefox的安装路径),

    D:ProgramsPythonPython35-32Libsite-packagesselenium-3.0.1-py3.5.eggseleniumwebdriverfirefox

    webdriver.py文件中修改为

    def_init_(self,firefox_profile=None,firefox_binary=FirefoxBinary("D:/Program Files (x86)/Mozilla Firefox/firefox.exe")

    Firefox_binary.py文件中修改为

    def_init_(self,firefox_path="D:/Program Files (x86)/Mozilla Firefox/firefox.exe",log_file=None);

    然后再次尝试,仍然报错,网上查资料说selenium 3.x开始,webdriver/firefox/webdriver.py的__init__中,executable_path="geckodriver";而2.x是executable_path="wires",firefox 47以上版本,需要下载第三方插件geckodriver,下载到任意目录,解压后将该路径加入到PC的path。

    仍然报错!!!尝试直接把geckodriver.exe放到python的根目录下,由于python的路径已经配置过且成功了,所以geckodriver的路径就不用单独配置了,这么一试调用的浏览器果然打开了!但是仍然报错WebDriverException:Unsupported Marionette protocol version 2 , required 3 ,这个报错在网上几乎查不到资料,折腾了两天,做了无数的尝试:

      把火狐浏览器卸载重装,安装至默认路径(webdriver.py和firefox_binary.py文件恢复原来的代码)。

      python也卸载重装,安装至默认路径(本人原来的python是很久以前安装的,那时候也不懂里面的任何含义,重新安装时发现python3.5.2可以自动配置环境变量,且安装时可以勾选pip、setuptools等工具包,后面这些工具的安装就都免了,但是selenium还是需要手动安装或者用cmd命令下载安装,不要忘了geckodriver.exe放到python路径下)

      降低火狐版本(降低火狐版本要注意把火狐的自动更新关掉,以免它自动升级回最新版本),原本是最新版本,后来降到42报错WebDriverException:Missing ‘marionetteProtocol’ field in handshake,也就是火狐版本高或者低都会报错。

      修改脚本browser = webdriver.Firefox()改为browser = webdriver.Firefox(“executable_path="C:UsersFFAppDataLocalProgramsPythonPython35geckodriver.exe"),把geckodriver的绝对路径直接写到脚本里,直接告诉它插件在哪,免得它总是找不到。

      更换geckodriver版本,下载了11.1.1、11.1.0、11.10.0三个版本,更换尝试。

      最后也不知道哪一步是关键,总之最后,python3.5、selenium3.0.1、geckodriver版本11.1.1,火狐浏览器不小心被更新到最新50的,脚本跑通了!!!如释重负~然后把webdriver.Firefox()里的绝对路径去掉,也没问题(难道是它第一次找不到路径,给它指条路认识了,后面就能自己找到了?)

      后记总结:

      1、第三方插件geckodriver很关键,火狐47+版本需要安装geckodriver.exe

      2、geckodriver.exe的路径配置在系统变量Path下即可,我之所以放到python路径下,是为了方便,以及前面遇到的问题太多,网上有人建议这么放,确实有效果~

      3、火狐浏览器如果没有安装至默认目录,webdriver.py和firefox_binary.py的配置需要更改

      4、各软件及插件之间的版本匹配很微妙,至今也没有明白~

    万事开头难,学习永无止尽~~~~~~~

  • 相关阅读:
    用Photoshop制作一寸照片
    每天只问孩子这4句话,胜过百般疼爱
    机场也有打折季,你知道吗?请收好这份扫货指南
    这8个习惯会让孩子越来越笨,甚至抑郁!父母赶紧收手
    读后感该怎么写
    vue-cli 4058错误
    bootstrap img自适应
    移动端高清、多屏适配方案
    去掉页面滚动条
    js 404页面跳转
  • 原文地址:https://www.cnblogs.com/fangfangs/p/f0000000f.html
Copyright © 2011-2022 走看看