Selenium的概述

2018年6月26日 3.33k 次阅读 5 条评论 4 人点赞

Selenium是一个用于Web应用程序自动化测试的工具集合。

Selenium可以直接运行在浏览器中,就像真正的用户在操作一样。它支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla FirefoxSafariGoogle ChromeOpera等。

Selenium主要功能包括:

测试浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
测试系统软件的功能——创建回归测试检验软件功能和用户需求。
支持自动录制动作和自动生成 .Net、Java、Python等不同语言的测试脚本。
然而其作用不局限于测试领域,还可以用于屏幕抓取与浏览器行为模拟等操作。

Selenium包括下列一系列的工具组件。

  • Selenium IDE:是嵌入到Firefox浏览器的插件,用于在Firefox上录制与回放Selenium 脚本。图形化的界面可以形象地记录下用户在浏览器中的操作,非常方便使用者了解与学习。目前它只能在Firefox下使用,好在它能将录制好的脚本转换成各种Selenium WebDriver支持的程序语言,进而扩展到更广泛的浏览器类型。Selenium IDE不仅仅是一个记录工具:它是一个完整的IDE。你可以选择使用它的记录功能,或者手工编辑脚本。通过自动完成支持和快速移动命令的能力,Selenium IDE是创建Selenium测试的理想环境,无论你喜欢什么类型的测试。
  • Selenium WebDriver:其实质上就是可以支持多种编程语言,并且有用于操作浏览器的一套API。支持多类型浏览器、跨操作系统平台(包括Linux、Windows以及Mac OS X),是真正意义上的跨浏览器测试工具。WebDriver为诸如Java、C#、Python、Ruby、PHP、Java等语言分别提供了完备的、用于实现Web自动化测试的第三方库。
  • Selenium Standalone Server:包括被大家广泛了解的Selenium Grid、远程控制、分布式部署等,均可实现Selenium 脚本的高效执行与拓展。我们利用Grid使得自动化测试可以并行运行,甚至是在跨平台、异构的环境中运行,包括目前主流的移动端环境,如Android、iOS。

Selenium IDE具备以下特点:

  1. 简单的记录和回放;
  2. 智能字段选择将根据需要使用id、名称或XPath;
  3. 所有通用的Selenium命令自动完成;
  4. 遍历测试;
  5. 调试和设置断点;
  6. 自动维护每个页面标题的选项;
  7. 在一个项目文件中,包含所有测试用例和套件;

Selenium经历了几个版本的过度,Selenium 1.0->Selenium 2.0->Selenium 3.0,在Selenium团队团队的不断努力下发展至今Selenium的功能逐渐强大。

  • Selenium 1.0(Selenium RC,Remote Control):传统 Selenium 框架,支持多种编程语言脚本生成。但需要启动一个代理 Server 来处理用户与测试 Server 之间的通讯。
  • Selenium 2.0(Selenium Webdriver):全新自动化接口,突破了 Selenium 1 的一些限制,剔除了中间 Server。
  • Selenium 3.0:该版本去掉了RC,Selenium3.0必须单独下载Firefox/Chrome浏览器驱动。Selenium3.0只支持Java8版本以上。并且IE 9.0版本以上

Selenium RC分为两部分:Client Libraries和Selenium Server。Client Libraries库主要用于编写测试脚本,用来控制Selenium Server的库。Selenium Server负责控制浏览器行为。官网对此给出了一个简化的体系结构图:

Selenium Remote Control对于在持续集成系统下测试复杂的基于ajax的web用户界面非常有用。对于Selenium IDE的用户来说,它也是一种理想的解决方案,他们希望用一种更具表达性的编程语言来编写测试,而不是使用硒化的HTML表格格式。

Selenium发展至今,selenium-remote control 目前已经没有技术支持,如果要学习使用Selenium建议直接学习3.0以上的版本。Selenium针对自动化测试来说学习的内容主要是WebDriver。官网上这么介绍它:WebDriver is a clean, fast framework for automated testing of webapps. 当然它的功能并不仅仅局限于自动化测试。在接下来的学习中,需要大家不断地去发掘WebDriver的使用乐趣。并且在学习Selenium的同时需要结合一门编程语言,初学者建议学习Python,Python对于编程语言初学者来说相对简单。It业界人士对Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

后记--Selenium的项目简史

2004年,当杰森哈金斯在ThoughtWorks测试一个内部应用程序时,Selenium首次出现了。作为一个聪明的人,他意识到他的时间比他做的每一次改变都要通过同样的测试来更好地利用他的时间。他开发了一个Javascript库,可以驱动与页面的交互,允许他自动地对多个浏览器重新运行测试。这个库最终变成了Selenium Core,它是Selenium Remote Control(RC)和Selenium IDE的所有功能的基础。Selenium RC是具有开创性的,因为没有其他产品允许您从您选择的语言中控制浏览器。
虽然Selenium是一个巨大的工具,但它也有它的缺点。由于其基于Javascript的自动化引擎和浏览器应用于Javascript的安全限制,不同的事情变得不可能完成。更糟糕的是,随着时间的推移,网络应用变得越来越强大,它使用了各种各样的新浏览器提供的特殊功能,让这些限制变得越来越痛苦。

2006年,谷歌的一位名叫西蒙斯图尔特的勇敢的工程师开始了一个他称之为“WebDriver”的项目。长期以来,谷歌一直是Selenium的重度用户,但测试人员必须围绕产品的局限性进行工作。Simon想要一个测试工具,它可以直接使用浏览器和操作系统的“本机”方法直接对浏览器进行操作,从而避免了沙箱Javascript环境的限制。WebDriver项目的开始是为了解决Selenium的痛点。

2008年。北京奥运会标志着中国作为一个全球大国的到来,美国大规模的抵押贷款违约引发了自大萧条以来最严重的国际经济衰退,黑暗骑士被每个人看到,仍然受到希斯莱杰的过早损失的影响。但那一年最重要的故事是Selenium和网络驱动的合并。Selenium拥有大量的社区和商业支持,但是WebDriver显然是未来的工具。这两种工具的结合为所有用户提供了一组通用的特性,并将测试自动化中的一些最聪明的人带到一个屋檐下。

2009年8月6日,WebDriver的创始人西蒙斯图尔特在给WebDriver和Selenium社区的联合邮件中详细描述了为什么WebDriver和Selenium合并的最好解释。
“为什么这些项目会合并?”部分原因是WebDriver解决了selenium的一些缺点(例如,可以绕过JS沙箱。我们有一个华丽的API),部分原因是selenium解决了WebDriver的一些缺点(比如支持更广泛的浏览器),部分原因是selenium的主要贡献者和我认为这是为用户提供最好的框架的最佳方式。”

至此Selenium和WebDriver联合,皆大欢喜。

风里云里,我在这里等你!

文章评论(5)

  • 2019年6月10日
  • Altumn

    selenium相关驱动和文档下载主页:
    https://www.seleniumhq.org/download/

    火狐浏览器驱动:
    https://github.com/mozilla/geckodriver/releases

    2019年6月10日
  • 木木

    :rolleyes: 学习学习

    2018年6月28日
  • Monster

    辛苦版主,学到了。 :rolleyes:

    2018年6月26日
    • Altumn

      互相学习,如有不当的地方请指正,多谢。

      2018年6月26日