【Selenium】1.介绍 Selenium

本文供学习交流之用,没有商业用途,没有盈利。

完全是我自己为督促自己学习而翻译的。翻译的不好,见谅。来源于:http://www.guru99.com/introduction-to-selenium.html

什么是Selenium?

Selenium是一款开源的,面向web应用,支持多浏览器和平台的自动化测试套件(suite)。跟HP QTP很像,只是Selenium更专注于自动化网络应用程序的测试。

Selenium不仅仅是个单一的工具,而是一系列的软件集成,每个部分针对不同的测试需要。一共有四个组件。

  • Selenium集成开发环境 IDE
  • Selenium远程控制 remote control
  • web  驱动器 driver
  • Selenium 网格 grid

如图,后来两部分合在一起了,叫selenium2。如果提到selenium1, 就是指Selenium RC.

谁开发了Selenium?

一堆人,有几个关键人物,上图一个,2004年,这个人,需要做重复性repetitious测试,跟我现在一样。他意识到重复性的手动测试效率太低,他写了一个JavaScript程序,可以自动控制浏览器的行为。他起的名字是"JavaScriptTestRunner."

这个名字的潜在含义就是帮助自动化测试网络应用。后来这个开源了,改名字为Selenium Core。

同源策略问题

同源策略的精髓很简单:它认为自任何站点装载的信赖内容是不安全的。当被浏览器半信半疑的脚本运行在沙箱时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。

这个问题阻止了通过JavaScript 代码访问来自其他域的元素。比如说,google网站里用了一个JS的程序,"randomScript.js"。同源策略只允许在"randomScript.js"里面访问google.com/mail, google.com/login, or google.com/signup 诸如这些页面。然而,从雅虎网等其他站点是访问不了google这些页面,因为他们属于不同的域。这地方,我理解的不好,上图为证。

因此,在Selenium RC没有出现之前,测试者需要安装本地的备份(既要有Selenium Core (a JavaScript program),也要有装载了web应用的web服务器),这样他们属于相同的域domain,就可以互相访问元素了。

Selenium Remote Control (Selenium RC)的出现

Paul Hammant 这个人觉得安那么多麻烦,所以他创建了一种服务器,这个服务器以代理的形式去欺骗服务器,可以让浏览器以为Selenium Core和web应用是同源的。这个系统也就是Selenium1.

Selenium Grid的出现

Patrick Lightbody这个人后来为了优化执行时间,研究出了Selenium Grid。起初叫Hosted QA。在整个流程的关键步骤,浏览器可以截图为证,并且实现了并发地向不同机器发送Selenium指令。

Selenium IDE的出现

星野笠谷(Shinya Kasatani )开发了个firefox的插件,也就是IDE, 可以使浏览器实现 “记录再回放”的功能。有了这个,写Case就快了。2006年,他给这个IDE贡献给了Selenium 项目组。

WebDriver的出现

Simon Stewart大概在2006年开发了WebDriver。当时,浏览器和web应用越来越有受欢迎,when browsers and web applications were becoming more powerful and more restrictive with JavaScript programs like Selenium ,更加JS程序使用更加受限?这句实在不懂。这个WebDriver第一次实现了跨平台的测试框架,可以从操作系统的层面上OS级来控制浏览器了。

Selenium 2的出现

在2008年,整个Selenium 项目组决定把RC 和WebDriver整合成一个更强大的工具,叫Selenium2, WebDriver作为它的核心。 目前,Selenium RC尚处于维护模式。Selenium 2现在是整个项目的重点。

为什么叫Selenium?

它来源于Jason讲的一个笑话。在Selenium开发的阶段,另外一个测试框架叫 Mercury Interactive 水星?不,水银交互?这个框架是最初提出QTP的公司研发的。 因为硒可以解水银的毒,所以Jason起了这样一个名字。

Selenium IDE的简单介绍

这个东西是里面最简单最好学的框架。可以很轻松地安装在火狐浏览器上。但由于它的简单,IDE仅仅是用来分析原型的工具a prototyping tool。如果想创建更复杂的case,还是需要用RC或者webDriver的。

优点:

  1. 安装简单,用着也简单
  2. 无需编程经验,知道点儿html和DOM知识就行了
  3. 可以导出RC和webDriver直接用的格式的case
  4. 有嵌入式的(built-in)帮助和测试结果记录模块
  5. 提供插件支持

缺点:

  1. 只在Firefox里面可用
  2. 只能创建原始类型的测试
  3. 不支持迭代和条件判断操作
  4. 测试执行起来比RC和WebDriver慢

