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

    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:pythonScripts,有没pip.exe和easy_install.exe(一般都有,没有的话得卸载重新安装一次了)

    2.将D:python和D:pythonScripts(注意这两个是复制自己电脑上的路径),添加到环境变量path下。
    D:python;D:pythonScripts;(注意带上英文的分号)

    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目录:pythonLibsite-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: estpython2Scripts
    >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:pythonScripts,有没pip.exe和easy_install.exe(一般都有,没有的话得重新安装一次了)
    3.将D:python和D:pythonScripts,添加到环境变量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: estpython3libsite-packagesseleniumwebdriverfirefoxwebdriver.py", line 145, in __init__
        self.service.start()
      File "D: estpython3libsite-packagesseleniumwebdrivercommonservice.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: estpython3libsite-packagesseleniumwebdriverfirefoxwebdriver.py", line 155, in __init__
        keep_alive=True)
      File "D: estpython3libsite-packagesseleniumwebdriver emotewebdriver.py", line 92, in __init__
        self.start_session(desired_capabilities, browser_profile)

      File "D: estpython3libsite-packagesseleniumwebdriver emotewebdriver.py", line 179, in start_session
        response = self.execute(Command.NEW_SESSION, capabilities)
      File "D: estpython3libsite-packagesseleniumwebdriver emotewebdriver.py", line 238, in execute
        self.error_handler.check_response(response)
      File "D: estpython3libsite-packagesseleniumwebdriver emoteerrorhandler.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: estpython3libsite-packagesseleniumwebdriverfirefoxwebdriver.py", line 155, in __init__
        keep_alive=True)
      File "D: estpython3libsite-packagesseleniumwebdriver emotewebdriver.py", line 92, in __init__
        self.start_session(desired_capabilities, browser_profile)
      File "D: estpython3libsite-packagesseleniumwebdriver emotewebdriver.py", line 179, in start_session
        response = self.execute(Command.NEW_SESSION, capabilities)
      File "D: estpython3libsite-packagesseleniumwebdriver emotewebdriver.py", line 238, in execute
        self.error_handler.check_response(response)
      File "D: estpython3libsite-packagesseleniumwebdriver emoteerrorhandler.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版本也是可以的。

  • 相关阅读:
    socket阻塞与非阻塞,同步与异步
    Python列表切成多个/生成多个空列表
    virtualbox 下windows与虚拟机实现文件共享---挂载
    centos安装mysql
    centos安装Python2.7
    在遍历或者迭代过程中对集合进行增删 都会发生异常(迭代器的并发异常)
    List
    LinkedList
    增强for循环
    Collection中的迭代器
  • 原文地址:https://www.cnblogs.com/zidonghua/p/7429099.html
Copyright © 2011-2022 走看看