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

时间:2017-07-20 11:01:24

标签: selenium virtual-machine 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 INFO - 节点应注册到http://:4445 / grid / register /

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

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

THX

在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 节点OS是Windows 7 SP1 我从集线器机器运行集线器创建,并从节点机器创建节点。我收到的错误总是一样的: INFO - 无法注册此节点:集线器已关闭或未响应:连接到:4444 [/]失败:连接超时:连接 我在命令行终端上,在节点机器上看到此消息

2 个答案:

答案 0 :(得分:0)

使用

在本地计算机中启动集线器
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。 这可能适合你。

答案 1 :(得分:0)

当您启动节点时,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(通过wget或通过curl或在网络浏览器上打开以下网址

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参数提供。

另一种选择是回到让你的Hub和Node在8080端口上运行(因为它们在不同的机器上运行,你不应该有任何端口争用)。我建议8080的原因是因为大多数情况下此端口永远不会被阻止,因为它是默认的Http端口。

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