Схоже, що ця функція офіційно не підтримується селеном. Але Тарун Лалвані створив діючий код Java, щоб надати цю функцію. Довідка - http://tarunlalwani.com/post/reusing-existing-browser-session-selenium-java/
Ось робочий зразок коду, скопійований із наведеного посилання:
public static RemoteWebDriver createDriverFromSession(final SessionId sessionId, URL command_executor){
CommandExecutor executor = new HttpCommandExecutor(command_executor) {
@Override
public Response execute(Command command) throws IOException {
Response response = null;
if (command.getName() == "newSession") {
response = new Response();
response.setSessionId(sessionId.toString());
response.setStatus(0);
response.setValue(Collections.<String, String>emptyMap());
try {
Field commandCodec = null;
commandCodec = this.getClass().getSuperclass().getDeclaredField("commandCodec");
commandCodec.setAccessible(true);
commandCodec.set(this, new W3CHttpCommandCodec());
Field responseCodec = null;
responseCodec = this.getClass().getSuperclass().getDeclaredField("responseCodec");
responseCodec.setAccessible(true);
responseCodec.set(this, new W3CHttpResponseCodec());
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} else {
response = super.execute(command);
}
return response;
}
};
return new RemoteWebDriver(executor, new DesiredCapabilities());
}
public static void main(String [] args) {
ChromeDriver driver = new ChromeDriver();
HttpCommandExecutor executor = (HttpCommandExecutor) driver.getCommandExecutor();
URL url = executor.getAddressOfRemoteServer();
SessionId session_id = driver.getSessionId();
RemoteWebDriver driver2 = createDriverFromSession(session_id, url);
driver2.get("http://tarunlalwani.com");
}
У вашому тесті повинен бути RemoteWebDriver, створений із існуючого сеансу браузера. Щоб створити цей драйвер, вам потрібно знати лише "інформацію про сеанс", тобто адресу сервера (локальний у нашому випадку), де працює браузер, та ідентифікатор сеансу браузера. Щоб отримати ці деталі, ми можемо створити один сеанс браузера з селеном, відкрити потрібну сторінку, а потім, нарешті, запустити власне тестовий скрипт.
Я не знаю, чи є спосіб отримати інформацію про сеанс для сеансу, який не був створений селеном.
Ось приклад інформації про сеанс:
Адреса віддаленого сервера: http: // localhost: 24266 . Номер порту різний для кожного сеансу. Ідентифікатор сесії: 534c7b561aacdd6dc319f60fed27d9d6.