虽然我写的也很烦,不过还是继续吧!坚持!

Selenium Remote Control (Selenium RC)的简介

有很长一段时间,Selenum RC是整个测试框架的重点(flagship)。这是第一个允许用户选择自己喜欢的编程语言的测试web app的工具。截至到v 2.25.0, RC已经支持了 Java,C#,PHP,Python,Perl,Ruby。

优点:

  1. 兼容多浏览器,多平台
  2. 支持循环和条件判断了
  3. 支持data-driven (数据驱动)测试
  4. API已经成熟
  5. 逐渐支持新的浏览器
  6. 比IDE执行更快

缺点:

  1. 安装比IDE更复杂些
  2. 需要有编程基础
  3. 需要把RC server同时运行起来
  4. API包括了多余的,复杂的命令
  5. 浏览器交互缺乏真实性
  6. 可能产生不一致的结果
  7. 执行速度没有WebDriver快

还是上图,免得今后误导自己。

WebDriver的简介

WebDriver在很多方面优于RC和IDE。它实现了一个更流行的,更稳定的途径去自动化浏览器的操作。WebDriver不像RC,并不依赖JavaScript。通过直接同浏览器通信来控制浏览器。

语言支持的话跟RC一样。

明天写。。。。果然,我们继续吧~09.22.2015

优点:

  1. 比Selenium RC更简单的安装方式
  2. 与浏览器直接通信
  3. 更真实的浏览器交互
  4. 不需要RC Server这样的其他组件
  5. 比IDE和RC执行起来更快

缺点:

  1. 安装比IDE更复杂些
  2. 需要有编程基础
  3. 并不能逐渐支持新浏览器
  4. 没有内置的机制去记录运行时的消息,也不生成测试结果

上图免误导

Selenium Grid

Grid跟RC一起工作,可以同时在不同的机器,不同的浏览器平行完成测试。平行执行的意思是一次执行多个测试。

特点:

  • 同时在多浏览器多环境下执行测试
  • 节省大量时间
  • 利用了 hub-and-nodes的概念。核心是Selenium命令,其他节点连接到这个中心上去。好像集线器的概念?

浏览器和环境支持

因为不同组件的架构存在差异,Selenium IDE, Selenium RC,和 WebDriver支持不同的浏览器和操作系统。

下表复制,原创不要生气!


Selenium IDE


Selenium RC


WebDriver


Browser

Support


Mozilla Firefox


Mozilla Firefox

Internet Explorer

Google Chrome

Safari

Opera

Konqueror

Others


Internet Explorer versions 6 to 9, both 32 and 64-bit

Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7 and above

(current version is 16.0.1)

Google Chrome 12.0.712.0 and above

(current version is 22.0.1229.94 m)

Opera 11.5 and above

(current version is 12.02)

Android - 2.3 and above for phones and tablets

(devices & emulators)

iOS 3+ for phones (devices & emulators) and 3.2+ for tablets (devices & emulators)

HtmlUnit 2.9 and above

(current version is 2.10)


Operating System


Windows

Mac OS X

Linux


Windows

Mac OS X

Linux

Solaris


All operating systems where the browsers above can run.

如何按需要选择正确的Selenium工具呢?


工具


为什么选?


Selenium IDE

    • 了解自动化测试概念以及Selenium,包括:
      • 像type, open, clickAndWait, assert, verify等一些指令。
      • 像id,name,xpath,css selector等一些定位元素的方法
      • 用runScript执行定制好的JS代码
      • 以不同格式导出测试用例
    • 在不太了解编程知识的情况下创建测试。
    • 创建简单的测试用例和测试集合,以便导出后在RC或者WebDriver中使用。
    • 只能用于在FIREFOX中进行测试的web应用。

Selenium RC

    • 用比Selenese指令更加便于理解的语言来设计一个测试
    • 在不同浏览器(除了HtmlUnit)上,不同操作系统上运行测试用例。
    • 用Selenium Grid在多个环境下部署测试。
    • JavaScript.在一个支持JavaScript的新浏览器上测试应用。
    • 基于阿贾克斯的测试用例

WebDriver

    • 用一款明确的编程语言来设计测试用例
    • 你的web应用里有很多基于Ajax的功能待测。
    • 在HtmlUnit浏览器上完成测试
    • 创建更多定制的测试用例

Selenium Grid

    • 在多个浏览器,多个操作系统上同时运行您的Selenium RC脚本
    • 最快速度运行一个大型的测试用例集合

