当前位置: 首页 > 知识库问答 >
问题:

Selenium网格集线器和节点Java代码

左丘繁
2023-03-14

我正在为我的自动化套件使用Selenium Hub和Node设置。到目前为止,我正在使用以下命令在远程机器上手动启动集线器和节点。

  • java-jarselenium-server-standalone-3.141.59.jar-角色集线器
  • java-Dwebdriver.chrome.driver=chromedriver.exe-jarselenium-server-standalone-3.141.59.jar-角色节点-hubhttp://localhost:4444/grid/register

我想删除此手动过程。可以用java代码启动和停止集线器并注册节点吗?

共有2个答案

殷安顺
2023-03-14

您可以使用docker在远程机器上运行Selenium网格

  1. 在远程机器上安装docker,以下链接详细介绍了各种平台的安装:docs。docker。com/engine/install/

根据您当前的配置,它将简单如下(注意:示例使用的是Selenium Grid v4,它也适用于Selenium 3项目,但如果您愿意,也可以替换Selenium Grid v3,如果这是您的首选):

version: "3"
services:
  selenium-hub:
    image: selenium/hub:4.0.0
    container_name: selenium-hub
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"
  chrome:
    image: selenium/node-chrome:latest
    container_name: chrome
    depends_on: 
      - selenium-hub
    environment: 
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443

假设您只需调用上面的文件docker compose。yml,将其放在您选择的目录中。

建议以分离模式启动网格,使其在后台运行。从文件所在的目录中,执行以下命令:docker-compose up-d(您也可以在远程计算机的根目录下运行此命令,使用-f标志来声明docker-compose文件的位置:docker-compose-f/path/to/directory/docker-compose.yml up-d)

当不再需要Selenium Grid时,执行以下命令:docker-compose down(您也可以使用-f标志在远程计算机的根目录下运行它来声明docker compose文件的位置:docker-compose-f /path/to/directory/docker-compose.ymldown

根据您运行自动化测试套件的方式,您可以启动并运行网格

  1. 使用上面提到的命令手动
  2. 计划作业(Windows计划服务,Linuxcrontab作业)
  3. 作为Jenkins舞台的一部分运行它

选项是开放的。

还有一点建议,硒。开发人员经常使用最新的安全补丁更新他们的图像(大约每2周一次)。为了确保您拥有已修复漏洞的最新版本的图像,您可以在网格未启动时使用以下命令:docker compose pull。

继续使用现有配置到当前设置以执行测试。

要通过浏览器访问Selenium Grid v4控制台视图,请转到:http://

孟鹏海
2023-03-14

对请使用docker,安装非常简单。

步骤:

  1. 安装docker

这将在内部创建集线器和节点并将节点附加到集线器。您可以通过此“http://localhost:4444/wd/hub”简单地开始使用节点

 类似资料:
  • 我在试着运行硒网格, 详细信息:win 7,selenium 2.4.5,selenium-server-独立-2.46.0,java 8,我得到一个错误: 无法启动新会话。可能的原因是远程服务器地址无效或浏览器启动失败。生成信息:版本:'2.45。0',修订版:'5017cb8e7ca8e37638dc3091b2440b90a1d8686f',时间:'2015-02-27 09:10:26'系

  • 问题内容: 为了进行测试,我在不同端口上本地运行网格和节点。 因此,网格在4444上运行,而节点在5556上运行。 在我的测试中,如果我以 然后测试失败,但出现异常 如果我在节点端口5555而不是集线器端口4444上运行测试,则测试通过,如下所示 我认为,我们应该在集线器端口上运行测试,在本例中为4444,而不是5555。 如果我错了,请纠正我。 问题答案: 如果你打算使用 在 通过配置 和 配置

  • 问题: 我想在AWS上运行Selenium Grid,并希望使用他们的动态扩展。缩小规模,它只会终止一个实例...这意味着一个节点可以就这样消失。不是我想要的行为,但使用脚本或生命周期挂钩,我可以尝试确保节点上的任何会话在终止之前都不是活动的。 似乎我可以点击这个API来断开节点与集线器的连接:http://NODE-IP:5555/selenium-服务器/驱动程序/?cmd=关闭Seleniu

  • 我们尝试将selenium节点从一台机器迁移到多台机器,并将其中一半迁移到云。 目前,硒网格的结构如下所示: 该中心位于AWS EC2上 office中的Mac迷你节点 office中的Windows节点 AWS EC2上的2个Linux节点 当我尝试将节点连接到集线器时,节点不会显示在集线器中,并且节点无限向集线器发送注册事件。 集线器4444、4443和4442端口可以直接连接事件和集线器。

  • 问题内容: 为了进行测试,我在不同端口上本地运行网格和节点。 因此,网格在4444上运行,而节点在5556上运行。 在我的测试中,如果我以 然后测试失败,但出现异常 如果我在节点端口5555而不是集线器端口4444上运行测试,则测试通过,如下所示 我认为,我们应该在集线器端口上运行测试,在本例中为4444,而不是5555。 如果我错了,请纠正我。 问题答案: 如果你打算使用 在 通过配置 和 配置

  • 我试图搜索stackoverflow以找到这个问题的答案,但没有找到正确的答案。所以发布这个。请让我知道如何解决这个问题。 我正试图建立一个以本地机器为中心的selenium网格。我创建了一个microsoft azure VM,并尝试将其用作节点。 我在hub(我的本地机器)上执行了以下命令,它开始在端口4444上列出。 我在VM(节点)上执行了以下命令,但它没有在集线器中注册。 我已经打开了虚