关注测试行业
专注测试技术

教你玩转web自动化(四)

 

在实际的自动化测试过程中,需要考虑的因素很多,若单纯从执行效率方面考虑,我们完全可以直接通过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配置文件进行维护即可,大大提高效率。

‍‍精彩内容 

    好了,Cases的分布式执行就先讲这些了,下文中将会给大家介绍自动化Case的构建。

    敬请期待~~~

之前的文章:

【干货】教你玩转web自动化(一)

  【干货】教你玩转web自动化(二)

  【干货】教你玩转web自动化(三)

关注我微信号:搜狗测试

想看之前的系列文章?

发送“搜:selenium”到“搜狗测试”公众号。

发送“搜:jenkins”到“搜狗测试”公众号。

发送“搜:web自动化”到“搜狗测试”公众号。

发送“搜:ant”到“搜狗测试”公众号。

发送“搜:testng”到“搜狗测试”公众号。

赞(0)
转载请注明作者和出处:测试技术学习与分享 » 教你玩转web自动化(四)
分享到: 更多 (0)

来捉虫

关注测试行业专注测试技术