Я использую селен для отправки HTTP-запросов на HTTP-сервер и получаю следующую ошибку после закрытия и повторного открытия соединения из тестового кода через тот же IP/порт (127.0.0.1:8080). Я почти уверен, что приложение HTTP-сервера закрывает сокет сервера при выходе, однако я не уверен, что тестовый (клиентский) код закрывает сокет.
Моя реализация RemoteWebDriver приведена ниже, и я предполагаю, что может потребоваться переопределить stopClient()
, чтобы закрыть сокет, но чем?
public class MyWebDriver extends RemoteWebDriver {
public MyWebDriver(URL url, Capabilities desiredCapabilities) {
super(new MyCommandExecutor(url), desiredCapabilities);
}
public Response sendCommand(String command){
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("command", command);
Response response = execute("sendCommand", parameters);
return response;
}
}
org.openqa.selenium.remote.UnreachableBrowserException: не удалось начать новый сеанс. Возможные причины: неверный адрес удаленного сервера или сбой при запуске браузера. Информация о сборке: версия: «2.44.0», ревизия: «76d78cf323ce037c5f92db6c1bba601c2ac43ad8», время: «2014-10-23 13:11:40» Информация о системе: хост: «...», ip: «172.27.3.221», os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.10.1', java.version: '1.7.0_67' Информация о драйвере: driver.version: MyWebDriver на org.openqa. selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:593) в
...
Причина: org.apache.http.conn.HttpHostConnectException: не удалось подключиться к 127.0.0.1:8080 [/127.0.0.1]: в подключении отказано
PS: я должен упомянуть, что клиентский код может повторно подключиться к серверу через 30 секунд или около того - ОС должна освободить сокет после этого времени: Процесс Java в Mac OSX не освобождает сокет
RemoteWebDriver
не освобождает порт сразу после его отключения. попробуй с другим портом - person Saifur   schedule 11.03.2015