selenium 简述

35
Selenium Selenium 简简 简简 Xu.zhibin@Covics

Upload: jane

Post on 08-Feb-2016

303 views

Category:

Documents


8 download

DESCRIPTION

Selenium 简述. Xu.zhibin@Covics. Selenium 介绍. Selenium是ThoughtWorks专门为 Web 应用而开发的功能测试工具。Selenium使用JavaScript和Iframes在浏览器嵌入自动化测试引擎,可以在任何支持JavaScript的浏览器中进行工作,模拟用户在浏览器中进行的操作。 主要包括三个部分 Selenium-IDE, Selenium-Core, Selenium-RC 。它可以被用于单元测试,回归测试,冒烟测试,集成测试,验收测试,并且可以运行在各种浏览器和操作系统上。. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Selenium 简述

SeleniumSelenium 简述简述Xu.zhibin@Covics

Page 2: Selenium 简述

SeleniumSelenium 介绍介绍 Selenium是 ThoughtWorks 专门为 Web 应用而开发的功能测试工具。 Selenium使用 JavaScript和 Iframes在浏览器嵌入自动化测试引擎,可以在任何支持 JavaScript的浏览器中进行工作,模拟用户在浏览器中进行的操作。

主要包括三个部分 Selenium-IDE, Selenium-Core, Selenium-RC 。它可以被用于单元测试,回归测试,冒烟测试,集成测试,验收测试,并且可以运行在各种浏览器和操作系统上。

