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]);