Selenium框架简介

    Selenium是一系列基于Web的自动化工具,提供一套测试函数,用于支持Web自动化测试。函数非常灵活,能够完成界面元素定位、窗口跳转、结果比较。具有如下特点:

   一、多浏览器支持

           可以对多浏览器进行测试,如IEFirefoxSafariChromeAndroid手机浏览器等。

   二、支持多种语言

          如JavaC#PythonRubyPHP等。

  三、支持多种操作系统

         如WindowsLinuxIOSAndroid等。

  四、开源免费

         官网:http://www.seleniumhg.org/

   

       Selenium框架由多个工具组成,包括: Selenium IDE,Selenium RC,Selenium WebDriver和SeleniumRC。

  一、Selenium IDE


工具是一个用于构建脚本的初级工具,其实是FireFox的一个插件,拥有一个易于使用的界面。它拥有记录功能,能够记录用户执行的操作,并可以导出为可重复使用的脚本如果没有编程经验,可以通过Selenium IDE来快速熟悉Selenium的命令。

Selenium框架简介_第1张图片

该工具实际使用不多。

二、Selenium RC


    Selenium RCselenium家族核心部分。Selenium RC支持多种不同的语言编写自动化测试脚本,通过SeleniumRC的服务器作为代理服务器去访问应用,从而达到测试的目的。

      SeleniumRC分为ClientLibrariesSeleniumServerClientLibraries库主要用于编写测试脚本,用来控制SeleniumServer的库。SeleniumServer负责控制浏览器行为。SeleniumServer包含三部分:LauncherHttp ProxyCore。其中,Selenium Core是被Selenium Server嵌入到浏览器页面中的,其实SeleniumCore就是一堆JavaScript函数的集合,即通过这些JavaScript函数,我们才可以实现用程序对浏览器进行操作。Launcher用于启动浏览器,把Selenium Core加载到浏览器页面当中,并把浏览器的代理设置为SeleniumServerHttpProxy

Selenium框架简介_第2张图片

Selenium引入了Remote Control Server 这样一个代理 Server,JavaScript 脚本注入和与 Server 通讯都通过这个代理Server 来进行。之所以引入这个代理 Remote Control Server 是因为“同源策略”的限制,通过这个代理服务器来“欺骗”远程Server,达到使其以为是从同一个地方 load 代码以正确返回请求数据的效果。如上图,RC的流程为

1. 测试用例通过Http请求建立与 selenium-RC server 的连接

2. Selenium RC Server 驱动一个浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium ServerHttp Proxy

3. 执行用例向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作并注入 JS 代码

4.Selenium Core执行接受到的指令并操作

5. 当浏览器收到新的请求时,发送http请求

6. Selenium Server接收到浏览器发送的Http请求后,自己重组Http请求,获取对应的Web页面

7. Selenium Server中的Http Proxy把接受到的页面返回给浏览器

三、Selenium WebDriver

Selenium RC使用的是JavaScript注入技术与浏览器打交道,需要Selenium RC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。开发过Web应用的人都知道,Javascript可以获取并调用页面的任何元素,自如的进行操作。由此才实现了Selenium的目的:自动化Web操作。这种Javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于Selenium内核对API翻译成的Javascript质量高低

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

   启动SeleniumRC至今为止还保留着,应该是考虑到向前兼容。

   Selenium RC要求真实的浏览器环境,WebFriver可以直接操作HtmlUnit驱动,Selenium启动Firefox非常慢,WebFriver可以通过HtmlUnit在系统内存中迅速的执行,但是这两者都不方便调试。Webdriver不支持并行测试,Selenium Grid可以搞定这个WebFriver要求针对浏览器选择最合适的语言来编写脚本,而众所周知,程序员总是希望使用自己擅长的语言来编写脚本,公司也不可能派多个脚本人员在一个项目中仅仅是为了多浏览器支持。因此,我们需要一款工具,它能够把两者的优点集合起来,这就是我们下面介绍Selenium 2.0Selenium 1.0+Webdriver


Selenium2增加了WebDriver,保持RC向前兼容。WebDriver项目是由Simon Stewart创建的,它是一个非常便捷的自动化测试工具WebDriver不同浏览器的处理方式RC有着明显的不同RC不管什么浏览器都是JavaScript来处理,WebDriver选择浏览器最容易接受的语言来处理。比如,在IE中,C++最合适,Firefox JavaScript合适等等。通过灵活选择最合适的语言来处理多浏览器,我们可以很好的回避某些浏览器JavaScript安全限制。而且WebDriver仅仅具有这些能力,它还能够调用操作系统API,尤其是当用户需要模拟鼠标和键盘进行真是的页面操作的时候,这项能力的作用尤为明显

  现在支持的WebDriverAndroidDriver,ChromeDriver, FirefoxDriver,  HtmlUnitDriver, EventFiringWebDriver,InternetExplorerDriver,  IPhoneDriver,  IPhoneSimulatorDriver,  RemoteWebDriver

Selenium框架简介_第3张图片


四、Selenium Grid

Selenium Grid分为版本1和版本2,并不是和Selenium的版本12相对应发布的。现在的Selenium Grid基本能支持selenium2的所有功能了。两个版本原理和基本工作方式都是一样的。只是版本2同时支持Selenium1Selenium2两种协议,并且在一些小的功能和易用性上进行了优化。

Selenium框架简介_第4张图片

       传统的无Grid的模式,只能在一台机器上进行测试。

Selenium框架简介_第5张图片

      Selenium可以在上面两种方式下进行执行,第一种是每台机器都是一致的,第二种是可以指定特定的浏览器或者特定的操作系统执行。

     上述四个工具是Selenium的核心工具,关系如下。

Selenium框架简介_第6张图片

  除了这四个工具外,还有两个工具介绍一下。

  五、辅助工具FireBug

FirebugFirefox的一个扩展,能够方便的查看和调试所有网站语言,如Html,Css,并且能够进行JavaScript调试

Selenium框架简介_第7张图片

六、辅助工具FirePath

FirePath扩展FireBug的功能。能够修改、检查、生产XPathCSS选择定位器的功能。提供自定义的XPath,直接在网页上测试他们的正确性FireBug一样返回你选择的元素的XpathXPath是用于在网页上唯一的识别元素的技术,它就像HTML元素的地址,比如check boxestextdiv等。在Selenium有人认为XPath是最值得信赖的定位器之一。

Selenium框架简介_第8张图片





你可能感兴趣的:(Selenium)