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.