python+selenium自动化软件测试(第1章)

python+selenium自动化软件测试(第1章):环境搭建,你也可以直接用Anaconda!

目录

1.1 环境搭建

1.2 pip降级selenium3.0

1.3 解决pip使用异常问题

1.4 Chrome浏览器

1.5 pycharm使用

1.6 selenium3+firefox环境搭建


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

Chrome浏览器的chromedriver版本驱动大全,下载地址:
http://chromedriver.storage.googleapis.com/index.html

IE浏览器的IEdriver版本驱动大全,下载地址:
http://selenium-release.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版本也是可以的。

猜你喜欢

转载自blog.csdn.net/weixin_41918841/article/details/87930124