Selenium系列教程(2)

Selenium RC(Selenium远程控制)
Selenium RC是一个用Java编写的,允许用户使用无论哪种编程语言对基于Web的应用程序构建测试脚本的工具。Selenium RC克服了Selenium IDE以及Selenium核心各种缺点的。
Selenium核心的漏洞和限制使得用户很难认识到该工具整体上的优点。因此,这也使得测试过程成为了繁琐并难以达到的任务。
其中一个重要的限制就是同源策略。
同源策略的问题:
同源策略问题是指,不允许从不同于我们访问文件的起点来试图访问文件的DOM。
起点指的是有序的URL的方案,主机和端口的顺序组合。例如,对于一个URL:http://www.seleniumhq.org/projects/来说,相应的起点是http,seleniumhq.org以及80的组合。
因此,Selenium核心(JavaScript程序)无法从与发起起点不同的地方来访问内容。
例如,如果我在“http://www.seleniumhq.org/”上推出JavaScript程序的话,那么我将能够通过同一个域中的网页来访问,如“http://www.seleniumhq.org/projects/”或“http://www.seleniumhq.org/download/”。其他例如google.com,yahoo.com的域则不能访问。
因此,为了使用Selenium核心来测试应用,你需要在Selenium核心上安装整个应用程序包括Web服务器,以克服同源策略的问题。

于是,为了不使用在Selenium核心上复制整个应用程序来解决同源策略问题,下面我们就要介绍一下Selenium远程控制。当杰森·哈金斯在演示Selenium的时候,另一ThoughtWorks的同事Paul Hammant提出了一个解决同源策略的工具,还可以与我们选择的编程语言进行结合。于是Selenium RC应运而生。
与Selenium IDE不同,SeleniumRC支持多种浏览器和平台。

流程说明
- 用户使用他们希望的编程语言来创建测试脚本。
- 对于每一个编程语言,都有一个指定的客户端库。
- 客户端库将测试命令传递到Selenium服务器。
- Selenium服务器解密并转换测试命令为JavaScript命令,并将其发送给浏览器。
- 浏览器通过使用Selenium核心来执行命令,并发送结果返回给Selenium服务器
- Selenium服务器提供测试结果给客户端库。
有几个先决条件是在建立Selenium RC的脚本之前所必需的:
- 会一种编程语言——Java,C#,Python等等。
- 有一个集成开发环境——eclipse,NetBeans等等。
- 一个测试框架(可选)——JUnit,TestNG等等。
- 和Selenium RC的安装设定
Selenium RC的优缺点:
即将要介绍的是SeleniumRC的优缺点,请参阅下图。

Selenium Grid
有了SeleniumRC后,测试人员的生活好了很多,直到新趋势提出要求,需要在多个平台和浏览器执行相同或不同的测试脚本,以实现分布式测试、在不同环境下的测试以及显著节省执行时间。因此,综合这些要求Selenium Grid应运而生。
Selenium Grid是由Pat Lightbody为了解决同时在多个平台上执行测试套件而产生。
Selenium webdriver
Selenium webdriver是由ThoughtWorks的另一个工程师,Simon Stewart在2006年创造的。webdriver也是一个基于Web的测试工具,与Selenium RC有一些微妙的差异。因为,该工具是基于为不同浏览器建立分离的客户端的基础上建立的;无需JavaScript的提升。这就带来了Selenium RC的和webdriver之间的兼容性分析。其结果是带来了一个更强大的自动化测试工具的开发,Selenium2。
webdriver的是干整洁的,纯粹的面向对象的框架。它利用自动化浏览器的原生兼容性,而无需使用任何外部个体。日益增加的需求带来了大量的人气和用户群。
Selenium webdriver的优缺点:
请参考下图的webdriver的优点和缺点。

Selenium3
Selenium3是Selenium2的高级版本,是专注于移动和Web应用程序自动化的工具。说它支持移动测试的意思是说,对webdriver的API进行了扩展,以解决移动应用测试的需求。该工具预计将在市场上正式推出。
环境和技术堆栈
随着Selenium套件各个新工具的出现和增加,环境和技术变得更加兼容。这里是Selenium的工具集支持环境和技术的详细列表。
支持的浏览器

支持的编程语言

支持的操作系统

支持的测试平台

结论
在本教程中,我们试图让你熟悉Selenium套件的各个组成部分,它们各自的用途和优势。
以下是这篇文章说明的问题。
- Selenium是包含几个自动化测试工具的套件,他们各自适合不同的测试需求。
- 所有这些工具属于开源类,并且仅支持基于Web的测试。
- Selenium套件由4个基本部分组成; Selenium IDE,Selenium RC,webdriver,Selenium Grid。
- 用户需要根据需要明智的选择合适的Selenium工具。
- Selenium IDE的是一个Firefox插件,比较容易安装和使用。用户并不需要具备编程知识。SeleniumIDE是一个初学者用户的理想工具。
- Selenium的RC是一个允许用户使用期望的编程语言创建测试脚本的服务器。它还允许使用不同的浏览器来执行测试脚本。
- Selenium Grid在Selenium RC的基础上带来了额外的功能,能够在同一时间执行分配在不同的平台和浏览器的测试脚本,从而实现主从式架构。
- webdriver的是一个完全不同的工具,拥有了Selenium RC的各种优点。SeleniumRC和webdriver合并也被称为Selenium2。webdriver直接与Web浏览器通信,并使用其兼容性实现自动化。
- Selenium3是最值得期待的Selenium套件成员之一,尚未在市场上推出。 Selenium3大力支持移动测试。
在接下来的教程中,我们将讨论有关Selenium IDE的安装和功能的基本知识。我们也会介绍Selenium IDE的基本术语和符号说明。
接下来Selenium教程:介绍SeleniumIDE及其安装以及Selenium IDE的所有功能的详细研究(即将推出)
【英文原文:http://www.softwaretestinghelp.com/selenium-tutorial-1/】
{测试窝原创译文,译者:大头}
译者简介:大头,在读日本九州大学修士,计算机专业,主研究方向为文本挖掘,及自然语言处理。
Selenium系列教程(2)的更多相关文章
- JavaBeginnersTutorial 中文系列教程·翻译完成
		原文:JavaBeginnersTutorial 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 学习资源 目录 ... 
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(34)-Fiddler如何抓取微信小程序的包-上篇
		1.简介 有些小伙伴或者是童鞋们说小程序抓不到包,该怎么办了???其实苹果手机如果按照宏哥前边的抓取APP包的设置方式设置好了,应该可以轻松就抓到包了.那么安卓手机小程序就比较困难,不是那么友好了.所 ... 
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
		上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ... 
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
		上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ... 
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
		上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ... 
- Angular2入门系列教程4-服务
		上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ... 
- 一步一步使用ABP框架搭建正式项目系列教程
		研究ABP框架好多天了,第一次看到这个框架的名称到现在已经很久了,但由于当时内功有限,看不太懂,所以就只是大概记住了ABP这个名字.最近几天,看到了园友@阳光铭睿的系列ABP教程,又点燃了我内心要研究 ... 
- angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用
		今天我们要讲的是ng2的路由系统. 例子 
- CRL快速开发框架系列教程十三(嵌套查询)
		本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ... 
随机推荐
- navigationController.navigationBar.titleTextAttributes
			navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor ... 
- tomcat错误:@HandlesTypes annotation of one or more ServletContentInitializers
			项目在别人的机器上运行正常,但是在自己机器上运行出现该错误,所以判断应该是环境配置的问题,通过更换eclipse.更换jdk.更换maven.更换tomcat的不同版本,最终确认是tomcat的问题. ... 
- 4-Highcharts曲线图之时间轴折线图
			鼠标按住左键 左右移动可以试试<!DOCTYPE> <html lang='en'> <head> <title>4-Highcharts曲线图之时间轴 ... 
- E3: PS4/PC 莎木3 众筹200万美元 9小时内达成
			这次E3任天堂没有新掌机(传说中的XDS呢.呵呵)和口袋的消息, 被喷得很严重, 索尼的FF7重制版和莎木3是亮点. 而莎木3的众筹速度据说创了记录, 玩家的情怀大胜. 笔者看到国内也有赞助几十刀的玩 ... 
- IIS Express 一个网站配置多个 域名
			在配置localhost和IP都可以访问: 方法1: applicationhost.config文件配置: <bindings> <binding protocol=& ... 
- Nodejs Express 4.X 中文API 4--- Router篇
			相关阅读: Express 4.X API 翻译[一] -- Application篇 Express4.XApi 翻译[二] -- Request篇 Express4.XApi 翻译[三] -- ... 
- ZOJ 1115 Digital Roots(简单,字符串与数)
			题目 //好一道水水题,可是我居然也错了那么多次,后来百度来发现是因为数据数位可能很长很长,要用字符串数组... //简单 //有坑啊——数据可能很大很大,要用字符串表示! #include<s ... 
- POJ 1661 Help Jimmy (dijkstra,最短路)
			刚在百度搜索了一下这道题的题解, 因为看到有别人用动态规划做的,所以想参考一下. 结果顺带发现了有那么几个网站,上面的文章竟然和我这篇一模一样(除了一些明显的错别字外),我去,作者还是同一个人Admi ... 
- netaddr 0.7.12
			Pythonic manipulation of IPv4, IPv6, CIDR, EUI and MAC network addresses https://pypi.python.org/pyp ... 
- POJ 1607
			#include<iostream> #include<iomanip> using namespace std; int main() { //freopen("a ... 