比较一下Selenium和QTP

Quick Test Professional(QTP)是一款专利 proprietary化的自动化测试工具。 QTP以前是Mercury Interactive 公司所有的,后来在2006年,被Hewlett-Packard(HP)惠普买下来了。Selenium工具套件较QTP有很多优点。

Selenium QTP好的地方


Selenium


QTP


开源,免费用


商业化的,要钱


扩展性强


有限的插件


可以在不同的浏览器上运行测试


只能在火狐,IE,和chrome


支持各种操作系统


只能在Windows下使用


支持移动端测试


利用第三方软件支持移动端测试


在浏览器最小化的时候仍然可以运行测试


应用必须在桌面可见才能执行测试


可以并行进行测试


利用另一款收费软件Quality Center来完成并行测试

QTP比Selenium好的地方


QTP


Selenium


Web应用和桌面应用都可以测


只能用来测试Web应用


有内置的对象库


没有内置的对象库


写自动化更快,因为有完整的集成开发环境。


写自动化比较慢,因为没有原始的IDE用,只能用第三方的IDE来开发


由于有内置的全局和本地的数据表,更容易实现数据驱动测试。


Data-driven数据驱动测试比较复杂,因为必须依赖编程语言的特性为测试数据赋值。

cumbersome 【‘k?mb?(r)s(?)m】


可以直接控制浏览器(收藏夹栏,地址栏,前进和后退按钮等)


不能测试web应用的过程中控制浏览器的组件


提供专业的客户支持。


没有官方的用户支持。


本身就有多种外部导出测试数据的格式。


没有自带的导出运行时数据到外部格式的功能。


有内置的参数化支持。


可以编程实现参数化,但是很难。


自动生成测试报告。


没有自带的测试结果报告生成。

很明显,QTP有更强大的功能,Selenium在以下三个方面比QTP好。

  • 花费便宜
  • 灵活性强 可以用多种编程语言,支持多浏览器多操作平台
  • 并行测试比QTP方便

总结

整个的Selenium工具套件由四部分组成:

Selenium IDE,只能用一个火狐插件来创建一些相对简单的测试用例和测试组合

Selenium Remote Control,也就是Selenium 1,第一个让用户用编程语言来创建复杂的测试的selenium工具。

WebDriver,全新的突破,让你的测试脚本直接与浏览器交互,而且从OS层级来控制测试。

Selenium Grid,也是一个利用Selenium RC在不同系统和浏览器上平行执行测试的工具。

Selenium Remote Control+WebDriver合并成了Selenium 2.

Selenium在花费和灵活性上优于QTP。Selenium可以实现并行执行测试,而QTP只能依次执行测试。

大功告成!万里长征第一步!总算翻译完了。今天老公去腾讯校招二面,但是被淘汰了。我心情很不好。因为自己太懒,本来想找个人依靠,不用那么拼了。现在发现行不通了,只能靠自己了!我自己怀着功利的心,这本来就是不对的。不就是钱吗?自己挣不行吗?我好坏!我是拜金主义者,很懒的拜金主义者。在男朋友身上,看不到想要的未来了。但是,也不能因为这个就离开这个人呀!想到一个场景,我在洛杉矶机场,下飞机。想想就会泪流满面。什么时候才会到达梦想呢?如果这辈子不能达成梦想,那也是自己活该。脑袋笨归脑袋笨,但是出不了国,不是脑袋笨的原因。该怎么安慰自己呢?生命本是就是美丽的。前四分之一的,一事无成的人生,自己能说些什么呢?再想象一个场景,40岁的自己,又老又胖,在家看电视,在一个蜗牛壳子里,家里脏乎乎的。我会相信,那就是我的一生了吗?不曾去过梦想的地方,死之前都没有办法原谅自己。莫斯科不相信眼泪,哭是解决不了任何问题的。我知道,对不起,我又哭了。

不,我要去,我要去美国,吃好吃的!我要在自由女神像前激动得落泪!而不是在家里遗憾地哭瞎眼睛。戒掉三国杀,戒掉伪装者!努力学习!

时间: 2024-12-25 05:41:06

【Selenium】1.介绍 Selenium的相关文章

【Selenium】3.介绍Selenium IDE

本文供学习交流之用,没有商业用途,没有盈利. 完全是我自己为督促自己学习而翻译的.翻译的不好,见谅.来源于:http://www.guru99.com/introduction-selenuim-ide.html 好长超长!我这啥时候才能翻译完呀!Damn it!I mean it! 介绍Selenium IDE Selenium IDE 是工具套件中最简单的哦!通过录制并重播功能,可以快速创建测试用例.这个跟QTP中的对应部分类似.不用怎么费劲就能学会. 因为它很简单,IDE只能用来分析元素的

