Selenium Grid:如何获取执行当前测试的节点名称(计算机名称或IP地址)

Dim*_*tar 5 java selenium-grid

我在Grid Hub下执行测试,3个节点在3台远程计算机上运行.在我的日志中,我可以看到从所有这些节点发布的随机顺序的消息.为了分析日志,我必须按计算机名称对其进行排序.我按照以下方式尝试了它(Java):

System.getenv().get("COMPUTERNAME")
Run Code Online (Sandbox Code Playgroud)

但每次它返回Hub正在运行的计算机的名称.

Nas*_*h N 3

由于您是从 Hub 计算机运行网格(以及可能的 Jenkins/eclipse),system.getenv() 将返回来自 hub 计算机而不是节点计算机的信息。

使用 Selenium Grid 2,获取节点名称非常简单,请按照以下步骤操作:

  1. 从您的网络驱动程序获取会话 ID。
Webdriver.getSessionId();
Run Code Online (Sandbox Code Playgroud)
  1. 转到下面的网址。

    替换gridIP为 Grid 集线器计算机的 IP 或主机名。

    替换mySessionId为您从上述步骤 1 中获得的会话 ID。

http://gridIP:4444/grid/api/testsession?session=mySessionId
Run Code Online (Sandbox Code Playgroud)
  1. 从 JSON 响应中,您可以从 proxyId 字段找到 IP 和端口号。

    下面的示例 JSON 响应(请参阅最后的 proxyId):

{"msg":"slot found !","success":true,"session":"xd1215w5-sw53-4bcc-qwa6-7e1214dd6542","internalKey":"q13b2q5x-a21s-5ggt-b6aw-1w1qzr5k0672","inactivityTime":78,"proxyId":"http://10.10.9.3:7777"}
Run Code Online (Sandbox Code Playgroud)
  1. 这是执行当前测试的 IP 地址。
"proxyId":"http://10.10.9.3:7777"
Run Code Online (Sandbox Code Playgroud)