selenium自动化测试(二)

1. 入门

入门:http://www.yiibai.com/selenium/selenium_ide.html
视频入门:http://pan.baidu.com/s/1eQppsWE
注 :  web自动化工具(如WatiN, Selinimu,WebDriver,还有VS2010中的Coded UI等等)的原理:
通过调用IE COM接口和HTML DOM 对浏览器以及WEB测试对象的操作

2. 入门知识

(1) Selenium真的不是一个单一的工具,而是一套工具,帮助测试者更有效地基于Web的应用程序的自动化。 重点提供了API.

(2) selenium套件:

工具 描述
Selenium IDE Selenium 集成开发环境(IDE)是一个Firefox插件,可以让测试人员跟着,需要测试的工作流程,以记录他们的行为。
Selenium RC Selenium远程控制(RC)为旗舰测试框架,它允许多个简单的浏览器动作和线性执行。它使用的编程语言,如Java,C#,PHP,Python和Ruby和Perl的强大功能来创建更复杂的测试。
Selenium WebDriver Selenium的webdriver前身是Selenium RC,直接发送命令给浏览器,并检索结果。
Selenium Grid Selenium网格用于运行在不同的机器,不同的浏览器同时以最小化执行时间的并行测试的工具。
(3) selenium 演变

selenium 1 (多种浏览器,多种语言支持;)----> webDriver(编码结构更好)
webDriver----------------------------------> selenium 2 

selenium自动化测试(二)_第1张图片

优点:

Selenium QTP/UFT
Selenium 是一种开源工具。 QTP是一个商业工具和成本涉及许可证。
可以扩展它公开DOM各种技术 有限的附加组件和需要附加组件的技术。
可以在不同浏览器执行脚本 可以运行测试在Firefox,IE和Chrome浏览器的特定版本。
可以执行各种操作系统的脚本。 仅适用于Windows操作系统。
支持的移动设备。 支持第三方工具的移动设备。
执行在浏览器中测试,这不是必需的,重点是脚本执行的进度。 脚本执行的工具作用于浏览器(模拟用户操作)过程中需要重点
可以并联使用Selenium网格运行测试。 QTP不能并行执行测试,但与质量控制整合QTP允许测试并行执行。质量控制也是一种商业工
缺点:

Selenium QTP/UFT
仅支持基于Web的应用程序。 可以测试Web和桌面应用程序。
任何功能部件,例如对象存储库/恢复方案 QTP已经或和恢复方案内置。
没有IDE,所以这样的脚本开发,不会快于QTP。 更直观的IDE,自动化,可以实现更快。
不能在浏览器中访问控制 可以在浏览器中访问控制,如收藏夹栏,后退和前进按钮。
没有默认生成测试报告。 默认的测试结果生成工具中。
用于参数设置,用户必须依赖于编程语言 参数是内置的,易于实现。


(4)selenium 术语 


selenium core : js 框架

IDE :  火狐插件
RC: 服务端和 客户端
webDriver : selenium 2的核心  +  API +  不需要再显示的启动 selenium Server + 支持的脚本(java +  C# + python等等)

grid :  分布执行测试


(5) 如何选择工具

IDE : 入手很快。 初期投入时间少, 但一旦变化, 可能需要做比API调用更多 的 工作 。
webDriver :  需要脚本编写,API的调用。

推荐: 可以从IDE入手, 对code熟练后,  引入 webDriver 的API . 或直接学习API.. 

注 : 学习 webDriver 时, 需要的知识:  js , java, python等等

3. 如何入手


3.1  selenium webDriver分类



firefox  Driver (默认的Driver)


IE  Driver


chrome   Driver


safari


android

3.2  步骤


step 1 : 创建一个webDriver对象-控制浏览器


step 2 : 创建webElement对象-操作页面元素


3.3  页面元素定位方法



ClassName


CssSelector


Id


LinkText


PartialLinkText


Name


TagName


Xpath

注 :  还有 jquery selector 

3.4  验证


验证                      方法


page title            getTitle(); assertEquals


Attributes             getAttribute();assertNotNull


JavaScript 返回值       IJavaScriptExecutor

3.5  verify 与  assert 差异



verify :  一旦运行失败, 会继续往下执行。一个case 可以有多个verify.


assert :  一旦运行失败, 抛出异常,停止继续执行。一个case 一般只有一个assert.

3.6  测试代码定时运行



持续集成工具--jenkins CI


系统定时任务-commands


4.  实践

 4.1  环境配置

下载并安装Java
下载并配置Eclipse
配置Firebug和FirePath
配置Selenium RC
配置Selenium的webdriver

具体参考: http://www.yiibai.com/selenium/selenium_environment_setup.html
 

4.2   什么是Selenium - RC

Selenium-RC意思是Selenium的远程控制(又称Selenium1.0),允许我们编写的编程语言,webdriver更强大和稳定,二者整合为selenium 2.0 


selenium自动化测试(二)_第2张图片

早期的Selenium使用的是Javascript注入技术与浏览器打交道,需要Selenium RC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。开发过Web应用的人都知道,Javascript可以获取并调用页面的任何元素,自如的进行操作。由此才实现了Selenium的目的:自动化Web操作。

这种Javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于Selenium内核对API翻译成的Javascript质量高低。


(采用Javascript来管理整个测试过程,包括读入测试套件、执行测试和记录测试结果。它采用Javascript单元测试工具JSUnit为核心,模拟真实用户操作,包括浏览页面、点击链接、输入文字、提交表单、触发鼠标事件等等,并且能够对页面结果进行种种验证。)

参考: http://www.yiibai.com/selenium/selenium_rc.html
 

4.3  什么是 Selenium Webdriver

webdriver自动化俗称Selenium 2.0测试Web应用程序工具。 webdriver使用不同的底层框架,Selenium 遥控器使用JavaScript的Selenium 核嵌入式已经在有一定的局限性的浏览器中。 webdriver直接交互而不与Selenium 远程控制,依赖于服务器上的任何中介的浏览器。

在Selenium开发者社区努力下,不断提高Selenium webdriver与Selenium的整合。

selenium自动化测试(二)_第3张图片



当Selenium2.x 提出了WebDriver的概念之后,它提供了完全另外的一种方式与浏览器交互。那就是利用浏览器原生的API,封装成一套更加面向对象的Selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等。(甚至包括了AndroidDriver和iOS WebDriver)


WebDriver Wire协议是通用的,也就是说不管是FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service。例如FirefoxDriver初始化成功之后,默认会从http://localhost:7055开始,而ChromeDriver则大概是http://localhost:46350之类的。接下来,我们调用WebDriver的任何API,都需要借助一个ComandExecutor发送一个命令,实际上是一个HTTP request给监听端口上的Web Service。在我们的HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做社么事情。


在我们new一个WebDriver的过程中,Selenium首先会确认浏览器的native component是否存在可用而且版本匹配。接着就在目标浏览器里启动一整套Web Service,这套Web Service使用了Selenium自己设计定义的协议,名字叫做The WebDriver Wire Protocol。这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等等等等。


参考:
http://www.yiibai.com/selenium/selenium_webdriver.html
http://blog.csdn.net/hhb200766/article/details/6757742
http://www.cnblogs.com/sunada2005/archive/2013/12/22/3486314.html


4.4 Selenium TestNG

http://www.yiibai.com/selenium/selenium_test_ng.html

你可能感兴趣的:(selenium自动化测试(二))