1.1 环境搭建
1.1.1 selenium简介
Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中执行这些测试。
Selenium的发展经历了三个阶段,第一个阶段,也就是selenium1的时代,在运行selenium1.0程序之前,我们得先启动selenium server端(selenium remote control),我们简称RC。RC主要包括三个部分:launcher,http proxy,selenium core。其中selenium core是被selenium server嵌入到浏览器页面中的,selenium core内部是一堆javascript函数构成,通过调用这些函数来实现对浏览器的各种操作。
很显然比较繁琐,这并不是最佳自动化解决方案,于是后来有了webdriver。
selenium2 的时代合并了webdriver,也就是我们通常说的selenium,selenium2是默认支持Firefox浏览器的,这点非常方便。
当然也支持其他更多浏览器,Ie和chrome浏览器需要下载驱动包,并添加到环境变量下。
selenium3 是2016年10月份发布的,并且现在默认安装都是selenium3了,selenium3在selenium2的基础上做了一些调整,最明显的区别 就是 selenium2对Firefox的支持最高只支持46及以下版本。selenium3可以支持47以上版本,但是需要下载 geckodriver.exe驱动,并添加到环境变量path下。
接下来的内容以selenium2为主。
************环境组合**************************
初学者最佳环境:python2.7+selenium2+Firefox46以下版本
喜欢尝新的环境:python3.6+selenium3+Firefox47以上版本
*********************************************
小编的环境:
windows10 64位
python 2.7.12
selenium 2.53.6
firefox 44
1.1.2 python安装
1.小编的电脑操作系统:win10 64位系统
2.下载Python安装包,选择2.7版本和3.6版本都可以
(下面的教程,两个版本会一起讲,所以不用担心版本问题)
官网下载地址:https://www.python.org/
3.Python安装,双击傻瓜式安装(别安装在c盘,用英文路径,不要有空格),安装时候选中下方红色框框,如果这一步成功,1.1.3环境变量这一步可以省略。
1.1.3 环境变量
1.安装完成后,看下这个目录D:\python\Scripts,有没pip.exe和easy_install.exe(一般都有,没有的话得卸载重新安装一次了)
2.将D:\python和D:\python\Scripts(注意这两个是复制自己电脑上的路径),添加到环境变量path下。
D:\python;D:\python\Scripts;(注意带上英文的分号)
1.1.4 安装selenium
1.打开cmd窗口输入:pip
(如果出现其它提示请检查上面几步,确认无误后出现Did not provide a command,看1.3解决pip异常这篇)
2.cmd输入指令安装在线安装selenium
>pip install selenium==2.53.6
(注意:首次装一定要看到进度100%完成,如果中途失败了,重新输入指令安装,直到看到100%完成为止)
1.1.5 验证selenium
如何才能知道selenium正确安装好了呢?
1.确保电脑上安装了Firefox浏览器46以下版本
cmd窗口输入如下指令
>python
>from selenium import webdriver
>webdriver.Firefox()
3.如果能启动浏览器,说明环境安装OK。
(启动不成功,说明没认真看文档,卸载了重新来一次)
1.1.6 浏览器
1.如果你打算用Firefox浏览器,那么千万别安装47以上版本(selenium2不兼容47以上)
2.如果你打算用Ie或Chrome浏览器,需要先下载浏览器驱动,将驱动文件放到python根目录。
如果有的已经安装过3.0的版本,启动firefox时候会报错,下一章讲如何使用pip降级selenium版本
1.1.7 firefox历史版本
firefox历年版本的官方镜像地址:
https://download-installer.cdn.mozilla.net/pub/firefox/releases/
1.2 pip降级selenium3.0
selenium版本安装后启动Firefox出现异常:'geckodriver' executable needs to be in PATH
selenium默默的升级到了3.0,然而网上的教程都是基于selenium2的,最近有不少小伙伴踩坑了,决定有必要出这一篇,帮助刚入门的小伙伴们解决好环境问题。
selenium+python环境搭配:
selenium2+firefox46以下版本(无需驱动包,firefox喜欢偷偷升级,你懂的)
selenium3+firefox46以上版本(必须下载驱动:geckodriver.exe,且添加到环境变量)
1.2.1 遇到问题
1.安装完selenium后,再cmd进入python环境
2.从selenium导入webdriver
3.启动Firefox浏览器
>>python
>>from selenium import webdriver
>>webdriver.Firefox()
然后出现以下异常:'geckodriver' executable needs to be in PATH
1.2.2 解决方案
1.'geckodriver' executable needs to be inPATH,这句话意思就是说,geckodriver.exe的驱动文件需要添加到环境变量下,
selenium2是默认支持firefox的,不需要驱动包,但是,selenium3需要驱动包的支持了,于是就有了上面的问题
2.解决办法一:继续使用selenium3,去下载驱动包,然后加到环境变量下(不推荐此办法,因为解决完这个问题后,后面还会接着有其它问题)
3.解决办法二:selenium3降级到selenium2(接下来会介绍)
1.2.3 检查pip环境
1.打开cmd,输入pip,检查pip环境是否正常
>>pip
2.如果输入pip出现提示:Did not provide a command 说明pip环境有问题,临时解决办法,输入pip时候加上后缀pip.exe就可以了,具体原因看下一篇解决办法。
1.2.4 pip查看selenium版本号
1.打开cmd,输入pip show selenium
>>pip show selenium
2.看红色区域位置版本号显示:2.53.0,显示的就是当前使用的版本号
(如果你这里显示的是3.0开头,就需要接下来步骤了)
1.2.5 pip降级selenium
1.为了避免与之前安装的selenium版本冲突,先找到selenium3.0目录:python\Lib\site-packages目录
把里面selenium开头的文件全部删除就可以了。python所有的第三方包都在这个目录下面。
2.打开cmd,输入pip install selenium==2.53.6(注意是两个==,中间不要留空格,这里推荐2.53.6的版本)
>>pip install selenium==2.53.6
1.2.6 升级pip版本
1.在使用pip过程中如果出现下方红色区域字样,就是说pip版本过低了,建议升级
2.如何升级pip呢?看最后一句话:python -m pip install --upgrade pip
3.把上面对应的提示照着敲一遍就可以了
1.3 解决pip使用异常问题
1.3.1 pip出现异常
有一小部分童鞋在打开cmd输入pip后出现下面情况:Didnot provide a command
Did not provide a command?这是什么鬼?
正常情况应该是酱紫
1.3.2 解决办法
1.pip是一个.exe的可执行文件,在cmd输入pip.exe就可以解决了。
2.所以在后面的安装指令中都需要带上后缀,那么问题来了,为什么会出现这种情况,如何彻底解决?
1.3.3 配置环境变量
1.主要原因是环境变量的PATHEXT里面缺少.EXE的文件名
2.在PATHEXT下编辑后面加上;.EXE(注意分号是英文的)
3.环境变量配置好了后,关掉cmd,重新打开输入pip试试(要是这一步还不能解决,继续往下看)
1.3.4 必杀技
1.找到pip所在的文件目录打开
2.在文件夹地址栏输入cmd,回车。
然后在打开的窗口输入pip(或pip.exe)试试吧
1.3.5 绝杀技能
打开cmd(快捷键:win+r),cd到pip所在的目录,如D:\test\python2\Scripts
>d:
>cd d:/test/python2/Scripts
>pip
(要是看到这里,还没解决,你这台电脑可以砸了!!!)
1.4 Chrome浏览器
前言
selenium2启动Chrome浏览器是需要安装驱动包的,但是不同的Chrome浏览器版本号,对应的驱动文件版本号又不一样,如果版本号不匹配,是没法启动起来的。
#############最佳环境搭配#####################
小编环境:selenium2.53.6+Chrome版本V49.0+chromedriverv2.22
(根据小编经验selenium2搭配Chrome版本40-50比较好,版本太高了会各种奇葩问题的)
###########################################
1.4.1 Chrome遇到问题
1.如果在启动chrome浏览器时候,出现如下界面,无法打开网址,那么首先恭喜你,踩到了坑,接下来的内容或许对你有所帮助。
>># coding:utf-8
>>from selenium import webdriver
>>driver = webdriver.Chrome()
>>driver.get("http://www.cnblogs.com/yoyoketang/")
1.4.2 查看版本号
1.查看Chrome版本号,设置>关于,查出来版本号是49.0
2.查看chromedriver.exe版本号,双击这个文件就可以了,查出来版本号是V2.9
3.很显然是chromedriver的版本号过低了,于是可以找个更高级的版本:V2.22
1.4.3 chromedriver
1.确保chromedriver.exe文件在path路径下,这里我放到Python的根目录了(python根目录已配置到path了)
2.确保驱动文件名称是chromedriver.exe,如果名称后面带版本号的,改下文件名称就行。
3.Chrome版本V49.0+chromedriverv2.22
1.4.4 各版本匹配表
chromedriver版本 支持的Chrome版本
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-53
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32
chromedriver版本下载大全:http://chromedriver.storage.googleapis.com/index.html
1.5 pycharm使用
前言
在写脚本之前,先要找个顺手的写脚本工具。python是一门解释性编程语言,所以一般把写python的工具叫解释器。写python脚本的工具很多,小编这里就不一一列举的,只要自己用着顺手就可以的,如果你还没有选好解释器,小编这里推荐pycharm。
在安装pycharm后,有一些小伙伴不会破解,这里小编还是推荐大家买正版的。当然,如果你不想付费,想破解pycharm,也是很容易的事情,这里小编列举几种破解办法。前提是你要先下载pycharm安装包,安装包可以去官网http://www.jetbrains.com/pycharm/下载最新版。
1.5.1 pycharm安装
方法一:
1.在注册界面,选择License serve。填入http://idea.lanyus.com/71
2.点击ok
方法二:
1.注册界面选择:Activationcoede
2.打开网址:http://idea.lanyus.com/71,点击“获取注册码”按钮
3.复制弹出框的注册码
4.copy到注册界面Activationcoede位置
方法三:
1.安装pycharm在注册界面先别动
2.调整电脑系统时间到2036年(20年应该够用了)。
3.注册界面选择申请30天试用
4.退出pycharm
5.电脑时间调整回来。
方法四:
1.安装pycharm在注册界面,选择使用30天
2.打开pycharm菜单里Help>Register
3.打开网址:http://idea.lanyus.com/71,点击“获取注册码”按钮
4.copy到注册界面Activationcoede位置
接下来开始pycharm之旅吧~
1.5.2 新建工程
1.在d盘新建一个test文件夹
2.打开pycharm左上角File按钮
3.点NewProject新建一个工程
1.5.3 新建脚本
1.在pycharm左侧菜单树右键,新建一个Directory(文件夹)。
2.选择对应文件夹,在文件夹中新建Python File(脚本文件)。
3.脚本名称自己命名,后缀.py会自动带出
1.5.4 开始编程
1.双击打开需要编写的脚本
2.在右侧编辑框输入:print("hello world!")
3.点脚本的title,右击后选择Run“test01”,运行结果如下
1.6 selenium3+firefox环境搭建
有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的。
(备注:这里不建议大家用selenium3,坑太多,如果selenium2实在用不了,那就看这篇吧)
安装环境过程中主要会遇到三个坑:
1.'geckodriver' executable needs to be in PATH
2.Expected browser binary location, but unable to find binary in default location
3.Unsupported Marionette protocol version 2, required 3
环境准备:
--python3.6
--selenium3.0
--firefox50
一、安装python
1.安装python这个简单,下载版本后傻瓜式安装就行了。
2.安装好之后,看下这个目录D:\python\Scripts,有没pip.exe和easy_install.exe(一般都有,没有的话得重新安装一次了)
3.将D:\python和D:\python\Scripts,添加到环境变量path下
二、检查pip工具
1.打开cmd,输入:pip,出现如下图界面,说明pip环境OK.
>>pip
三、安装selenium3.0
1.cmd输入:pip install selenium
>>pip install selenium
2.首次安装要看到100%完成,中途失败就重新多输入几次安装。
四、检查selenium环境
1.在cmd输入如下指令检查环境
>>python
>>from selenium import webdriver
>>driver=webdriver.Firefox()
>>driver.get("https://www.baidu.com")
2.能看到浏览器正常启动,说明环境OK,如果遇到异常就继续看下面解决方案。
五、遇到第一个坑:'geckodriver' executable needs to be in PATH
1.如果启动浏览器过程中报如下错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\test\python3\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 145, in __init__
self.service.start()
File "D:\test\python3\lib\site-packages\selenium\webdriver\common\service.py", line 81, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
2.这个是因为最新的selenium3.0启动firefox需要geckodriver.exe这个驱动文件。
3.下载之后,配置到环境变量path下(可以直接放python根目录)
六、遇到第二坑:Expected browser binary location, but unable to find binary in default location
1.如果启动浏览器过程中报如下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\test\python3\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 155, in __init__
keep_alive=True)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 92, in __init__
self.start_session(desired_capabilities, browser_profile)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 179, in start_session
response = self.execute(Command.NEW_SESSION, capabilities)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 238, in execute
self.error_handler.check_response(response)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 193, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Expected browser binary location, but unable to find binary in default location,
no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line.
2.这个是因为firefox.exe这个文件也需要配置到环境变量path下。
3.这个路径就是安装完firefox后,找到firefox.exe这个文件的地址,加到path下。
七、遇到第三坑:Unsupported Marionette protocol version 2, required 3
1.如果启动浏览器过程中出现如下错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\test\python3\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 155, in __init__
keep_alive=True)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 92, in __init__
self.start_session(desired_capabilities, browser_profile)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 179, in start_session
response = self.execute(Command.NEW_SESSION, capabilities)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 238, in execute
self.error_handler.check_response(response)
File "D:\test\python3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 193, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Unsupported Marionette protocol version 2, required 3
2.这个错误原因是firefox版本过低了,最新的selenium3.0版本支持firefox47以上的版本,升级版本就可以了
总结:整个环境的配置是python3.6+selenium3.0+firefox47以上版本,当然python用2.7版本也是可以的。