Zurück |  | Weiter

## 6.8. PDF-Dokumente zum Download auf Webseiten

### Ausgangssituation

Sie bieten auf Ihrer Webseite benutzerspezifisch generierte PDF-Dokumente an.

### Problem

Das PDF kann nur im Kontext seiner Webseite getestet werden, weil die Anwendung nunmal so konzipiert ist. Also müssen die Eingaben für den Test über die Webanwendung durchgeführt werden und am Ende des Geschäftsvorgang das generierte PDF über den Browser geladen werden.

### Lösungsansatz

Selenium bietet gute Möglichkeiten, ein PDF-Dokument innerhalb einer Webseite zu selektieren. Dieses wird als Stream an PDFUnit übergeben.

### Lösung

Der eigentliche Test besteht aus den folgenden Zeilen:

    /**
     * When the URL of the pdf document inside an HTML page is generated dynamically,
     * you have to find the link (href) first.
     * Input data for the web page can also be typed with Selenium (not shown here).
     */
    @Test
    public void verifyPDF_LoadedBySeleniumWebdriver() throws Exception {
      // arrange, navigate to web site:
      String startURL = "http://www.unicode.org/charts/";
      driver.get(startURL);
      WebElement element = driver.findElement(By.linkText("Basic Latin (ASCII)"));
      String hrefValue = element.getAttribute("href");

      // act, load PDF web site:
      URL url = new URL(hrefValue);

      // assert, validate PDF:
      String expectedTitle  = "The Unicode Standard, Version 6.3";

      AssertThat.document(url)
                .hasTitle().equalsTo(expectedTitle)
      ;
      AssertThat.document(url)
                .restrictedTo(FIRST_PAGE)
                .hasText()
                .containing("0000", "007F")
      ;
    }

Die restlichen Zeilen zur Vervollständigung des Beispiel sind:

    /**
     * This sample shows how to test a PDF document with Selenium and PDFUnit.
     * See the previous code listing for the '@Test' method.
     *
     * @author Carsten Siedentop, March 2012
     */
    public class PDFFromWebsiteTest {

      private WebDriver driver;

      @Before
      public void createDriver() throws Exception {
        driver = new HtmlUnitDriver();
        Logger htmlunitLogger = Logger.getLogger("com.gargoylesoftware.htmlunit");
        htmlunitLogger.setLevel(java.util.logging.Level.SEVERE);
      }

      @After
      public void closeAll() throws Exception {
        driver.close();
      }

      // @Test
      // public void verifyPDF_LoadedBySeleniumWebdriver()...

    }

Weitere Informationen zu Selenium sind auf der Projekt-Site http://seleniumhq.org/ zu finden.

Zurück | Nach oben | Weiter
6.7. ZUGFeRD-Daten gegen sichtbaren Text validieren | Zum Anfang | 6.9. HTML2PDF - Hat die dynamische PDF-Erstellung funktioniert?