RemoteWebDriver和网格-是否可以获取服务器ip?

RemoteWebDriver和网格-是否可以获取服务器ip?,ip,selenium-grid,Ip,Selenium Grid,我使用Selenium 2和Grid中的RemoteWebDriver在几个虚拟机上划分测试。假设我有两台Linux机器,在一个测试中我指定了在Linux机器上运行的功能,我无法确定这两台机器中的哪一台正在使用。 有什么办法可以解决这个问题吗?类似于driver.getServerIp()或其他任何东西? 原因是,在我的Selenium测试代码中,我想在运行测试的linux机器的控制台上启动一个bash脚本。因此,我必须知道测试在哪台机器上运行 谢谢大家 HttpCommandExecutor

我使用Selenium 2和Grid中的RemoteWebDriver在几个虚拟机上划分测试。假设我有两台Linux机器,在一个测试中我指定了在Linux机器上运行的功能,我无法确定这两台机器中的哪一台正在使用。 有什么办法可以解决这个问题吗?类似于driver.getServerIp()或其他任何东西? 原因是,在我的Selenium测试代码中,我想在运行测试的linux机器的控制台上启动一个bash脚本。因此,我必须知道测试在哪台机器上运行

谢谢大家

HttpCommandExecutor ce = (HttpCommandExecutor) ((RemoteWebDriver)driver).getCommandExecutor();
ce.getAddressOfRemoteServer();

尽管在您将地址传递给RemoteWebDriver的构造函数后,您可能知道该地址。

我的java技能不是最好的,这段代码需要一些清理,但这对我来说很有用

HttpHost host = new HttpHost(yourHubIP, yourHubPort); 
DefaultHttpClient client = new DefaultHttpClient(); 
URL testSessionApi = new URL("http://" + yourHubIP + ":" + yourHubPort + "/grid/api/testsession?session=" +  driver.getSessionId()); 
BasicHttpEntityEnclosingRequest r = new 
BasicHttpEntityEnclosingRequest("POST", testSessionApi.toExternalForm()); 
HttpResponse response  = client.execute(host,r);
JSONObject object = (JSONObject)new JSONParser().parse(EntityUtils.toString(response.getEntity()));     
String proxyID = object.get("proxyId"));

proxyID包含节点的IP。

Bobble D提供的答案有效,只是Nilesh提到的JSONParser也有问题,下面是更新的代码,可以提供帮助

HttpHost host = new HttpHost(yourHubIP, yourHubPort); 
DefaultHttpClient client = new DefaultHttpClient(); 
URL testSessionApi = new URL("http://" + yourHubIP + ":" + yourHubPort +         "/grid/api/testsession?session=" +  ((RemoteWebDriver) driver).getSessionId()); 
BasicHttpEntityEnclosingRequest r = new 
BasicHttpEntityEnclosingRequest("POST", testSessionApi.toExternalForm()); 
HttpResponse response  = client.execute(host,r);
JSONObject object = new JSONObject(EntityUtils.toString(response.getEntity()));   
String proxyID = object.get("proxyId"));
System.out.println(proxyID.split("//")[1].split(":")[0]);

Sry,但这只返回集线器的地址。我想要运行测试的机器的地址。我用以下代码启动RemoteWebDriver:RemoteWebDriver=newRemoteWebDriver(newURL(hubUrl),capability);啊,我明白你的意思了。我不知道该怎么做。好吧,如果我在中心代码中更改一些内容,可能会有所帮助。有人知道我在哪里可以得到集线器的源代码吗?我只有一个selenium-server-standalone-2.3.0.jar,我在命令行中使用以下命令开始:“java-jar selenium-server-standalone-2.3.0.jar-role hub”。也许我可以建立一个方法来通过运行测试的机器的ip。我想在运行错误跟踪测试的机器上自动捕获视频。我通过命令行用VLC来实现。但因此我必须知道测试在哪台机器上运行。哇!这绝对是我要找的!谢谢!您是如何知道URL查询的?我的意思是,是否有任何文件可以获取更多信息?也许还有更多的信息。但这确实帮了我很多忙!谢谢我从这个问题报告中提取了它:我正在使用selenium 2.19,但无法解析,JSONParser()。是否有需要添加到类路径中的附加jar?