二、Selenium版本介绍

Selenium版本介绍 selenium1.0 selenium IDE 1.firefox插件(只支持Firefox) 2.用处 实现简单的自动化 用来提交bug(对于描述比较复杂的bug进行录制成脚本提供给开发回放) 导出脚本 :录制完毕脚本之后--文件 selenium Grid 用来做分布式自动化,详见文档 独立的.jar包 selenium RC(Reomte Control)--核心 用处: 1.远程控制 2.不同语言,不同浏览器去使用 RC :不是一个独立的工具,是被集成在sel

Python + selenium + pycharm 环境部署细节 和selenium简单介绍

一.测试体系:Python + selenium + pycharm + Jenkins/docker 环境搭建: 1.安装python 3.4/3.5 2/3.6/ 3.7 2.配置环境变量 3.pip install selenium==版本号3.3  (框架用成熟的语言用最新的) 4.安装编辑器pycharm,项目路径不能包含中文,名字有意义,Python的版本选择要正确 5.浏览器Firefox 版本<47   chrome <54 版本  免webdriver驱动,浏览器自带了web

详解介绍Selenium常用API的使用--Java语言(完整版)

一共分为二十个部分:环境安装之Java.环境安装之IntelliJ IDEA.环境安装之selenium.selenium3浏览器驱动.selenium元素定位.控制浏览器操作.WebDriver常用方法.模拟鼠标操作.模拟键盘操作.获取断言信息.设置元素等待.定位一组元素.多表单切换.多窗口切换.下拉框选择.警告框处理.文件上传.浏览器cookie操作.调用JavaScript代码.获取窗口截屏: 虽然,学习Maven需要增加你的学习成本,但如果你需要长期使用Java编程语言,或者想用Java

Selenium 使用介绍

Selenium 是 thoughtworks公司的一个集成测试的强大工具.最近参与了一个系统移植的项目,正好用到这个工具, 把一些使用心得分享给大家,希望大家能多多使用这样的强大的,免费的工具,来保证我们的质量. Selenium 的文档现存的不少,不过都太简单了.使用Selenium的时候,我更多的是直接去看API文档,好在API不错, 一个一个看,就能找到所需要的 :-)   官方网站:http://www.openqa.org/selenium/ 好,下面进入正题! 一.Selenium

Selenium 学习笔记---Selenium basic all in one

Selenium 是这些年非常流行的Web UI 自动化测试工具, 很多同学学习并使用过Selenium.但是一些问题仔细想来是不是让你觉得有些困惑,比如说Selenium 到底是什么东西,为什么能支持多语言编程,到底是怎么驱动浏览器工作的……不要着急,在这篇文章中我们会一一探讨这些问题 名词解释 Selenium 是什么,包含哪些组成部分 (蓝色字体为selenium 学习过程中经常会碰到的名词): 一般来说如果没有明确指明 Selenium 2.0 或 Web Driver而单说Seleni

Selenium错误:selenium.common.exceptions.WebDriverException: Message: &quot;Can&#39;t load the profile.

错误描述:在python代码中通过selenium来初始化一个firefox浏览器失败,看了下selenium的版本是2.35,然后用firefox --version看了下是28.0,firefox好像不听话自动升级了导致了旧版selenium不支持. Traceback (most recent call last): File "C:\Python27\erSiteCompare.py", line 528, in sys.exit(main()) File "C:\P

Selenium Web 自动化 - Selenium常用API

Selenium Web 自动化 - Selenium常用API 2016-08-01 1 WebElement相关方法2 iFrame的处理3 操作下拉选择框4 处理Alert5 处理浏览器弹出的新窗口6 执行JS脚本7 等待元素加载8 模拟键盘操作9 设置浏览器窗口大小10 上传文件11 Selenium处理HTML5 1 WebElement相关方法 Method   Summary void clear() If   this element is a text entry elemen

Selenium Web 自动化 - Selenium(Java)环境搭建

Selenium Web 自动化 - Selenium(Java)环境搭建 2016-07-29 第1章 Selenium环境搭建 1.1 下载JDK JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 1.2 安装和配置JDK 安装目录尽量不要有空格  D:\Java\jdk1.8.0_91; D:\Java\jre8 设置环境变量: “我的电脑”->右键->“