无法连接到 AWS EC2 上的 Selenium Grid 运行

Unable to connect to Selenium Grid running on AWS EC2

我在 AWS EC2 实例上安装了 Selenium Grid 和 运行。我想使用 Java 从我的本地计算机连接到此以通过 RemoteWebDriver 启动我的测试,但是,我无法通过 SSH 或 Public IP 连接到服务器。

例如,我需要访问 4444 端口上的实例以获得 http://123.456.78.910:4444/wd/hub 的 url,然后需要建立连接并接收我的测试。

每当我尝试使用 Public IP 时,我都会超时。

如有任何帮助,我们将不胜感激。

您正在超时,因为您的端口 4444 在 EC2 安全组中被阻止。在下面检查您是否已将该规则添加到您的 EC2 安全组。您可以添加 0.0.0.0/0,但我建议只添加您的 IP,因为您将是唯一一个从本地访问该端口并获得更好安全性的人。

当您启动 selenium 网格集线器时 - 您会看到一条消息,例如: 将节点注册到集线器:http://{hub-ip}:4444/grid/register

当我尝试使用 hub-ip 注册节点时,它对我不起作用。 所以我通过登录到 ec2 控制台检查了我的 ec2 实例的 public-ip。

然后我用 http://{public-ip}:4444/grid/register 注册了节点 成功了。

所以使用ec2实例的publicip来注册节点。 selenium grid 挖掘的 hub-ip 在 ec2

上对我不起作用

如果我将集线器、节点放在本地机器上 - 那么 none 就会出现这个问题。

您 运行 节点和集线器在不同的 ec2 实例上吗? 您还应该在从不同于集线器实例的实例启动节点时添加 remotehost 选项,以告知集线器您的 IP 地址。

java -Dwebdriv.gecko.driver="geckodriver" -jar selenium-server-standalone-3.13.0.jar -role node -hub http://{hub-public-ip}:4444/grid/register/ -remoteHost "http://{node-public-ip}" public 脚本实例的 ip - 34.224.113.203

我在使用 Selenium standalone 3-x 时遇到了同样的问题。我安装了一个代理服务器(nginx)并进行了端口转发。然后就开始工作了。

不要直接使用容器端口,而是使用主机端口,主机端口又与容器端口通信。

例如:docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED                                                                                                     STATUS              PORTS                     NAMES
"container id"       selenium/hub        "/opt/bin/entry_poinâ¦"   23 hours ago                                                                                                Up About an hour    0.0.0.0:32768->4444/tcp   hub

这里使用端口32768代替4444