RemoteWebDriver и Grid - возможно ли получить ip сервера?

Я использую RemoteWebDriver из Selenium 2 и Grid, чтобы разделить свои тесты на несколько виртуальных машин. Допустим, у меня есть две машины Linux, и в тесте я определяю возможности работы на машине Linux, я не могу понять, какая из этих двух машин используется. Есть ли способ, чтобы понять это? Что-то вроде driver.getServerIp() или что-то еще? Причина в том, что в моем тестовом коде Selenium я хочу запустить bash-скрипт на консоли машины с Linux, на которой выполняется тест. Поэтому я должен знать, на какой машине проходит тест.

Спасибо, парни!

3 ответа

Решение

Мои навыки 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-адрес узла.

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

Хотя, вероятно, вы бы знали адрес, так как в любом случае передавали его в конструктор для RemoteWebDriver.

Ответ, предоставленный Bobble D, работает только из-за того, что была проблема с JSONParser, как упомянул также Nilesh, вот обновленный код, который может помочь

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]);
Другие вопросы по тегам