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. navigationController.navigationBar.titleTextAttributes

    navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor ...

  2. tomcat错误:@HandlesTypes annotation of one or more ServletContentInitializers

    项目在别人的机器上运行正常,但是在自己机器上运行出现该错误,所以判断应该是环境配置的问题,通过更换eclipse.更换jdk.更换maven.更换tomcat的不同版本,最终确认是tomcat的问题. ...

  3. 4-Highcharts曲线图之时间轴折线图

    鼠标按住左键 左右移动可以试试<!DOCTYPE> <html lang='en'> <head> <title>4-Highcharts曲线图之时间轴 ...

  4. E3: PS4/PC 莎木3 众筹200万美元 9小时内达成

    这次E3任天堂没有新掌机(传说中的XDS呢.呵呵)和口袋的消息, 被喷得很严重, 索尼的FF7重制版和莎木3是亮点. 而莎木3的众筹速度据说创了记录, 玩家的情怀大胜. 笔者看到国内也有赞助几十刀的玩 ...

  5. IIS Express 一个网站配置多个 域名

      在配置localhost和IP都可以访问:   方法1: applicationhost.config文件配置: <bindings>   <binding protocol=& ...

  6. Nodejs Express 4.X 中文API 4--- Router篇

    相关阅读: Express 4.X API 翻译[一] --  Application篇 Express4.XApi 翻译[二] --  Request篇 Express4.XApi 翻译[三] -- ...

  7. ZOJ 1115 Digital Roots(简单,字符串与数)

    题目 //好一道水水题,可是我居然也错了那么多次,后来百度来发现是因为数据数位可能很长很长,要用字符串数组... //简单 //有坑啊——数据可能很大很大,要用字符串表示! #include<s ...

  8. POJ 1661 Help Jimmy (dijkstra,最短路)

    刚在百度搜索了一下这道题的题解, 因为看到有别人用动态规划做的,所以想参考一下. 结果顺带发现了有那么几个网站,上面的文章竟然和我这篇一模一样(除了一些明显的错别字外),我去,作者还是同一个人Admi ...

  9. netaddr 0.7.12

    Pythonic manipulation of IPv4, IPv6, CIDR, EUI and MAC network addresses https://pypi.python.org/pyp ...

  10. POJ 1607

    #include<iostream> #include<iomanip> using namespace std; int main() { //freopen("a ...