So verwenden Sie Selen, um einen Screenshot jeder Seite innerhalb eines PDF zu erhaltenJava

Java-Forum
Anonymous
 So verwenden Sie Selen, um einen Screenshot jeder Seite innerhalb eines PDF zu erhalten

Post by Anonymous »

Ich verwende Selenium und Java zusammen, um Automatisierung zu lernen. Für dieses spezifische Problem versuche ich, Selenium zu einem Google Drive -Link zu verwenden, der ein PDF enthält, und dann einen Screenshot für jede einzelne Seite des PDF aufzunehmen und dann jeden Screenshot in einer Datei zu speichern, die der Benutzer selbst benennen kann. Das Problem ist, dass es sich um Screenshots der ersten Seite handelt und nicht auf jede einzelne Seite der PDF nach unten scrollen. Hier ist der Testlink, mit dem ich arbeite (https://drive.google.com/file/d/1optp32 ... r1ut4/view).

Code: Select all

package googleDriveScreenshotTest;

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.io.FileHandler;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.io.File;
import java.io.IOException;
import java.time.Duration;
import java.util.Scanner;

public class PdfScreenShotTest2{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

// Get user inputs with validation
String pdfUrl = getUserInput(scanner, "Enter Google Drive PDF link: ");
String folderName = getUserInput(scanner, "Enter folder name to save images: ");
int totalPages = getValidPageCount(scanner);

// Setup WebDriver
WebDriver driver = new ChromeDriver();

try {
// Create directory with error handling
File screenshotDir = createScreenshotDirectory(folderName);

// Navigate to PDF
driver.get(pdfUrl);
driver.manage().window().maximize();

// Wait for document to load
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15));
WebElement body = wait.until(ExpectedConditions.elementToBeClickable(By.tagName("body")));

// Click anywhere on page
body.click();

// Take screenshots of each page
for (int pageNumber = 1; pageNumber  0) {
return count;
}
System.out.println("Please enter a positive number.");
} catch (Exception e) {
System.err.println("Invalid input.  Please enter a valid number.");
scanner.nextLine(); // Clear invalid input
}
}
}

private static File createScreenshotDirectory(String folderName) throws IOException {
String downloadPath = System.getProperty("user.home") + "/Downloads/" + folderName;
File folder = new File(downloadPath);

if (!folder.exists()) {
if (!folder.mkdirs()) {
throw new IOException("Failed to create directory: " + downloadPath);
}
}

return folder;
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post