Selenium Grid 的搭建方法

传统 Selenium Grid 的搭建方法

搭建一个具有 1 个 Node 的 Selenium Grid。那么通常来讲我们需要 2 台机器,其中一台作为 Hub,另外一台作为 Node,并要求这两台机器已经具备了 Java 执行环境。

1.通过官网下载 selenium-server-standalone-.jar 文件。这里需要注意的是,不管是 Hub 还是Node,都使用同一个 JAR 包启动,只是启动参数不同而已。

2.将下载的 selenium-server-standalone-.jar文件分别复制到两台机器上.

3.选定其中一台机器作为 Selenium Hub,并在这台机器的命令行中执行以下命令:

java 复制代码
java -jar selenium-server-standalone-<version>.jar -role hub

在这条命令中,"-role hub"的作用是将该机器启动为 Selenium Hub。启动完成后,这台机器默认对外提供服务的端口是 4444。

然后,你就可以在这台机器上通过http://localhost:4444/grid/console观察 Selenium Hub 的状态,也可以在其他机器上通过 http://:4444/grid/console 观察 Selenium Hub 的状态。其中, 是这台 Selenium Hub 机器的 IP 地址。由于此时还没有 Node 注册到该 Hub 上,所以你看不到任何的 Node 信息。

启动过程和状态信息,分别如图所示。

4.在另一台作为 Selenium Node 的机器上执行以下命令:

java 复制代码
java -jar selenium-server-standalone-<version>.jar -role node -hub http:// <Hub_IP>:4444/grid/register

这条命令中,"-role node"的作用是,将该机器启动为 Selenium Node,并且通过"-hub"指定了 Selenium Hub 的节点注册 URL。

执行成功后,你可以再次打开 http://:4444/grid/console 观察 Selenium Hub 的状态。此时,你可以看到已经有一个 Node 挂载到了 Hub 上。这个 Node,就是用来实际执行测试的机器了。并且,这个 Node 上已经缺省提供了 5 个 Firefox 浏览器的实例、5 个 Chrome 浏览器的实例和 1 个 IE 浏览器的实例,同时默认允许的并发测试用例数是 5 个。

如果你想自己配置这些内容,可以在启动 Node 的时候提供不同的启动参数。具体可以指定哪些参数,你可以参考Selenium Grid的官方文档。

Node启动过程

Hub端Node注册的过程

5.完成上述操作后,在测试用例中通过以下代码将测试指向 Selenium Hub,然后由 Selenium Hub 完成实际测试执行机的分配与调度工作。其中,最关键的部分是,创建 RemoteWebDriver 实例的第一个参数,这个参数不再是一个具体的测试执行机的 IP 地址或者名字了,而是 Selenium Hub 的地址。

java 复制代码
DesiredCapabilities capability = DesiredCapabilities.firefox();
WebDriver driver = new RemoteWebDriver(new URL("http://<Hub_IP>:4444/wd/hub"), capability);

基于 Docker 的 Selenium Grid 的搭建方法

java 复制代码
#创建了Docker的网络grid
$ docker network create grid

#以Docker容器的方式启动Selenium Hub,并且对外暴露了4444端口
$ docker run -d -p 4444:4444 --net grid --name selenium-hub selenium/hub:3.14.0-europium

#以Docker容器的方式启动并挂载了Chrome的Selenium Node
$ docker run -d --net grid -e HUB_HOST=selenium-hub -v /dev/shm:/dev/shm selenium/node-chrome:3.14.0-europium

#以Docker容器的方式启动并挂载了Firefox的Selenium Node
$ docker run -d --net grid -e HUB_HOST=selenium-hub -v /dev/shm:/dev/shm selenium/node-firefox:3.14.0-europium
相关推荐
niuniu_6661 天前
简单的自动化场景(以 Chrome 浏览器 为例)
运维·chrome·python·selenium·测试工具·自动化·安全性测试
suimeng62 天前
ChromeDriver的常用方法
java·selenium
niuniu_6662 天前
Selenium 性能测试指南
selenium·测试工具·单元测试·测试·安全性测试
莓事哒2 天前
selenium和pytessarct提取古诗文网的验证码(python爬虫)
爬虫·python·selenium·测试工具·pycharm
suimeng62 天前
基本元素定位(findElement方法)
java·selenium
mywpython2 天前
mac 最新的chrome版本配置selenium的方式
chrome·python·selenium·macos
软件测试曦曦2 天前
如何使用Python自动化测试工具Selenium进行网页自动化?
自动化测试·软件测试·python·功能测试·测试工具·程序人生·自动化
freejackman2 天前
Selenium框架——Web自动化测试
python·selenium·测试
互联网杂货铺2 天前
黑盒测试、白盒测试、集成测试和系统测试的区别与联系
自动化测试·软件测试·python·功能测试·测试工具·单元测试·集成测试
Feng.Lee2 天前
聊一聊缓存如何进行测试
功能测试·测试工具·缓存