一. 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 ...
随机推荐
- 数据结构(四)--- 红黑树(RedBlock-Tree)
文章图片来自邓俊辉老师课件 先提几个问题去思考学习本文 : 红黑树和2-4树(B-Tree)很像,那么它存在的动机又是什么呢 插入和删除操作的逻辑又是怎么样的,时间和空间复杂度可以达到怎么样 和 ...
- ssm架构添加maven、shiro、lucene、ueditor、druid支持
1.pom.xml文件配置: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http: ...
- Javaee的Dao层的抽取
有时候我们在实现不同功能的时候回看到很多的Dao层的增加.修改.删除.查找都很相似,修改我们将他们提取BaseDao 一.提取前 1. 提取前的LinkDao层: public interface L ...
- Spring课程 Spring入门篇 5-4 advice应用(上)
1 解析 1.1 通知执行顺序 2 代码演练 1 解析 1.1 通知执行顺序 aop执行方式为:前置通知==>所要增强的方法==>后置通知==>最终通知 在出现异常时会进行:前置通知 ...
- IntelliJ IDEA 16创建Web项目
首先要理解一个概念:在IntelliJ IDEA中“new Project”相当于eclipse中的工作空间(Workspace),而“new Module”相当于eclipse中的工程(Projec ...
- CSS3动画功能
1.transition功能 transition属性的使用方法:transition:property duration timing-function; 其中property表示对哪个属性进行平滑 ...
- Canvas中的save方法和restore方法
初学者也许会误认为canvas中save方法是用来保存绘图状态的图形,而restore方法是用来还原之前保存的绘图状态的图形,其实不然. save():保存当前的绘图状态. restore():恢复之 ...
- c++开发ocx入门实践一
原文:http://blog.csdn.net/yhhyhhyhhyhh/article/details/51374200 最近项目中利用ocx封装了底层视频播放及处理的控件,以供c#和web调用.对 ...
- 139.00.003 Git学习-Git时光机之Inbox体系(三)
一.Git时光机之Inbox 体系 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有G ...
- Git学习-Git配置(一)
零.前言 Git是一个工具,就没必要把时间浪费在那些"高级"但几乎永远不会用到的命令上.一旦你真的非用不可了,到时候再自行Google或者请教专家也未迟. 如果你是一个开发人员,想 ...