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>
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>
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>
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.
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.