selenium [si'li:niəm]

Page 3: Selenium 简述

SeleniumSelenium优势优势 它是开源的 简单,易于安装,易于工作 Selenium 支持多种浏览器,能够运行于多种操作系统,因此

更容易帮助测试人员发现应用程序在不同浏览器上的兼容性问题。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性;

通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序;可以操作 Web 页面上的各种元素,诸如:点击按钮、输入文本框,以及断言 Web 页面上存在某些文本与 Web 元素等。

Page 4: Selenium 简述

SeleniumSelenium优势优势 提供 Selenium IDE ,一个 FireFox plugin ,能自动记录用

户的操作,生成测试脚本。生成的测试脚本可以用 Selenium Core 手工执行,也能基于 Selenium RC 放入Java, C#, Ruby 的单元测试用例中自动运行;

测试用例调用实际的浏览器 (如 IE、 FireFox) 来执行测试。和有些开源方案自行实现 Web 解释引擎相比,实际的浏览器能模拟更多用户交互和 JS 语法。

Page 5: Selenium 简述

SeleniumSelenium命令命令Selenium 命令分成两类 —— 操作( action) 和断言(assertion )

操作:模拟用户与 Web 应用程序的交互。如:单击一个按钮( selenium.click(locotar))和填(selenium.type(locotar,value))一个表单,这些都是常见

的用户操作,可以用 Selenium 命令来自动化这些操作。 断言:验证一个命令的预期结果。常见的断言包括验证页面内

容或当前位置是否正确。如: assertEquasl(selenium.getTitle(),”QQview”); 验证页面上的 title 是否为 QQview

Page 6: Selenium 简述

SeleniumSelenium模式模式Selenium 可按两种模式来使用: test runner( selenium-core )和 driven(selenium-rc) 。

这两种模式在复杂性和编写方式方面有所不同:Driven 测试脚本编写起来往往要更复杂一些,因为它们是用编程语言编写的。但是如果使用 Python 或 Ruby 之类的高级动态编程语言,那么这种复杂性方面的差异就很小。

两种模式之间最大的不同点在于:如果使用 driven 脚本,测试有一部分在浏览器之外运行,而如果使用 test runner 脚本的话,测试是完全在浏览器中运行的。

不管是 test runner 还是 driven 测试用例,都可以与持续集成工具集成。

Page 7: Selenium 简述

SeleniumSelenium组成组成 Selenium IDE :

是一个测试集成开发环境,是 Firefox 的附加组件,结合 Firefox可以实现录制、编辑和调试测试脚本,并在浏览器中模拟用户真实操作进行回放。 Selenium IDE 不只是录制工具:是完整的 IDE 。可以录制,或者手工写脚本。

Selenium Core :使用 Selenium Core ,需要部署到 web 服务器上,才可以测试。这说明,使用 Selenium Core (使用纯 DHTML/JavaScript )不能编写测试比如google.com 。因为 Selenium Core 是纯 DHTML/JavaScript的,受到客户端 JavaScript 的安全限制。这是 JavaScript 安全需求。如果不能修改要测试的 webserer , Selenium Core 不是合适的测试工具。需要使用 Selenium IDE 或者 Selenium RC替代。

Page 8: Selenium 简述

SeleniumSelenium组成组成 Selenium RC :即 Selenium Remote Control。 Selenium RC 提供了一个代理服务器,允许用程序语言编写测试用例,如 C#,Python等。这样做的好处是,可以把 Selenium 和其他测试框架(如Nunit )进行集成测试。 Selenium RC 主要包含了下面几部分:a. Selenium核心。b. Selenium Server 运行时环境。c. Selenium 提供的针对各种语言的开发接口。Selenium核心和 Server 运行时环境都放在 selenium-server.jar 中。

Selenium Grid :允许同时并行地、在不同的环境上运行多个测试任务,极大地加快Web 应用的功能测试。

Page 9: Selenium 简述

Selenium-IDESelenium-IDE(仅支持(仅支持 firefoxfirefox))Selenium-IDE 是用于 selenium 测试的一个集成测试工具,他被嵌套在 firefox 中,作为 firefox 的一个组件来使用。并且通过它,测试人员可以录制在 web界面上的一切操作,并且进行编辑,调试和快速回放,就像用户在操作一样。特点

非常容易在页面上进行录制和回放 能自动通过 id, name和 xpath 来定位页面上的元素 自动执行 selenium 的命令 能够进行调试和设置断点 录制生成的脚本能够转化成各种语言 在每个录制的脚本中能够加入断言

Page 10: Selenium 简述

Selenium-IDESelenium-IDE 使用使用 在操作系统上安装 firefox( 3.6 以上) , 登陆( http://

seleniumhq.org/download/ )下载 selenium-IDE 。 下载后,在 FireFox 中打开插件文件 selenium-ide.xpi 进行

安装,重新启动 FireFox后,可选择菜单“ Tools | Selenium IDE”打开 Selenium IDE 的界面。

点击 IDE插件上的红色按钮进行录制,然后你可以按照你的要求在 WEB界面上进行操作, IDE会自动录制下你的操作,手工编辑脚本是通过选择和插入 Selenium 命令( Command)的方式来实现的。可直接在 FireFox 中运行测试脚本,也可调出 TestRunner界面来执行测试脚本 。

生成的脚本可以转化成各种高级语言脚本,点击options-》 format 来转换成其他高级语言。如 format菜单不可用,则点击 Options菜单,将“ Enable experimental features”选上。

Page 11: Selenium 简述

Selenium-IDESelenium-IDE 使用使用

Page 12: Selenium 简述

Selenium-CoreSelenium-Core Selenium-Core是使用 JS和 DHTML编写的,由于存在一个同源策略的问题,所以在进行测试部署的时候必须将所测试程序部署在服务器端( selenium-ide由于是 firefox的一个插件,不受限制)。例如你无法采用 selenium-core来测试www.google.cn。如果要对其进行测试,你必须将selenium-core及其测试程序部署在服务器端。

Selenium有两种运行模式, test-runner和 dirven。而Selenium-core就是 test-runner运行方式。

Selenium test runner 脚本,也称测试用例( test case ),是用 HTML语言通过一个简单的表布局编写的。

Page 13: Selenium 简述

Selenium-CoreSelenium-Core

Page 14: Selenium 简述

Selenium-RCSelenium-RCSelenium-RC可以使用高级语言来编写web页面测试脚本,编写的脚本可以运行在任何支持 js的浏览器中。Selenium-RC包括两部分:

Selenium ServerSelenium Server 主要控制浏览器行为,总的来说, Selenium Server由三部分组成: Launcher、 Http Proxy、 Selenium Core ,其中 Selenium Core 是在Selenium Server启动浏览器时,嵌入到浏览器中的。 Selenium Core 是一堆 Javascript函数集合,当Selenium RC 通过网络与 Selenium Server 通讯时(通过简单的 Http Get或 Post请求), Selenium Server 解析客户端请求为 Selenese Command ,然后就会调用相应的 JS函数来控制浏览器操作。

Page 15: Selenium 简述

Selenium-RCSelenium-RC Selenium Libraries

写测试案例时主要控制 Selenium Server库,客户端提供了编程接口,允许你可以通过编程运行 Selenium 命令, Client Libraries 为每一种编程语言提供了与 Selenium RC 服务器通讯的编程接口。一个 Selenium 客户端类库实际上时提供一套函数集合,你可以通过运行你的测试程序来运行 Selenium Command ,类库中的每一个接口都是和 Selenium Command 一一对应的。客户端类库通过发送一个 Selenium Command与Selenium Server 通讯,从而使被测应用程序执行相应的操作。客户端类库接收到 Selenium Command 命令返回的结果,并把结果返回给应用程序并赋值给相应的变量。注:可以通过 Selenium IDE 生成 Selenium-RC代码。

Page 16: Selenium 简述

Selenium-RCSelenium-RC

Page 17: Selenium 简述

Selenium-RCSelenium-RC 的工作原理的工作原理

Page 18: Selenium 简述

Selenium-RCSelenium-RC 的工作原理的工作原理1. Testcase通过 client lib向 server发送 http请求,要求和

selenium server建立连接。2. Selenium server上的 Laucher启动浏览器,把 selenium

core加载到浏览器,并且把浏览器的代理设置为 selenium server的 http proxy。

3. Testcase通过 client lib向 server发送 http请求, server将请求进行解析,然后通过 http proxy发送 js命令通知selenium core执行浏览器动作。

4. Selenium core接收到指令后执行动作。5. 浏览器接收到新页面请求信息后发送 http请求下载新web 页

面6. Selenium server接收到浏览器的 http请求后自己重组 http请求,获取相应的 web 页面。

7. Selenium server的 http proxy把web 页面返回给浏览器。

Page 19: Selenium 简述

Selenium-RC Selenium-RC 为什么要使用代理为什么要使用代理 同源:域名、协议、端口相同 同源策略:由 Netscape 提出。只有当 js 脚本与请求的 web

页面同源时, js 才会被执行

Page 20: Selenium 简述

Selenium-RC Selenium-RC 为什么要使用代理为什么要使用代理

Page 21: Selenium 简述

Selenium-RC Selenium-RC 为什么要使用代理为什么要使用代理

Page 22: Selenium 简述

Selenium APISelenium API--Commands (Commands ( 命命令令 )) Element Locators (元素定位器 ) String Matching Patterns (字符串匹配模式 ) Select Option Specifiers (Select 选项指定器 ) Actions 描述了用户所会作出的操作

Action 有两种形式 : action 和 actionAndWait, action 会立即执行,而 actionAndWait 会假设需要较长时间才能得到该action 的相响,而作出等待, open 则是会自动处理等待时间。

Assertions 允许用户去检查当前状态两种模式 : Assert 和 Verify , 当 Assert 失败,则退出测试;当 Verify 失败,测试会继续运行。

Parameters and Variables参数和变量的声明范围由简单的赋值到 JavaScript表达式赋值。

Page 23: Selenium 简述

WWebebDDriverriverselenium2.0 =selenium1.x+ webdriverSelenium2.0 WebDriver 入门指南 http://my.oschina.net/willSoft/blog/28119

优点◦ 更优雅的语法◦ 不需要 Server◦ 多框架,多浏览器窗口,弹出框,警告窗口 ?◦ 页面导航 ?◦ 拖动 ?◦ 基因 Ajax的 UI 元素 ?

缺点◦ 不支持 Selenium-Grid

Page 24: Selenium 简述

WebDriver API WebDriver API 与 与 SeleniumRC SeleniumRC APIAPI

WebDriver API 写的 Login 脚本 public void login() {

driver.switchTo().defaultContent();

driver.switchTo().frame("mainFrame");

WebElement eUsername= waitFindElement(By.id("username"));

eUsername.sendKeys([email protected]);

WebElement ePassword= waitFindElement(By.id("password"));

ePassword.sendKeys(manager);

WebElement eLoginButton = waitFindElement(By.id("loginButton"));

eLoginButton.click();

}

Page 25: Selenium 简述

WebDriver API WebDriver API 与 与 SeleniumRC SeleniumRC APIAPI

SeleniumRC API写的 Login脚本 public void login() {

selenium.selectFrame("relative=top");

selenium.selectFrame("mainFrame");

selenium.type("username","[email protected]");

selenium.type("password","manager");

selenium.click("loginButton");

}

Page 26: Selenium 简述

实例实例 -Selenium IDE-Selenium IDE 的使用的使用安装 Selenium IDE ,并开始录制。

在地址栏输入: http://www.baidu.com/ “登陆百度首页后,在查询框输入 hyddd”。 “ ”按 百度一下 按钮

进入搜索结果页面后,右键单击第一条记录(即: hyddd - “博客园),在右键弹出菜单中,单击 Verify TestPersent

hyddd - ”博客园 。

单击第一条记录(即:进入 hyddd - 博客园) Firefox 弹出一个新 Tab 页面,并进入了我的博客。

结束录制。

Page 27: Selenium 简述

实例实例 -Selenium IDE-Selenium IDE 的使用的使用

Page 28: Selenium 简述

实例实例 -Selenium IDE-Selenium IDE 的使用的使用

Page 29: Selenium 简述

实例实例 -Selenium IDE-Selenium IDE 的使用的使用

Page 30: Selenium 简述

实例实例 - Selenium RC - Selenium RC 测试案例测试案例将前面 Selenium IDE 录制的脚本转为其他语言的脚本,以C# 为例。转换后的脚本默认使用 NUnit 测试框架。

Page 31: Selenium 简述

实例实例 - Selenium RC - Selenium RC 测试案例测试案例1. 建立测试项目 SeleniumTest2. 导入 DLL 引用 nunit.framework ThoughtWorks.Selenium.Core.dll

Page 32: Selenium 简述

实例实例 - Selenium RC - Selenium RC 测试案例测试案例3. 把前面自动生成的代码修改一下

Page 33: Selenium 简述

实例实例 - Selenium RC - Selenium RC 测试案例测试案例4. 启动 Selenium 测试服务器

打开 cmd 进入 selenium-server-1.0-beta-2目录,输入“ java –jar selenium-server.jar”( 需要先安装 JRE) ,启动 Selenium测试服务器。

Page 34: Selenium 简述

实例实例 - Selenium RC - Selenium RC 测试案例测试案例5. 运行测试案例

Page 35: Selenium 简述

It’s Over,Yeah

Thank You

Bye Bye