自动化测试-Selenium家谱介绍

一、自动化测试定义
  自动化测试是通工具录制或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证.

二、什么样的项目适合做自动化测试
  1.需求明确,不会频繁变更
  2.系统界面稳定
  3.项目周期长
  4.自动化测试脚本可重复利用
  5.人员规模
  6.频繁的回归测试
  7.可自动化率30%-40%

三、自动化测试对比手工测试的优缺点

自动化测试特点:
  1.提高软件质量
  2.提高测试效率
  3.测试具有一致性和重复性
  4.准确可靠、避免人的主观性
  5. 24h*365 任何时间 任何地点 无疲劳
  6.增加软件信任度
  7.增进测试人员和开发之间的合作关系

手工测试特点:
  1.较好的异常处理能力、比较灵活
  2.测试具有一定的跳跃性
  3.人工测试步步追踪,细致定位
  4.主要用于发现软件缺陷

四、市场上主流的自动化测试工具介绍

1.QTP(UTF) :提供录制、回放、支持C/S ,B/S两种架构系统,收费,需要破解,只支持ie浏览器(ie9以下)
2.Robot Framework : 支持关键字驱动,Python语言编写的一款自动化测试框架,支持数据库测试,移动端测试,接口测试
3.RFT :(和Qtpl类似),支持录制和回放,支持C/S B/S两种架构的系统,收费,需要破解,支持Java .net vbscript语言
4.Watri : 也是一款Web应用程序的自动化测试工具,使用Ruby语言开发的一款自动化测试工具(Ruby是日本编程语言)
5.Selenium(目前最火) :
  a.支持多语言:Java Python C C++ C# .net php Javascript Ruby (后端开发语言)
  b.支持多浏览器:Chrome Firefox Ie Safari Edge(windows10自带) Opera(原名欧朋 现被360收购)
  c.支持多平台:Linux Windows Mac OS
  d.简单API : 很多操作浏览器的方法(webdriver api ) 比如最大化浏览器 等待 操作下拉框等等 ......
  e.支持并行执行测试用例:可以在windows下面谷歌浏览器做自动化测试同时也可以在Liunx火狐浏览器做自动化测试
  f.开源、免费、支持二次开发(可以对selenium的源码进行改造)

六、Selenium家谱及工具介绍

Selenium是什么?
Selenium是一个自动化测试工具集。包含Selenium1.0 Selenium2.0 selenium3.0,其中Selenium1.0包含Selenium ide
Selenium grid selenium rc (Selenium2.0包含Selenim1.0 + Webdriver)

Selenium1.0的构成 : selenium ide + selenium grid + selenium rc
    ide :提供录制和回放的一个工具(火狐浏览器自带的一个插件)
    grid:支持并行执行测试用例
    rc:可以简单理解为控制浏览器行为的一个远程服务器

Selenium2.0的构成:Selenium1.0 + Webdriver

Webdriver:它是一套操作浏览器的api(接口规范) 包含了控制浏览器行为的一些操作方法(比如最大化浏览器 等待 操作下拉框等等 ......)

补充一点:
firefox46版本以下的驱动是自动集成在浏览器本身的

Selenium3.0的构成(2016年7月末出现第一个beat版本):
Selenium3.0=Selenium ide + Selenium grid + Sebdriver
    1.去掉了RC,全面支持webdriver
    2.支持Java8以上的开发环境
    3.Firefox的驱动和selenium分离。只支持firefox47版本以上的浏览器,另外需要单独配置驱动。

浏览器驱动是什么?
  每一种浏览器都有自己的原生浏览器驱动,驱动是一个.exe文件 比如谷歌的驱动 chromedriver.exe 需要单独下载驱动(网上下载)做自动化测试需要调用浏览器的驱动来完成!

RC和webdriver区别是什么?
    RC:是通过外部一大堆JS函数来调用浏览器做自动化测试
    Webdriver:是通过原生浏览器驱动来调用浏览器做自动化测试
    Webdriver和浏览器的紧密结合度比RC更好,所以在selenium中主推webdriver,在selenium2.0当中主推的是webdriver
    因为RC最开始有一部分用户为了保持向下兼容,所以RC没有完全去掉。

Selenium2.0 和Selenium3.0区别不是很大,具体看Selenium3.0的构成!
目前市场上说selenium或者是招聘网上说的selenium无特殊指明,均为selenium2.0或者3.0

七、自动化测试环境搭建
1.cmd ---> pip install selenium==2.53.0 (如果selenium后面不跟==表示默认安装最新版本)

2. pip show selenium 查看selenium安装的版本号(该操作在cmd->windows下面查看)
(注意:1.pip 是什么? pip是python2.7.9版本以后自动集成到python中的一个包管理工具,方便下载和python有关的包或者模块)

3.验证环境是否安装成功python交互模式下--->输入from selenium import webdriver -->运行无报错(安装成功)

4.配置浏览器驱动,这里我们教学使用的chrome浏览器,目前最新的版本是63.0.3239.84(正式版本)

6.直接将chromedriver.exe (chromedriver.exe原封不动复制到C:\Python27目录下面)

7.在idle编辑器里面敲一段代码:
    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')

八、前端工具安装

目的:方便web页面的元素定位。
只有火狐浏览器提供。高版本的火狐浏览器没有,只有低版本的有这个插件。
FireBug:附加组件-->扩展-->搜索firebug-->点击安装-->重启--->F12查看 小虫子
FirePath:附加组件-->扩展-->搜索firepath-->点击安装-->重启--->F12查看 小虫子上面有没有firepath

十、前端技术
    前端三剑客:
      HTML
      CSS
      Javascript

HTML静态网页 == 文档
标签有开口有闭合(并不是所有标签都有闭合标签 如 img input标签):
开始标签: <a>
结束标签: </a>
标签都是有层级关系的:爷爷类标签-->父类标签-->子类标签
自动化测试要定位元素---->要认识HTML页面---->要了解HTML页面的层级关系--->学会用程序的视角去找到他们

HTML中的常用标签说明:
    <html> 声明 这是一个HTML文档
    <head> HTML标签的头部
    <body> 身体包含了N多组标签对
    <a> 超链接 如果a标签后面跟着 href="任何链接" 说明<a>一定是链接
    <p> 段落
    <img> 图像
    <input> 输入 文本框
    <form> 表单(结构 包含input 包含一个button)
    <title> 窗口的标题
    <iframe> 框架 HTML中的框架
    <div> 无名式 代表的是块级元素 div是一个容器 可以包含任意标签
    <span> 无名式 代表的是块级元素 span是一个文本容器 可以包含任意标签

什么是元素?
  HTML中的开始标签和结束标签之间的所有代码都是元素,元素有属性和属性值。
demo:
<input id="kw" name="wd" class="s_ipt" value="" maxlength="100" autocomplete="off">
如上所述 id 是该元素中的一个属性 它的属性值是 kw 依此类推
检查属性值的唯一性: f12 -->ctrl + f -->拷贝属性对应的属性值--复制到HTML中的文本框-->enter键查看该属性值是否在整个页面中是否唯一,如果唯一就可以使用该元素去定位。

上一篇:关于JS历史拓展


下一篇:uva 105 - The Skyline Problem