分享

Selenium框架简介

 刀首木 2018-08-27
编辑推荐:

本文来自于csdn,介绍了Selenium IDE,Selenium RC,Selenium WebDriver,Selenium Grid,辅助工具等。

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

一、多浏览器支持

可以对多浏览器进行测试,如IE、Firefox、Safari、Chrome、Android手机浏览器等。

二、支持多种语言

如Java、C#、Python、Ruby、PHP等。

三、支持多种操作系统

如Windows、Linux、IOS、Android等。

四、开源免费

官网:http://www./

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

一、Selenium IDE

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

该工具实际使用不多。

二、Selenium RC

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

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

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 Server的Http 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就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等。(甚至包括了AndroidDriver和iOS WebDriver)

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

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

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

现在支持的WebDriver:AndroidDriver,ChromeDriver, FirefoxDriver, HtmlUnitDriver, EventFiringWebDriver ,InternetExplorerDriver , IPhoneDriver , IPhoneSimulatorDriver, RemoteWebDriver。

四、Selenium Grid

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

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

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

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

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

五、辅助工具FireBug

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

六、辅助工具FirePath

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多