День добрый.
имеются 2 машины: на одной проект на яве в эклипс, на другой селениум сервер (первой версии), на котором происходит тестирование вебприложения. В целом все нормально работает, но почему-то не вполне корректно происходит клик по ссылке, которая в html виде выглядит как
<td class="MsgBarMsg" nowrap="nowrap">
<span class="StatusBarLetr">Information:</span>The Containers have been scheduled for creation.
(<a onmouseover="callTip('get_op_details',event)" onmouseout="callTip()" href="javascript:open_details('https://bla_bla');">Details</a>)
</td>
Клик происходит следующим образом:
setLocator( "css=a:contains(\"^Details$\")" );
...
commandProcessor.doCommand("click", new String[] {locator,} );
если посмотреть дебаггером при пошаговом проходе, то в doCommand вызывается executeCommandOnServlet("cmd=click&1=css%3Da%3Acontains%28%22%5EDetails%24%22%29"), который в свою очередь вызывает getCommandResponseAsString("cmd=click&1=css%3Da%3Acontains%28%22%5EDetails%24%22%29"), который выглядит следующим образом
protected String getCommandResponseAsString(String command) throws IOException {
String responseString = null;
int responsecode = HttpURLConnection.HTTP_MOVED_PERM;
HttpURLConnection uc = null;
Writer wr = null;
Reader rdr = null;
while (responsecode == HttpURLConnection.HTTP_MOVED_PERM) {
URL result = new URL(pathToServlet);
String body = buildCommandBody(command);
try {
uc = getHttpUrlConnection(result);
uc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
uc.setInstanceFollowRedirects(false);
uc.setDoOutput(true);
wr = getOutputStreamWriter(uc);;
wr.write(body);
wr.flush();
responsecode = getResponseCode(uc); >>> responsecode равен HttpURLConnection.HTTP_OK, клик успешно совершается, на странице открывается popup окно
if (responsecode == HttpURLConnection.HTTP_MOVED_PERM) {
pathToServlet = uc.getRequestProperty("Location");
} else if (responsecode != HttpURLConnection.HTTP_OK) {
throwAssertionFailureExceptionOrError(uc.getResponseMessage());
} else {
rdr = getInputStreamReader(uc);
responseString = stringContentsOfInputStream(rdr); >>>> responseString = "Timed out after 50000ms", из-за этого commandProcessor.doCommand инициирует exeption и клик засчитывается как неуспешный
}
} finally {
closeResources(uc, wr, rdr);
}
}
return responseString;
}
Вопрос, почему при успешном клике не удается считать responseString и как это можно обойти?