Java 类org.openqa.selenium.remote.server.handler.DeleteSession 实例源码
项目:grid-refactor-remote-server
文件:SessionCleaner.java
void checkExpiry() {
for (SessionId sessionId : driverSessions.getSessions()) {
Session session = driverSessions.get(sessionId);
if (session != null) {
boolean useDeleteSession = false;
boolean killed = false;
boolean inUse = session.isInUse();
if (!inUse && session.isTimedOut(clientGoneTimeout)) {
useDeleteSession = true;
log.info("Session " + session.getSessionId() + " deleted due to client timeout");
}
if (inUse && session.isTimedOut(insideBrowserTimeout)) {
WebDriver driver = session.getDriver();
if (driver instanceof EventFiringWebDriver){
driver = ((EventFiringWebDriver)driver).getWrappedDriver();
}
if (driver instanceof Killable) {
//session.interrupt();
((Killable) driver).kill();
killed = true;
log.warning("Browser killed and session " + session.getSessionId() + " terminated due to in-browser timeout.");
} else {
useDeleteSession = true;
log.warning("Session " + session.getSessionId() + " deleted due to in-browser timeout. " +
"Terminating driver with DeleteSession since it does not support Killable, "
+ "the driver in question does not support selenium-server timeouts fully");
}
}
if (useDeleteSession) {
DeleteSession deleteSession = new DeleteSession(session);
try {
deleteSession.call();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
if (useDeleteSession || killed) {
driverSessions.deleteSession(sessionId);
final PerSessionLogHandler logHandler = LoggingManager.perSessionLogHandler();
logHandler.transferThreadTempLogsToSessionLogs(sessionId);
logHandler.removeSessionLogs(sessionId);
}
}
}
}