我像这里描述的那样运行selenium grid。
我有一个集线器,一个节点运行在一个虚拟机上,其他节点运行在其他虚拟机上。
当我进入http://hub:4444/grid/
控制台时,我可以看到节点和配置,但很多时候我需要:
- 重新启动整个网格
- 重启节点
- 添加节点
- 删除节点
目前,我通过记录所有节点并手动重新启动/更改来做到这一点。这非常耗时,特别是当我需要重新启动整个网格时。
我的问题是,有没有一种软件可以让我定义机器,然后我能很快地做出这些改变。像网格操作/配置软件之类的东西,或者在这些场景中节省时间的最佳实践?
你可以研究一下,或者投资一下亚马逊的AWS。
如果您的selenium集线器端口(4444)向公众开放,则可以使用AWS API来启动具有启动批处理文件的实例,以便在启动时使用您的主机。java -jar server.jar -role node -hub http:hub:4444/grid/register
这也允许您启动X数量的实例,比如1000个,每台机器运行一个测试。您可能会在一小时内运行整个自动化回归套件。
当你有了一个坚实的系统,然后你可以通过命令行(或通过运行你的测试)启动,然后随心所欲地关闭实例,而不需要任何配置。
Selenium/Amazon
Amazon AWS
设置网格
Selenium Grid EC2 AMI
一年前我们也遇到过同样的问题。我之前也问过类似的问题。如何维护Selenium Grid?Selenium Grid 2.0提供了一些集成这些特性的方法。
然而,我的组织实现了一些不同的东西。我们为网格维护创建了一些UI屏幕。步骤如下:
- 获取数据库表 中所有虚拟机的IP地址和DNS
- 创建Hub和RC虚拟机之间的映射
- 在所有虚拟机启动时放一个小java程序,它会在DB上查找它应该连接到哪个集线器,以及它应该使用什么浏览器配置进行连接。
- 创建用于在hub之间重新分配虚拟机的UI。UI的任何赋值都会重启VM,并触发启动脚本。
构建上述解决方案需要花费一些时间和精力,但在使用了一年之后,我觉得这是值得的。
Selenium Grid是您的测试基础设施,但听起来您需要在其之上添加一层来管理此基础设施。
我推荐使用Docker来管理你的网格。与传统的虚拟机设置相比,使用Docker有一些巨大的好处:
-
Docker容器比VM的更轻量。每个节点的开销更少。
-
Docker有许多内置的方法来快速创建网格,扩展或缩小节点,并快速重新启动整个网格。
-
Docker容器都可以在一台机器上运行,所以有一个中心控制点。无需单独访问每个VM以进行故障排除或性能维护。
如果你想看一个例子,我最近在我的公司做了这件事,并写在这里:
http://www.conductor.com/nightlight/running-selenium-grid-using-docker-compose/