use of org.openqa.selenium.remote.UnreachableBrowserException in project fess by codelibs.
the class WebDriverGenerator method generate.
@Override
public boolean generate(final String thumbnailId, final String url, final File outputFile) {
if (logger.isDebugEnabled()) {
logger.debug("Generate Thumbnail: " + url);
}
if (outputFile.exists()) {
if (logger.isDebugEnabled()) {
logger.debug("The thumbnail file exists: " + outputFile.getAbsolutePath());
}
return true;
}
final File parentFile = outputFile.getParentFile();
if (!parentFile.exists()) {
parentFile.mkdirs();
}
if (!parentFile.isDirectory()) {
logger.warn("Not found: " + parentFile.getAbsolutePath());
return false;
}
if (webDriver instanceof TakesScreenshot) {
final FessConfig fessConfig = ComponentUtil.getFessConfig();
synchronized (this) {
try {
webDriver.get(url);
if (webDriver instanceof JavascriptExecutor) {
final Dimension dim = webDriver.findElement(By.tagName("body")).getSize();
if (dim.height >= fessConfig.getThumbnailHtmlPhantomjsMaxHeightAsInteger()) {
if (logger.isInfoEnabled()) {
logger.info("Skpped Thumbnail generation " + dim + " for " + url);
}
return false;
}
}
final File thumbnail = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
convert(thumbnail, outputFile);
updateThumbnailField(thumbnailId, url, url);
return true;
} catch (final UnreachableBrowserException | SessionNotFoundException e) {
if (logger.isDebugEnabled()) {
logger.debug("WebDriver is not available.", e);
}
previousCheckTime = 0;
} finally {
final long now = ComponentUtil.getSystemHelper().getCurrentTimeAsLong();
if (now - previousCheckTime > fessConfig.getThumbnailHtmlPhantomjsKeepAliveAsInteger().longValue()) {
destroy();
startWebDriver();
}
}
}
} else {
logger.warn("WebDriver is not instance of TakesScreenshot: " + webDriver);
}
return false;
}
Aggregations