一. Selenium介绍
1. 什么是Selenium
是web自动化测试工具集,主要包括:IDE、Grid、RC(Selenium1.0)、WebDriver(Selenium2.0)
与其他工具的不同:
- 一般的脚本测试工具录制脚本,实际上都是通过拦截浏览器收发的http请求来实现的。事实上并没有办法录制用户对html页面的操作。 当然,对那些执行压力测试的工具来说,这类模拟已经足够。
- Selenium的脚本录制工具是通过监听用户对html页面的操作来录制脚本的。Selenium是真正能够监听用户对html页面的操作的录制工具。结构:
(1)Selenium1.0

a) Selenium IDE
- 是嵌入到 Firefox 浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。
- 在什么情况下用:快速的创建Bug重现脚本
b) Selenium Grid
- 用来对测试脚步做分布式处理。现在已经集成到selenium server 中了。
- 利用Grid,可以很方便地同时在多台机器上和异构环境中并行运行多个测试用例
- 其特点为:并行执行、通过一个主机统一控制用例在不同环境、不同浏览器下运行、灵活添加变动测试机
c) Selenium RC
- selenium RC 是 selenium 家族的核心工具,selenium RC 支持多种不同的语言编写自动化测试脚本,通过 selenium RC 的服务器作为代理服务器去访问应用从而达到测试的目的。
- selenium RC 使用分 Client Libraries 和 selenium Server。
- Client Libraries 库主要主要用于编写测试脚本,用来控制 selenium Server 的库。
- Selenium Server 负责控制浏览器行为,总的来说,Selenium Server 主要包括 3 个部分:Launcher、Http Proxy、Core。其中 Selenium Core 是被 Selenium Server 嵌入到浏览器页面中的。其实 Selenium Core就是一堆 JS 函数的集合,就是通过这些 JS 函数,我们才可以实现用程序对浏览器进行操作。Launcher 用于启动浏览器,把 selnium Core 加载到浏览器页面当中,并把浏览器的代理设置为 Selenium Server 的Http Proxy。
(2)Selenium2.0
selenium 2.0 = selenium 1.0 + WebDriver
其中:WebDriver & Selenium RC:
RC与WebDriver可以看成一套规范,在这套规范里面定义客户端与浏览器交互的协议,以及元素定位与操作的接口
- Selenium RC:在浏览器中运行JavaScript应用,使用浏览器内置的JavaScript翻译器来翻译和执行selenese 命令(selenese 是 selenium 命令集合) 。
- WebDriver:通过原生浏览器支持或浏览器扩展直接控制浏览器,WebDriver针对各个浏览器而开发,取代了被嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript 安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver 还利用操作系统级的调用模拟用户输入
2. WebDriver原理
总体而言,WebDriver是一层基础的协议规范,定义了:客户端与浏览器交互的协议,以及元素定位与操作的接口(WebDriver API)。
WebDriver API:提供了Web页面操作的相关规范,比如:比如元素定位方法,浏览器操作、获取web页元素属性等
具体操作详情:
1) WebDriver启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,作为WebDriver的remote server
2) Client端通过CommandExcuter发送HTTPRequest给remote server的侦听端口(通信协议:the webdriver wire protocol)
3) Remote server需要依赖原生的浏览器组件(如:IEDriverServer.ex)来转化浏览器的native调用
3. WebDriver如何组织和执行用例
WebDriver不能够组织和执行用例。它仅仅是一套规范协议,所以我们需要依赖单元测试框架,将写好这些操作页面元素的方法(用例)组织起来执行并输入测试结果。
单元测试框架:java的Junit、testNG,python的unittest
4. 学习路线
1) 熟悉WebDriverAPI:
API就是selenium 所定义一方法,用于定位,操作页面上的各种元素。
- 先学习元素的定位,selenium 提供了id、name、class name、 tag name、link text、partial link text、 xpath、css、等定位方法。xpath和css 功能强大语法稍微复杂,在这其间你可能还需要了解更多的前端知识。xml, javascript 等。
- 定位元素的目的是为了操作元素,接着就要学习各种元素有操作,输入框,下拉框,按钮点击,文件上传、下载,分页,对话框,警告框...等等。
2) 学习并使用单元测试框架,
单元测试框架本身就解决了用例的组织与运行。
3)学习POM设计模式
一. Selenium介绍的更多相关文章
- Python 爬虫利器 Selenium 介绍
Python 爬虫利器 Selenium 介绍 转 https://mp.weixin.qq.com/s/YJGjZkUejEos_yJ1ukp5kw 前面几节,我们学习了用 requests 构造页 ...
- selenium===介绍
selenium 是支持java.python.ruby.php.C#.JavaScript . 从语言易学性来讲,首选ruby ,python 从语言应用广度来讲,首选java.C#.php. 从语 ...
- selenium介绍和环境搭建
一.简单介绍 1.selenium:Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Fire ...
- java selenium (一) selenium 介绍
Selenium 是目前用的最广泛的Web UI 自动化测试框架. 本系列文章,将深入简出来讲解selenium 的用法 文章的末尾处, 有整个系列的链接 阅读目录 selenium 的命名 sele ...
- selenium 介绍1
本文主要是吸收这些帖子的营养,多谢互联网,和未知名作者. http://www.ltesting.net/ceshi/open/kygncsgj/selenium/2011/1009/203318.h ...
- Selenium介绍
基于selenium的自动化测试,华为已经做了两代了,目前是做到SmartGUI2.0,基于他们自己的AutoSpace平台.不过目前支持的貌似只有IE和火狐(火狐3.6).控件录制支持ID,Name ...
- selenium介绍及环境安装
selenium简介: seelenium是web应用程序自动化工具,通过自动操作浏览器,进行点击.输入.回车.返回等来模拟用户的真实行为.如何理解和看待selenium项目,selenium官方 ...
- [爬虫] selenium介绍
认识selenium 在爬取百度文库的过程中,我们需要使用到一个工具selenium(浏览器自动测试框架),selenium是一个用于web应用程序测试的工具,它可以测试直接运行在浏览器中,就像我们平 ...
- Selenium学习之==>Selenium介绍
前世 Selenium RC 早期的Selenium使用的是JavaScript注入技术与浏览器打交道,需要Selenium RC启动一个Server,将操作Web元素的API调用转化为一段段Java ...
随机推荐
- [android] 切换界面的问题
1. 界面重复创建的问题 2. 中间容器每次切换,都会清空容器中的子对象问题 3. 点击返回键的处理 解决重复创建的问题: 传递Class字节码对象,利用泛型来规定对象 判断界面是否存在,如果存在重复 ...
- go get 下载需要的相关工具
文档来源: https://code.google.com/p/go-wiki/wiki/GoGetTools 被墙了,所以转在这个备用. Installing Version Control Too ...
- Strapi 安装易错位置
Strapi官网(https://strapi.io)介绍:最先进的开源内容管理框架,可以毫不费力地构建功能强大的API,建立在Node.js平台之上,为您的API提供高速惊人的表现. 简单点说,(对 ...
- Python入门-初始函数
今天让我们来初步认识一个在python中非常重要的组成部分:函数 首先,让我们来幻想这样一个场景: 比如说我们现在想要通过社交软件约一个妹子,步骤都有什么? print('打开手机 ') print( ...
- 09_Redis持久化——AOF方式
[AOF简述] AOF(Append-only) Redis每次接受到一条改变数据的命令时,它会把该命令写到一个AOF文件中(只记录写操作,不记录读操作),当Redis启动时,它通过执行AOF文件中的 ...
- C语言数组指针(指向数组的指针)
注意:数组指针的定义,与指针数组的区别 转载:http://c.biancheng.net/cpp/biancheng/view/162.html 指向多维数组元素的指针变量 ① 指向数组元素的指针变 ...
- radio中最佳解决方案
radio中最佳解决方案 1.html中 <td> <input id="status" name="status" type="r ...
- 面向对象之property
property功能 以调用数据属性的方式(不用加括号)调用方法 方法定义成数据属性(方法本应该是动词) # 定义property之前 class People: def __init__(self, ...
- Java—IO流 字节流
IO流(输入流.输出流),又分为字节流.字符流. 流是磁盘或其它外围设备中存储的数据的源点或终点. 输入流:程序从输入流读取数据源.数据源包括外界(键盘.文件.网络…),即是将数据源读入到程序的通信通 ...
- centos 克隆系统放到别的机器上后出现网卡启动不了的情况
1. Remove Network Manager from startup Services. #chkconfig NetworkManager off 2. Add Default Net ...