第一次启动Selenium-Grid,我的远程机器拒绝连接



我第一次尝试设置Selenium Grid。 我能够运行集线器和本地节点。 尝试在 VM 上运行节点后,出现错误,指出:

信息 - 无法注册此节点:发送注册时出错 请求:连接到:4445 [/] 失败:连接超时: 连接

信息 - 无法注册此节点:此集线器已关闭与否 响应: 连接到 :4445 [/] 失败: 连接超时: 连接

我运行了中心:

java -jar selenium-server-standalone-3.4.0.jar -role hub -port 4445

具有

java -jar selenium-server-standalone-3.4.0.jar -role node -hub http://localhost:4445/grid/register/

并尝试运行远程节点

java -jar selenium-server-standalone-3.4.0.jar -role node -hub http://<local machine ip>:4445/grid/register/

并与

java -jar selenium-server-standalone-3.4.0.jar -role node -hub http://<host ip>:4445/grid/register/

我从集线器终端会话中的消息中获取了:

12:24:55.593 信息 - 节点应注册到 http://:4445/grid/register/

我在两侧(集线器和节点(防火墙中打开了端口 4444 和 4445(以防万一(。

任何人都知道为什么它可能不起作用,我该怎么做才能帮助新节点连接我的集线器?

感谢

在Murthi第一条评论之后编辑: 我尝试同时运行两者:

java -jar selenium-server-standalone-3.4.0.jar -role node -hub <hub-machine-ip>

和:

java -jar selenium-server-standalone-3.4.0.jar -role node -hub <hub-machine-ip> -hubHost <host-ip>

在这两种情况下,CMD都向我列出了Selenium Grid的所有选项。

我也试着跑:

java -jar selenium-server-standalone-3.4.0.jar -role node -hub http://<hub-machine-ip>:4445/grid/register -host <host-ip>

我回到了之前收到的连接超时错误

编辑 25/7: 集线器操作系统是Mac OS x Yosemite 节点操作系统是 Windows 7 SP1 我从中心计算机运行中心创建,从节点计算机运行节点创建。我收到的错误总是相同的:信息 - 无法注册此节点:集线器已关闭或无响应:连接到:4444 [/] 失败:连接超时:连接我在节点机器上的命令行终端上看到此消息

当您启动节点时,Selenium 会尝试找出您的 IP 地址是什么,然后使用它将自己注册到集线器。在某些情况下,您的机器可能有两个IP地址(一个是公开的,另一个不是(,Selenium可能会找到一个没有暴露的IP地址并使用它来注册自己。发生这种情况时,节点将向集线器发送注册请求,注册也会成功,但其一侧的集线器会尝试定期轮询节点以检查节点是否处于活动状态,如果不是,它会将节点标记为已失效并将其删除。当集线器尝试 ping 节点时,它将使用节点标识自身的id(id 通常使用节点发送的节点的 IP 和端口形成(。

您可以尝试执行以下操作,以找出瓶颈的确切位置。

首先,我们需要找出您的节点上是否真的存在导致破坏的端口(或(IP 问题。为此,在您的节点计算机上,使用以下命令启动节点

java -jar selenium-server-standalone-3.4.0.jar -role node

这将剥离一个 Selenium 节点,该节点侦听5555端口,并尝试将自己注册到在localhost上运行并在端口4444上侦听的集线器。您会在屏幕上看到很多故障(暂时忽略它们(。

现在,从另一台计算机上尝试触发HTTPGET(通过wgetcurl或在Web浏览器上打开以下URL(

http://<IP_Of_Node_Machine_Goes_Here>:5555/assets/selenium.png

您应该下载(或(在浏览器上显示Selenium徽标。

如果您遇到问题,在此步骤中,它基本上确认您有 IP 问题(或(端口问题。

要确定它是其中的哪一个,请首先尝试切换到其他端口(例如8080(,然后使用命令在其上启动节点

java -jar selenium-server-standalone-3.4.0.jar -role node -port 8080

并尝试打http://<IP_Of_Node_Machine_Goes_Here>:8080/assets/selenium.png

如果您现在看到徽标,则表示确实是节点计算机上阻止传入流量的5555(您需要打开它(

如果您仍然没有看到徽标,那么您很可能面临内部IP/外部 IP 问题。为了解决这个问题,请找出暴露在外部的盒子的 IP 是什么,并在启动节点时通过-host参数提供。

另一种选择是回退到让集线器和节点同时在8080端口上运行(因为它们在不同的计算机上运行,因此不应有任何端口争用(。我建议8080的原因是,大多数情况下,此端口永远不会被阻止,因为这是默认的Http端口。

希望这有助于解决您的问题。

在本地计算机中使用启动集线器

java -jar selenium-server-standalone-3.4.0.jar -role hub 

和 VM 上的节点使用

java -jar selenium-server-standalone-3.4.0.jar -role node -hub http://<host ip>:4444/grid/register/ 

在 vm 节点上启用 TCP/UDP 端口转发 4444,在中心计算机上启用 5555。 这可能对你有用。

最新更新