Selenium-Grid工作原理
到此为止,其实还没有提到selenium-grid,因为到目前为止我们还没有需求说同时覆盖多个平台和浏览器,而selenium-grid在这种情况下会体现出其作用来。selenium-grid是用于设计帮助我们进行分布式测试的工具,其整个结构是由一个hub节点和若干个代理节点组成。hub用来管理各个代理节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。使用selenium-grid远程执行测试的代码与直接调用Selenium-Server是一样的[只是环境启动的方式不一样,需要同时启动一个hub和至少一个node]:
java -jar selenium-server-standalone-x.xx.x.jar -role hub
java -jar selenium-server-standalone-x.xx.x.jar -role node
上面是启动一个hub和一个node,若是同一台机器要启动多个node则要注意端口分配问题,可以这样来启动多个node:
java -jar selenium-server-standalone-x.xx.x.jar -role node -port 5555
java -jar selenium-server-standalone-x.xx.x.jar -role node -port 5556
java -jar selenium-server-standalone-x.xx.x.jar -role node -port 5557
调用Selenium-Grid的基本结构图如下:
上面是使用selenium-grid的一种普通方式,仅仅使用了其支持的分布式执行的功能,即当你同时需要测试用例比较多时,可以平行的执行这些用例进而缩短测试总耗时;除此之外,selenium-grid还支持一种更友好的功能,即可以根据你用例中启动测试的类型来相应的把用例转发给符合匹配要求的测试代理。例如你的用例中指定了要在Liunux上FF的3.6版本进行测试,那么selenium-grid会自动匹配注册信息为Linux、且安装了FF3.6的代理节点,如果匹配成功则转发测试请求,如果失败则拒绝请求。使用selenium-grid的远程兼容性测试的代码同上。其调用的基本结构图如下: