第一次用Selenium Grid时你踩过哪些坑?
要回答这个问题,我们先来说说Selenium Grid的前世今身。
什么是Grid呢?
做自动化测试,你是不是有被要求在不同的浏览器和操作系统上并行地运行多个测试的时候?
这个时候就要用到Selenium Grid了,它有两个版本 – Grid 1 和 Grid 2。
Grid 1已经被 Selenium弃用。
Grid使用了hub-node(Master Slave)的概念,在这个概念中,测试只在一个机器上运行(hub),但是执行会在不同的机器(nodes)并行执行。
什么时候用Grid?
需要同一时间在多个浏览器和操作系统上进行测试时;
需要节省测试套件的执行时间时。
Grid的工作方式时什么?
看下面这张图,Grid的工作方式不言而喻了吧:)
什么时 Hub呢?
它是你加载所有测试的机器。
一个Grid里只有一个Hub。
hub是测试运行的地方,但是你看到的测试是在node上的浏览器上执行的。
什么是Nodes?
这台机器将执行您在hub上加载的测试
他可以是一个或者多个nodes在一个grid里,Grid中有不同浏览器和操作系统。
Selenium Grid 配置
介绍完Selenium Grid之后,该说说怎么配置它了
步骤1:
从http://docs.seleniumhq.org/download/ 下载selenium stand alone server。
把它放在Hub和所有Nodes上。
步骤2:
去Hub上。使用命令提示符,切换到Selenium server的jar包所在的目录。
使用下面命令运行selenium server:
java jar selenium-server-standalone-3.12.0.jar –role hub
jar包的名称因版本3.12.0而异,注意更新成你用的版本。
步骤3:
去所有nodes上。使用命令提示符,切换到Selenium server的jar包所在的目录。
使用下面命令运行selenium server:
java jar selenium-server-standalone-3.12.0.jar –role node -hub http://<hostname/ip of hub:4444/grid/register -port 5555
特定实例的高级命令
java -jar selenium-server-standalone-2.47.1.jar -role-hub <hub hostname> /grid/register –browser browserName = internet explorer, version = 11,maxinstance = 1, platform= WINDOWS - port 5656
还有一种情况,如果你嫌命令行里面定制这些配置比较麻烦,那么你可以用json文件保存这些配置,然后命令行用这个json文件就行了。
命令及json文件名下:
java jar selenium-server-standalone-3.12.0.jar –role node –nodeConfig grid-node.json
grid-node.json 时下面这个json文件的文件名
{
"capabilities":
[
{
"browserName": "chrome",
"maxInstances": 1
},
{
"browserName": "firefox",
"maxInstances": 1
}
],
"port":5555,
"hubPort":4444,
"hubHost":"192.168.8.8",
"registerCycle":10000,
"register":true,
"timeout":0,
"maxSession":2
}
以上全介绍完了,那么说说你可能遇到的坑啊
第一坑:以上命令记得要自己敲,不要复制粘贴哦,复制过去一般执行会报错。
第二坑:当node在虚拟机上时,记得node的网络配置要是桥接,不能是NAT Natwork啊。否则hub和node连接就会出问题。
第三坑:如果你用的是默认配置,而没有用json文件的话,那么默认是有timeout时间的,等待时间太长,你在node上执行case也是会失败的,并且还有可能没有提示,一直在等着执行,但是就是node上浏览器不打开。这中情况,在命令行按Ctrl+c把node结束掉,然后重新执行命令,然后再运行代码就行了
共同学习,写下你的评论
评论加载中...
作者其他优质文章