Selenium RCSelenium程控制)

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)的更多相关文章

  1. JavaBeginnersTutorial 中文系列教程·翻译完成

    原文:JavaBeginnersTutorial 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 学习资源 目录 ...

  2. 《吐血整理》高级系列教程-吃透Fiddler抓包教程(34)-Fiddler如何抓取微信小程序的包-上篇

    1.简介 有些小伙伴或者是童鞋们说小程序抓不到包,该怎么办了???其实苹果手机如果按照宏哥前边的抓取APP包的设置方式设置好了,应该可以轻松就抓到包了.那么安卓手机小程序就比较困难,不是那么友好了.所 ...

  3. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  4. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  5. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  6. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  7. 一步一步使用ABP框架搭建正式项目系列教程

    研究ABP框架好多天了,第一次看到这个框架的名称到现在已经很久了,但由于当时内功有限,看不太懂,所以就只是大概记住了ABP这个名字.最近几天,看到了园友@阳光铭睿的系列ABP教程,又点燃了我内心要研究 ...

  8. angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用

    今天我们要讲的是ng2的路由系统. 例子

  9. CRL快速开发框架系列教程十三(嵌套查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

随机推荐

  1. 全面认识JVM技术

    本文向大家描述一下JVM的概念,JVM(Java虚拟机)是可运行Java代码的假想计算机.只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行. J ...

  2. 【中国互联网不眠夜】Struts2漏洞百出,OneRASP鼎力相助

    Struts2是一款优秀的网站框架,在互联网上有十分广泛的应用,近期apache官方发布了高危漏洞通告Apache Struts 任意代码执行漏洞(CVE-2016-3081,S2-032),该漏洞风 ...

  3. LA 4287

    Consider the following exercise, found in a generic linear algebra textbook. Let A be an n × n matri ...

  4. POJ 3336 Count the string (KMP+DP,好题)

    参考连接: KMP+DP: http://www.cnblogs.com/yuelingzhi/archive/2011/08/03/2126346.html 另外给出一个没用dp做的:http:// ...

  5. UVA 11038 - How Many O's? 计算对答案的贡献

    题意: 求[n, m]之间包含0的数字的个数题解:转化为求solve(n) - solve(m-1)的前缀问题 对于求0到n的解,我们举例 n = 25789 对于8这位,让其为0对答案的贡献是 (0 ...

  6. pku 1703(种类并查集)

    题目链接:http://poj.org/problem?id=1703 思路;个人觉得本质上还是和带权并查集一样的,只不过多了一个MOD操作,然后就是向量关系图稍微改动一下就变成种类并查集了,对于本题 ...

  7. JDK安装(windows/linux)

    双击安装...安装之后需要进行一些相关的配置工作...下面是我自己总结的安装和配置步骤: (1)非Win7系统 第一步:安装jdk,下载地址:http://www.oracle.com/technet ...

  8. Linux Mint 17 + 小米WIFI创建手机热点

    转载:http://www.pppei.net/blog/post/690 亲测可行! 我的系统是linux mint 17.1 64位,所用wifi位小米WIFI. 以下是原文: 此方法在linux ...

  9. 用httpPost对JSON发送和接收的例子

    HTTPPost发送JSON: private static final String APPLICATION_JSON = "application/json";         ...

  10. C++名字空间/C++命名空间

    0.序言 名字空间是C++提供的一种解决符号名字冲突的方法. 一个命令空间是一个作用域,在不同名字空间中命名相同的符号代表不同的实体. 通常,利用定义名字空间的办法,可以使模块划分更加方便,减少模块间 ...