Zurück |  | Weiter

## 13.2. Seitenauswahl

### Vordefinierte Seiten

Für Tests, die sich auf bestimmte Seiten eines PDF-Dokumentes beziehen, existieren mehrere Konstanten, deren Bedeutung sich aus ihrem Namen ergibt:

    <!-- Possibilities to focus tests to specific pages:  -->

    <!-- Predefined constants for pages: -->
    <xxx on="ANY_PAGE"   />
    <xxx on="EVEN_PAGES" />
    <xxx on="EACH_PAGE"  />
    <xxx on="EVERY_PAGE" />
    <xxx on="FIRST_PAGE" />
    <xxx on="LAST_PAGE"  />
    <xxx on="ODD_PAGES"  />

    <!-- Attributes for individual pages: -->
    <xxx onPage=".."            />
    <xxx onEveryPageAfter=".."  />
    <xxx onEveryPageBefore=".." />
    <xxx onAnyPageAfter=".."    />
    <xxx onAnyPageBefore=".."   />

`on="EACH_PAGE"` und `on="EVERY_PAGE"` sind funktional identisch. Die Redundanz ist aus sprachlichen Gründen beabsichtigt.

Hier ein Beispiel mit einer vordefinierten Seiten-Konstanten im Attribut `on=".."`:

    <testcase name="hasText_MultipleSearchTokens_EvenPages">
      <assertThat testDocument="content/diverseContentOnMultiplePages.pdf">
        <hasText on="EVEN_PAGES">
          <containing>Content</containing>
          <containing>even pagenumber</containing>
        </hasText>
      </assertThat>
    </testcase>

### Individuelle Seiten

Das nächste Beispiel zeigt, wie beliebige, individuelle Seiten definiert werden können. Seitenzahlen müssen durch Kommata getrennt werden:

    <testcase name="hasText_OnMultiplePages_SelectedPages">
      <assertThat testDocument="content/diverseContentOnMultiplePages.pdf">
        <hasText onPage="1, 2, 3">
          <containing>Content on</containing>
        </hasText>
      </assertThat>
    </testcase>

### Offene Seitenbereiche

Auch für zusammenhängende Seiten am Anfang oder am Ende eines Dokumentes gibt es Konstanten:

    <testcase name="hasText_OnAnyPageAfter1">
      <assertThat testDocument="content/diverseContentOnMultiplePages.pdf">
        <hasText onAnyPageAfter="1">
          <containing>Content on</containing>
        </hasText>
      </assertThat>
    </testcase>

    <testcase name="hasText_OnEveryPageBefore3">
      <assertThat testDocument="content/diverseContentOnMultiplePages.pdf">
        <hasText onEveryPageBefore="3">
          <containing>Content on</containing>
        </hasText>
      </assertThat>
    </testcase>

### Seitenbereiche innerhalb eines Dokumentes

Und als Letztes gibt es die Attribute `<hasText fromPage="1" toPage="2" >`, um Tests auf einen Bereich innerhalb eines Dokumentes zu beschränken. Das folgende Beispiel validiert Text, der zwei Seiten überspannt.

    <testcase name="hasText_SpanningOver2Pages_matchingRegex">
      <assertThat testDocument="&pdfdir;/content/text-starts-on-page1-continues-on-page2.pdf">
        <hasText fromPage="1" toPage="2" >
          <inClippingArea upperLeftX="18" upperLeftY="30"
                          width="182" height="238"
                          unit="MILLIMETER"
          >
            <matchingRegex>Text starts  on page 1.*continues on page 2</matchingRegex>
          </inClippingArea>
        </hasText>
      </assertThat>
    </testcase>

Für geschlossene Seitenbereiche stehen nur die Tags `<containing>`, `<matchingRegex>`, `<notContaining>` und `<notMatchingRegex>` zur Verfügung.

### Wichtige Hinweise

- Seitenzahlen beginnen mit '1'.

- Die Seitenangaben in den Attributen `onXxxPageBefore` und `onXxxPageAfter` sind jeweils exclusiv gemeint.

- Die Seitenangaben in den Attributen `from` und `to` sind jeweils inclusiv gemeint.

- Das Attribut `onEveryPageXxx` bedeutet, dass der gesuchte Text wirklich auf jeder Seite existieren muss.

- Dagegen reicht es, wenn bei `onAnyPageXxx` der gesuchte Text auf einer Seite existiert.

Zurück | Nach oben | Weiter
Kapitel 13. Anhang | Zum Anfang | 13.3. Textvergleich