教你玩转web自动化(四)

2016-03-30   出处: 搜狗测试  作/译者: 独孤萧龙


                                   

在实际的自动化测试过程中,需要考虑的因素很多,若单纯从执行效率方面考虑,我们完全可以直接通过Testng配置文件进行配置,实现Cases的多线程执行即可。如下图所示,Testng中配置多线程方式执行自动化Case:


但在很多情况下,我们还要考虑不用测试环境以及不同浏览器等一些情况;这时,我们需要将Case在不同环境机器上执行。

一、Selenium grid

1、简介


我们的Case实现上述分布式执行便是通过Selenium grid完成的。Selenium grid是通过一个hub节点(主节点)和若干个代理节点(子节点)来提供实现Case分布式执行的环境。Hub作为一个中央节点用来管理各个代理节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行 


2、Selenium grid使用

若实现Case的分布式执行,首先需要进行selenium grid环境地构建。我们需要同时启动一个hub和至少一个node来实现,同时,node机器上需要安装selenium自动化case执行环境。另外,在使用前我们需要下载jar包selenium-server-standalone-2.33.0.jar,并且分别将jar包放到hub机器和node机器上。


然后,在hub节点和node节点上分别通过下面命令完成环境的构建:

启动hub:java-jar selenium-server-standalone-2.33.0.jar -role hub

启动node:java-jar selenium-server-standalone-2.33.0.jar -role node -hub http://10.XXX.XXX.48:4444/grid/register


为了方便我们执行,我们将两个启动命令写到批处理文件starthub.bat和startnode.bat中,然后,将startnode.bat放到所要执行机器上双击启动即可。


Hub启动成功后,我们可以看到如下信息:

Node启动成功后,我们可以看到如下信息:


Hub和node都启动成功后,我们可以看到hub中能够获取到连接到此hub的node,而node中同样会有连接hub成功的提示。


这样我们就可以在Hub机器上指定Case在node机器上执行了。

二、分布式执行实现

那么我们是怎样让Cases在指定机器上执行的呢?实现自动化Cases的分布式执行有两种方式,一种是直接在编写Case的时候指定运行的方式,另外一种是通过testng配置文件传参的方式来实现的。下面我们仍以前面文章中的登录功能为例进行说明这两种方式的具体实现,例如,我们计划将Case由前文中本机执行变为在ip为10.XXX.XX.233机器上执行。


1、Case中直接指定

首先,采用在Case编写时,直接指定运行机器的方式。在setUp方法中获取driver实例的过程中,通过直接将URL地址写死到RemoteWebDriver方法中来实现。下面是完整实现过程:


这样编写完的Cases,执行过程将会在10.XXX.XX.233机器上发生。


2、Testng配置文件传参实现

另外,一种方法就是借助于Testng配置文件进行,即在Case中以变量形式替换真实地址,而真实需要的地址由testng来进行传递。具体代码如下所示:

Case中写法:


Testng中配置:


当我们在执行testng.xml文件时,该登录功能Case同样会在10.XXX.XX.233机器上执行。


上面两种方式实现功能是一样的,但是当我们面临大量Cases需要维护的时候,推荐采用第二种方式进行Case编写。因为,这样我们便可以只需要对一个testng配置文件进行维护即可,大大提高效率。


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
346° /3469 人阅读/0 条评论 发表评论

登录 后发表评论