selenuim +python环境配置遇到的诸多问题
自动化测试入门,总结一下安装selenium、python以及配置webdriver遇到的问题:
准备工作:
1、下载火狐浏览器并安装插件selenium IDE、Firebug~~
2、下载安装python,并配置环境变量
3、下载setuptools(python基础工具包)并解压,通过cmd命令进入该解压目录,执行文件setup.py
E:\Software\python\setuptools-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:\Software\python\pip-9.0.1>python setup.py install
然后切换到python目录Scripts文件夹下执行 D:\Programs\Python\Python35-32\Scripts>easy_install pip
5、下载selenium3
可直接使用cmd命令下载,在python的安装路径scripts文件下运行:
D:\Programs\Python\Python35-32\Scripts> pip install -U selenium
或者直接下载selenium,并解压文件夹将整个目录放到D:\Programs\Python\Python35-32\Lib\site-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:\Programs\Python\Python35-32\Lib\site-packages\selenium-3.0.1-py3.5.egg\selenium\webdriver\firefox的
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:\Users\FF\AppData\Local\Programs\Python\Python35\geckodriver.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、各软件及插件之间的版本匹配很微妙,至今也没有明白~
万事开头难,学习永无止尽~~~~~~~
selenuim +python环境配置遇到的诸多问题的更多相关文章
- 1 python学习——python环境配置
1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...
- VScode中python环境配置
vscode中python环境配置 想要在vscode中运行python代码必须要告诉vscode使用哪个解释器才行 方法1. 打开命令面板(Ctrl+Shift+P)输入Python: Select ...
- MxNet C++和python环境配置
MxNet C++和python环境配置 安装文件: 1.为了与python已经安装好的版本一致,在这个网站下载mxnet 1.0.0的源码 https://github.com/apache/inc ...
- 1.python环境配置 - python基础入门
工欲善其事必先利其器,python学习首先要做得就是配置python环境.配置环境只需要下载Pycharm 和 Anaconda两个安装包即可,请跟上我得步伐,一步一步操作. 重要的事情说三遍: 先安 ...
- VsCode中编写python环境配置
1. VsCode中编写python环境配置 1.1. 前言 有过开发经验都知道idea一系列的软件虽然功能比较多,但比较容易卡,电脑不好还真容易上火,这里我想要入门python,还是选了款vscod ...
- Python环境配置安装
2016年12月20日14:15:23 -------------- 参考菜鸟教程: Python 环境搭建 | 菜鸟教程 http://www.runoob.com/python/python-i ...
- thrift 服务端linux C ++ 与客户端 windows python 环境配置(thrift 自带tutorial为例)
关于Thrift文档化的确是做的不好.摸索了很久才终于把跨linux与windows跨C++与python语言的配置成功完成.以下是步骤: 1) Linux下环境配置 ...
- Selenium WebDriver + Python 环境配置
1. 下载必要工具及安装包 1.1.[Python开发环境] 下载并安装Python 2.7.x版本(当前支持2.x版本,不要下载最新的3.X的版本因为python3并非完全兼容python2) ...
- Python环境配置及项目建立
一.安装Python Python比较稳定的两个版本是Python 3.5和Python 2.7,我用的是Python 2.7,下载地址是:https://www.python.org/downloa ...
随机推荐
- python调用Moxa PCOMM Lite通过串口Ymodem协议发送文件
本文采用python 2.7编写. 经过长期搜寻,终于找到了Moxa PCOMM Lite.调用PCOMM.DLL可以非常方便的通过串口的Xmodem.Ymodem.Zmodem等协议传输文件,而无需 ...
- 【转】【Top 100 Best Blogs for iOS Developers】
原文地址:http://www.softwarehow.com/best-blogs-for-ios-developers/ (by JP Zhang | Last updated: Apr 5, 2 ...
- js 小数格式化函数
直接上代码,参数number为待格式化整数或小数,fix是要保留有效位数,过亿以亿结尾,过万以万结尾,toFixed函数记得,免得再查 function shorten_number (number, ...
- C#在声明对象时对其赋值的一种方式
今天学会一种更方便的赋值方式,如下, 同时存档一个通过 打开对话框 获取地址的方式. private string GetSaveAsPathXls(string defaultFileName) { ...
- 转:浅谈命令查询职责分离(CQRS)模式
原文来自于:http://www.cnblogs.com/yangecnu/p/Introduction-CQRS.html 在常用的三层架构中,通常都是通过数据访问层来修改或者查询数据,一般修改和查 ...
- jersey REST的接口简述
GET方法:只读,是幂等和安全的.在接口中抽象地定义了资源的请求方法类型后,其全部实现类都无须再定义. HEAD方法:与GET方法相似,只是服务器端的返回值不包括HTTP实体. OPTIONS方法:与 ...
- 【C#】动态加载dll程序集
原文:http://www.cnblogs.com/bomo/archive/2013/03/01/2938165.html 很多时候我们需要用到引用其他程序集,有些程序集是.Net生成的,可以支持反 ...
- C语言利用va_list、va_start、va_end、va_arg宏定义可变参数的函数
在定义可变参数的函数之前,先来理解一下函数参数的传递原理: 1.函数参数是以栈这种数据结构来存取的,在函数参数列表中,从右至左依次入栈. 2.参数的内存存放格式:参数的内存地址存放在内存的堆栈段中,在 ...
- 快速搭建Web服务器软件PHP+Apache+MySQL
搭建网站或者博客,需要一个合适的 Web 服务器.除了如下能在购买的虚拟空间上进行操作外,我们也可以在自己的电脑上搞定,因为可以用来方便快捷地测试网站或者博客主题,无论是 Wordpress.Joom ...
- Android 常用权限
添加WiFi以及访问网络的权限: <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" ...