责任编辑主要就特别针对Selenium智能化试验架构进阶重新整理,只牵涉总体机能及架构关键点如是说表明,以及采用大前提技术基础要求重新整理表明。做为开发者、试验人员进阶参照。
责任编辑参照:Selenium架构新一代技术标准及相关数据资料
概要
Selenium也是这款反之亦然采用Apache License 2.0协定发布的开放源码架构。Selenium也是两套完备的Web插件试验系统辅助工具,它包涵了:
Selenium的核心理念Selenium Core如前所述JsUnit,完全由JavaScript撰写,因此可运转于任何全力支持JavaScript的插件上;试验的演唱(Selenium IDE);撰写及运转(Selenium Remote Control)(3.X去除);试验的并行计算(Selenium Grid);Selenium2.X包涵该了WebDriver和SeleniumRC(相容从前版)。Selenium3.X只包涵WebDriver,去除SeleniumRC。Selenium总体产品结构如下表所示:(3.x以后版去除SeleniumRC)
Selenium IDE:
是两个用作构筑JAVA的最高级辅助工具,只不过是FireFox的一个插件,保有两个更易采用的介面。它保有历史记录机能,能够历史记录使用者继续执行的操作方式,并能求出为可重复采用的JAVA。如果没有程式设计实战经验,能透过Selenium IDE来加速熟识Selenium的指示。该辅助工具前述采用太少。Selenium-core 是采用HTML的方式来撰写试验JAVA,你也能采用 Selenium-IDE来演唱JAVA,但是目前Selenium-IDE只有 FireFox 版。
Selenium-RC(Selenium3.X 去除):
selenium-remote control 简写,是采用具体内容的词汇来撰写试验类。Selenium RC全力支持多种的词汇撰写智能化试验JAVA,透过SeleniumRC的伺服器做为伺服器端去出访应用领域,进而达到试验的目地。主要就包涵下列两绝大部分:
ClientLibraries库主要就用作撰写试验JAVA,用以掌控SeleniumServer的库。SeleniumServer负责管理掌控插件犯罪行为。SeleniumServer包涵三部分:Launcher,Http Proxy和Core。其中,Selenium Core是被Selenium Server内嵌到插件网页中的,只不过SeleniumCore就是一大堆JavaScript表达式的子集,即透过这些JavaScript表达式,我们才能实现用流程对插件进行操作方式。Launcher用作开启插件,把Selenium Core读取到插件网页之中,并把插件的全权增设为SeleniumServer的HttpProxy。WebDriver:
Selenium2.x提出了WebDriver的概念之后,它提供了完全另外的一种方式与插件交互。那就是利用插件原生的API,封装成两套更加面向对象的SeleniumWebDriver API,直接操作方式插件网页里的元素,甚至操作方式插件本身(截屏,窗口大小,开启,关闭,安装插件,配置证书之类的)。由于采用的是插件原生的API,速度大大提高,而且调用的稳定性交给了插件厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的插件厂商,对Web元素的操作方式和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分插件厂商不同,而提供不同的实现。例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等。(甚至包括了AndroidDriver和iOS WebDriver)
Selenium Grid:
实现试验的并行计算。
如前所述Selenium进行试验的方式及流程
Selenium RC方式(3.X以后版移除该方式):
试验用例透过Http请求建立与 Selenium-RC server 的连接;Selenium RC Server 驱动两个插件,把Selenium Core读取入插件网页之中,并把浏览器的全权增设为Selenium Server的Http Proxy;继续执行用例向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后透过Http Proxy发送JS指示通知Selenium Core继续执行操作方式插件的动作并注入 JS 代码;Selenium Core继续执行接受到的指令并操作方式;当插件收到新的请求时,发送http请求;Selenium SerWebDriver(目前主流方式):
Selenium 2.X开启SeleniumRC至今为止还保留着,应该是考虑到向前相容。Selenium 3.X完成去除SeleniumRC。
Selenium2.X增加了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(目前主流的方式):
传统的无Grid的模式,只能在一台机器上进行试验。Selenium能在上面两种方式下进行继续执行,第一种是每台机器都是一致的,第二种是能指定特定的插件或者特定的操作方式系统继续执行。
智能化试验JAVA编制要求
大前提熟识:HTML /XML/…大前提熟识:XPath(XML路径词汇 http://www.runoob.com/xpath/xpath-tutorial.html)开发词汇:Java/Python/C#/PHP/…,最起码熟识一种开发词汇。FIT模式:SeleniumJAVA(JS):指示用法 。Driver模式:库(不同词汇有不同客户端)的熟练采用:方法、表达式等。可采用Selenium WebDriver + TestNG架构(TestNG 是两个试验 Java 插件的新架构)模式。建立试验用例JAVA的编制规范(特别针对WebDriver模式)可利用Jenkins集成Selenium Grid + WebDriver,及 Selenium Report插件。试验结果报告展现方式
要结合其他架构的试验报告模板,例如TestNG的试验结果报告、ReportNg等;
Jenkins集成selenium,可利用 selenium report 插件输出;
可结合自主开发试验结果展现处理平台,关联到任务平台之中。
集成成本及方式
需进行SeleniumJAVA的学习以及相关技术的学习;
如前所述Selenium的WebDriver模式,试验用例的编制要求具备数据一种开发词汇(主流模式);
如结合TestNG,则需熟识Java。
我们可采用Jenkins + Selenium + TestNG + Selenium report (ReportNG) 集成的模式进行Web应用领域的智能化试验。在DevOps产品研发中,可融合封装采用Selenium进行WEB应用领域智能化试验。