为了账号安全,请及时绑定邮箱和手机立即绑定

第一次用Selenium Grid时你踩过哪些坑?

标签:
测试

第一次用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结束掉,然后重新执行命令,然后再运行代码就行了

点击查看更多内容
9人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
软件测试工程师
手记
粉丝
194
获赞与收藏
14

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消