webdriver介绍&与Selenium RC的比较
什么是webdriver?
webdriver是一个web自动化测试框架,不同于selenium IDE只能运行在firefox上,webdriver能够在不同的浏览器上执行你的web测试用例。其支持的浏览器有:Firefox、Chrome、IE、Edge、Safari、Opera、phantomjs等等。
webdriver支持使用不同的编程语言来写测试脚本,这是selenium IDE所无法做到的。对于测试人员来说至少具备:
- 掌握编程语言的判断分支语法
- 掌握基本的循环语法
webdriver支持的编程语言有:
- java
- .net
- php
- python
- perl
- ruby
在本系列教程中,我们将使用python来写webdriver测试脚本。如果你对python的基本语法不够熟悉的话,请先参照《python简明教程》学习(建议两个小时内完成学习)。
Selenium RC和webdriver的区别
在webdriver发布前selenium1.0版本叫做selenium remote control,简称Selenium RC。webdriver和Selenium RC之间有以下共同的特色:
- 它们都支持使用一种编程语言来设计你的测试脚本
- 它们均支持驱动多种浏览器来进行自动化测试
那它们之间有什么区别呢?接下来让我们一起看一看它们的区别:
1、架构
相比Selenium RC的架构,webdriver的架构更加简洁。
- webdriver通过OS层级来控制浏览器
- webdriver运行你使用你喜欢的编程语言的IDE来进行脚本开发
webdriver架构图
Selenium RC的架构更为复杂。
- 在运行测试脚本前必须先启动Selenium RC Server
- Selenium RC Server扮演着浏览器和测试脚本之间通信的桥梁角色
- 当开始运行测试脚本时,Selenium RC Server会Selenium Core(js代码)注入到浏览器中以达成控制浏览器
- 一旦Selenium Core被注入到浏览器中,Selenium Core就会开始接收并转发来自Seleniun RC Server的测试指令
- 当测试指令接收后,Selenium Core就会把它们当做js来执行
- 浏览器按照Selenium Core的指令进行操作,并将执行结果返回给Selenium RC Server
- Selenium RC Server将接收到的结果返回给你的测试脚本
- Selenium RC Server继续从你的测试脚本发送过来的指令中提取下一条指令,重复上述过程。
Selenium RC 架构图
2、速度
在运行速度方面,webdriver会远远好于Selenium RC。原因是Webdriver直接调用浏览器原生API进行驱动,而Selenium RC则通过Selenium Core(javascript实现)来间接驱动浏览器。
3、交互机制
- webdriver直接与浏览器进行交互
- Selenium RC通过Selenium RC Server中转才能与浏览器进行交互
4、API
- Selenium RC的API复杂冗余,不利于学习掌握
- Webdriver的API简洁,只要掌握几个常用的即可进行测试
5、支持的浏览器
- Selenium RC只能驱动可视化的浏览器
- webdriver除了驱动可视化的浏览器,还可以驱动内存模式的浏览器,比如HtmlUnit browser,phantomjs
webdriver的局限性
- webdriver无法及时的支持最新版本的浏览器,每次浏览器升级后,需要下载新的驱动程序。
- webdriver必须基于脚本模式开发测试用例
总结
- webdriver支持使用多种编程语言进行跨浏览器的web测试
- webdriver的强大在于支持N中编程语言来设计和实现测试
- webdriver执行速度更快是因为其简洁的架构
- webdriver直接驱动浏览器
- webdriver支持内存模式的浏览器
- webdriver不能实时的支持最新版浏览器
- webdriver没有内置的命令模式来自动生成测试结果
webdriver介绍&与Selenium RC的比较的更多相关文章
- Selenium_用selenium webdriver实现selenium RC中的类似的方法
最近想总结一下学习selenium webdriver的情况,于是就想用selenium webdriver里面的方法来实现selenium RC中操作的一些方法.目前封装了一个ActionDrive ...
- Selenium WebDriver VS Selenium RC
WebDriver到底是什么? WebDriver是一个Web的自动化测试框架,它支持你执行你的测试用例在不同的浏览器上面,并不像Selenium一样只支持Firefox. WebDriv ...
- Selenium IDE和Selenium RC的安装
1 安装FireBug和FirePath 1.在火狐浏览器中,点击”添加附件”按钮,弹出”附加组件管理器”页面 2.在弹出页面中,输入“fireBug”,点击“搜索”按钮,弹出fireBu ...
- Selenium RC 环境搭建(eclipse)
环境搭建参考:http://seleniumcn.cn/read.php?tid=7962 非常详细!晕乎晕乎了两天,看到这边帖子,终于搭起来了. 关于Selenium RC的原理,还是Seleni ...
- Selenium----Selenium简单介绍以及Selenium IDE环境搭建,脚本录制
1.selenium简单介绍 心得:作为一个新手开始了解这个工具,打算从录制脚本开始学习,“录制,看,学习,写”,总结网友说得打算先使用Selenium IDE录制学习,再使用Selenium RC开 ...
- Selenium RC配置
Selenium RC: -----作者: 虫师 ========================================================================== ...
- 软件发布版本区别介绍-Alpha,Beta,RC,Release
Alpha: Alpha是内部测试版,一般不向外部发布,会有很多Bug.除非你也是测试人员,否则不建议使用. 是希腊字母的第一位,表示最初级的版本 alpha就是α,beta就是β alpha版就是比 ...
- Selenium私房菜系列9 -- Selenium RC服务器命令行参数列表【ZZ】
本文转载自:http://wiki.javascud.org/display/SEL/Selenium+Remote+Control+-+options 使用示例: java -jar seleniu ...
- Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)
前一篇已经比较详细讲述了如何使用Selenium RC进行Web测试,但到底Selenium RC是什么?或者它由哪几部分组成呢?? 一.Selenium RC的组成: 关于这个问题,我拿了官网上的一 ...
随机推荐
- 测试工作中ADB命令实战
作者:TT,<测试架构师>微信公众号作者 大家能点击进来,说明还是对ADB有所了解或听说过的,可能也会比较熟练的掌握了这些命令,下面描述如有不对的地方,欢迎指正和交流学习,请多指教! 一. ...
- BASH SHELL not a valid identifier
解决BASH SHELL脚本报错 ‘: not a valid identifier当在shell编辑脚本时,运行时出现了" ‘: not a valid identifier " ...
- 每天一个Linux命令(09)--touch命令
linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 1.命令格式: touch [选项]··· 文件··· 2.命令参数: -a 或 ...
- SQL中with(nolock)作用说明
要提升SQL的查询效能,一般来说大家会以建立索引(index)为第一考虑.其实除了index的建立之外,当我们在下SQL Command时,在语法中加一段WITH (NOLOCK)可以改善在线大量查询 ...
- AR入门系列-05-Vuforia识别目标视频播放
在识别目标后播放视频我们需要一个插件 Easy Movie Texture 2.36.unitypackage 百度网盘下载地址:http://pan.baidu.com/s/1skT8Xp7 将Ea ...
- 用C++11实现C++17的apply(动态数组用作函数参数)
标题有点错误,apply是用tuple做参数,调用一个函数.这个标题是为了能更好的适配搜索关键字. 动态数组用作函数参数更适合嵌入了脚本环境的C++程序,比如lua或javascript(js). 若 ...
- 简单的线性M移动平均
最近在写Python的爬虫爬取全校学生的成绩信息和照片,发现些许问题. python的内存管理机制还没摸透,随着程序的运行,占用内存逐渐增大,料想应该是新开辟的空间未及时释放. 先研究研究算法,为比赛 ...
- Python中闭包、装饰器的概念
1.闭包(Closure)的概念: 内部函数中对enclosing作用域的变量进行引用 1 passline = 60 2 def func(val): 3 print('%x' % id(val)) ...
- RecyclerView 设置item间隔的方法
RecyclerView大家常用,但是如何给加载出来的item增加间隔很多人都不知道,下面是方法,直接上代码了: LinearLayoutManager layoutManager = new Lin ...
- Cannot use ImageField because Pillow is not installed.
现象描述: 使用 ImageField ,创建数据库表时,提示如下: Cannot use ImageField because Pillow is not installed. HINT: Get ...