尝试将 AWS ec2 实例用作节点时无法注册 Selenium Grid 节点

Cannot register Selenium Grid node when trying to use AWS ec2 instance as node

我是 运行 来自本地 PC 的 Selenium Hub,现在我正在尝试通过 SSH 从 ec2 实例注册节点。这就是我 运行 我的 Hub:

java -jar -Dwebdriver.chrome.driver=C:\Users\NROLL97\Documents\chromedriver.exe selenium-server-standalone-3.141.59.jar -role hub -port 4444

我可以这样判断它是否有效:

我通过 SSH 连接到我的 ec2 实例并尝试了以下操作:

java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555 -hub http://192.168.86.31:4444/grid/register

但这就是我得到的结果:

我读到它可能与 AWS 阻塞端口 4444 有关,所以我尝试在 AWS 控制台中编辑它,如下所示:

但还是一无所获。我怎样才能让这个节点注册?当我在本地 PC 上创建节点时,它工作正常。

但是像这样节点实际上并没有被注册。

编辑:我还尝试了以下方法:

  1. 启动 HUB:java -jar selenium-server-standalone-3.141.59.jar -role hub
19:04:08.076 INFO [GridLauncherV3.lambda$buildLaunchers] - Launching Selenium Grid hub on port 4444
2020-09-11 19:04:08.411:INFO::main: Logging initialized @562ms to org.seleniumhq.jetty9.util.log.StdErrLog
19:04:08.773 INFO [Hub.start] - Selenium Grid hub is up and running
19:04:08.773 INFO [Hub.start] - Nodes should register to http://192.168.86.31:4444/grid/register/
19:04:08.773 INFO [Hub.start] - Clients should connect to http://192.168.86.31:4444/wd/hub
  1. 从我通过 SSH 连接到的 ec2 实例启动节点:java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.86.31:4444/grid/register
]java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.86.31:4444/grid/register
23:16:40.963 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
23:16:41.167 INFO [GridLauncherV3.lambda$buildLaunchers] - Launching a Selenium Grid node on port 11391
2020-09-11 23:16:41.302:INFO::main: Logging initialized @698ms to org.seleniumhq.jetty9.util.log.StdErrLog
23:16:41.666 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
23:16:41.795 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 11391
23:16:41.799 INFO [GridLauncherV3.lambda$buildLaunchers] - Selenium Grid node is up and ready to register to the hub
23:16:41.918 INFO [SelfRegisteringRemote.run] - Starting auto registration thread. Will try to register every 5000 ms.

看起来它一直在尝试但从未连接。我去网格控制台然后我可以看到没有连接节点,它是空白的。

假设要求是 运行 Hub on default port 4444 and Node 默认端口 5555 您需要按如下方式配置和启动它们:

  1. 启动 Selenium Grid Hub:

    java -jar selenium-server-standalone-3.141.59.jar -role hub
    
  2. 以下日志确认您的 Selenium Grid Hub 已 运行 正常运行:

    2017-07-24 15:31:46.139:INFO:osjs.Server:main: Started @2757ms
    15:31:46.140 INFO - Nodes should register to http://192.168.0.107:4444/grid/register/
    15:31:46.140 INFO - Selenium Grid hub is up and running
    
  3. 通过 URL:

    访问 Selenium 网格控制台
    http://localhost:4444/grid/console
    
  4. 启动 Selenium 网格节点:

    java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.86.31:4444/grid/register
    
  5. 以下日志确认您的 Selenium 网格节点 运行 正确:

    15:35:44.939 INFO - Selenium Grid node is up and ready to register to the hub
    15:35:44.958 INFO - Starting auto registration thread. Will try to register every 5000 ms.
    15:35:44.958 INFO - Registering the node to the hub: http://localhost:4444/grid/register
    15:35:45.231 INFO - The node is registered to the hub and ready to use
    
  6. 通过控制台访问Selenium Grid Console URL查看注册的节点:

    http://localhost:4444/grid/console
    

参考

您可以在以下位置找到一些相关的详细讨论:

我使用 AWS 弹性 IP 解决了这个问题。使用 Elastic IP,我可以让我的私有 IP 走 public。所以我把HUB和Node都做了一个AWS EC2实例,如果给hub一个弹性IP,那么hub对节点是可见的。