Selenium devtools Seite.printtopdf löst TimeoutException nach einigen Sekunden ausJava

Java-Forum
Anonymous
 Selenium devtools Seite.printtopdf löst TimeoutException nach einigen Sekunden aus

Post by Anonymous »

Ich versuche, eine PDF einer Seite mit Selenium 4 mit Chrome Devtools-Protokoll herunterzuladen.

Code: Select all

Thread.sleep(60000); // wait for 1 minute to allow the page to finish rendering.

Page.PrintToPDFResponse pdfResponse = devTools.send(
Page.printToPDF(
Optional.empty(), Optional.empty(), Optional.empty(),
Optional.of(1), Optional.of(8.27), Optional.of(11.7),
Optional.of(0.0), Optional.of(0.0), Optional.of(0.0), Optional.of(0.0),
Optional.empty(), Optional.empty(), Optional.empty(),
Optional.empty(), Optional.empty(), Optional.empty()
)
);
< /code>
Die Methode fällt jedoch innerhalb weniger Sekunden und nicht einmal in der Nähe des Zeitlimitwerts, den ich mit Future.get (...) festgelegt habe, fehl. Die ausgeworfene Ausnahme lautet: 
 Es gibt kein Problem, wenn die Seite, die als PDF gedruckt werden solljava.util.concurrent.TimeoutException
Build info: version: '4.18.1', revision: 'b1d3319b48'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '5.15.0-143-generic', java.version: '17.0.2'
Driver info: driver.version: unknown
< /code>
Jede Hilfe wäre sehr geschätzt! CDP < /p>
System.setProperty("webdriver.chrome.driver", "/chromedriver");

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless=new");
options.addArguments("--window-size=1920,1080");
options.addArguments("--no-sandbox");
options.addArguments("--log-level=2");

options.addArguments("--disable-dev-shm-usage");
options.addArguments("--disable-gpu");
options.addArguments("--disable-software-rasterizer");

File downloadDir = new File(reportDir.getAbsolutePath() + File.separator + PDF);
if (!downloadDir.exists()) {
downloadDir.mkdirs();
}
HashMap chromePrefs = new HashMap();
chromePrefs.put("profile.default_content_settings.popups", 0);
options.setExperimentalOption("prefs", chromePrefs);

// Ignore SSL certificate errors
options.addArguments("--ignore-certificate-errors");
options.addArguments("--allow-insecure-localhost");

ChromeDriver driver = null;

String url = "https://localhost:443/stat-report-pdf";

try {
driver = new ChromeDriver(options);

driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.MINUTES);

DevTools devTools = driver.getDevTools();
devTools.createSession();

driver.get(url);

try {
Thread.sleep(1 * 60 * 1000);
} catch (InterruptedException e) {
log.error("processPdfFile InterruptedException 에러");
Thread.currentThread().interrupt();
}

Page.PrintToPDFResponse pdfResponse = devTools.send(
Page.printToPDF(Optional.empty(), Optional.empty(), Optional.empty(),
Optional.of(1), Optional.of(8.27), Optional.of(11.7),
Optional.of(0.0), Optional.of(0.0), Optional.of(0.0), Optional.of(0.0),
Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty())
);

byte[] pdfData = Base64.getDecoder().decode(pdfResponse.getData());
Path pdfPath = Paths.get(downloadDir.getAbsolutePath(), now.format(DateTimeFormatter.ofPattern("yyyyMMdd"))+"_MNX_Report.pdf");
Files.write(pdfPath, pdfData);

if( Files.exists(pdfPath) && Files.size(pdfPath) > 0) {
log.debug("PDF file generate success: {}", pdfPath.toString());
mailService.sendMailReport(pdfPath, startDate, endDate);
} else {
log.error("PDF file generate fail: {}", pdfPath.toString());
return false;
}

} catch (Exception e) {
log.error("processPdfFile error = {}", e.getMessage());
return false;
} finally {
if (driver != null) {
driver.quit();
}
}

return true;
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post