Implementierung
Die Identifikatoren der Elemente sind über das id-Attribut, bzw. das data-class-Attribut der HTML-Elemente definiert und adressierbar.
ID-Katalog
Der ID-Katalog ist in logische Kategorien unterteilt, um die Übersichtlichkeit zu gewährleisten. Jedes Eintrag wird durch eine kurze Beschreibung der Komponente (Was ist das für ein Element, Button, oder wofür ist diese ID?), den Typ des Identifikators (id oder data-class) sowie die Struktur bzw. Zusammensetzung der ID definiert.
Formular Fortschrittsanzeige
- Buttons für die Formularseite:
id-pagination-element-<PAGE_NUMBER>
Navigationsleiste (Bottom Sticky Bar)
- Navigation Buttons:
id-sticky-bar-<BUTTON_TYPE>-btn
Folgende BUTTON_TYPES sind defaultmäßig verfügbar
expert-search-download- Download der Suchergebnisse einer Expertensuche als Excel Dateiexpert-search- Expertensuche startenexpert-search-details- Details eines Eintrags im Suchergebniss anzeigennext-page- Weiter zur nächsten Seiteprevious-page- Zurück zur vorherigen Seiteprint- Druckansicht öffnensubmit- Formular abschickencancel- Abbrechendetail-info- Zu den Detailinformation
Formular Elemente
Allgemeine Identifikation eines Elements
- Beliebiges Element:
id-<JSON_PATH> - Beliebiges Element, das öfters vorkommt:
data-class-<ELEMENT_ID>
Hinweis:
Die ELEMENT_ID ist die gleiche ID die von ActaNova für die Identifikation des Elements benutzt.
- Input/Inhalt löschen Button:
id-<ELEMENT_JSON_PATH>-delete-content-btn - Allgemeine Identifikation eines löschen Buttons:
data-class-delete-content-btn
Boolean-spezifische Komponenten
- True radio-button:
id-<JSON_PATH_OF_ELEMENT>-radio-btn-true - False radio-button:
id-<JSON_PATH_OF_ELEMENT>-radio-btn-false
Binary-spezifische Komponenten
- Button fürs Löschen einer Dateie:
id-<JSON_PATH_OF_ELEMENT>-binary-file-delete-btn-<FILE_INDEX> - Button fürs Herunterladen einer Dateie:
id-<JSON_PATH_OF_ELEMENT>-binary-file-download-btn-<FILE_INDEX> - Allgemeine Identifikation eines löschen Buttons für Dateien:
data-class-binary-file-delete-btn - Allgemeine Identifikation eines herunterladen Buttons für Dateien:
data-class-binary-download-btn
Aggregat-spezifische Komponenten
- Aggregat Wrapper:
id-aggregate-wrapper-<JSON_PATH>
Action Buttons
- Aggregat Element oben hinzufügen:
id-<AGGREGATE_ID>-add-agg-item-top - Aggregat Element unten hinzufügen:
id-<AGGREGATE_ID>-add-agg-item-bottom - Aggregat Element löschen:
data-class-agg-entry-delete-btn - Aggregat Element bearbeiten:
data-class-agg-entry-edit-btn - Aggregat Element kopieren:
data-class-agg-entry-copy-btn - Aggregat Element hinzufügen:
data-class-agg-entry-add-bt - Aggregat Element auf-/zuklappen:
data-class-agg-toggle-details-btn
Aggregat Pagination
- Vorherige Aggregatseite:
data-class-agg-pagination-previous-page-btn - Nächste Aggregatseite:
data-class-agg-pagination-next-page-btn - Spezifische Aggregatseite Button:
data-class-agg-pagination-page-<PAGE_NUMBER>-btn
Hinweis:
Diese Identifikatoren sind deswegen als Klassennaemn definiert, weil sie in einem Aggregat immer zwei mal vorkommen: oben und unten.
Globaler Aggregat Filter
- Dropdown für die Filterkategorie:
id-<AGGREGATE_ID>-filter-dropdown - Filter Input:
id-<AGGREGATE_ID>-filter-input - Filter hinzufügen Button:
id-AGGREGATE_ID>-add-filter-btn>
Aggregat CSV hochladen
- CSV hochladen Button:
id-<AGGREGATE_ID>-csv-upload-btn
Dropdown-spezifische Komponenten
Hinweis:PARENT_JSON_PATH ist der JSON-Path des Dropdown-Elements, zu dem dieses Item gehört.ITEM_REFERENCE_ID ist die Referenz-ID bzw. identifier , welches auch von Acta-Nova im possibleValueSet bereitgestellt wird.
- Dropdown List Elemente:
id-<PARENT_JSON_PATH>-<ITEM_REFERENCE_ID> - Dropdown radio-buttons für Catalog Elemente mit Einzelauswahl:
id-<JSON_PATH_OF_ELEMENT>-radio-<ROW_INDEX_NUMBER>-<COLUMN_INDEX_NUMBER> - Dropdown checkboxes für Catalog Elemente mit Mehrfachauswahl:
id-<JSON_PATH_OF_ELEMENT>-checkbox-<ROW_INDEX_NUMBER>-<COLUMN_INDEX_NUMBER>
Expertensuche
- Reihe eines Suchergebnisses:
id-experten-search-result-row-<ROW_INDEX> - Button für die Detailansicht eines Suchergebnisses:
id-expert-search-result-row-<ROW_INDEX>-btn-<BUTTON_ID>
Hinweis
BUTTON_IDist diebuttonIDdie auch von ActaNova mit einem erfolgreichem Suchergebnis mitgeliefert wird.
Overlays
- Schließen Icon-Button (x) eines Overlays:
id-overlay-close-btn - Verschiedene Buttons eines Overlays:
id-<OVERLAY_TYPE>-overlay-<OVERLAY_BTN_TYPE>-btn
Folgende OVERLAY_TYPES sind defaultmäßig verfügbar
update-form- Overlay nach Aktualisierung eines Formularsprecondition- Precondition Overlayleave- Overlay beim verlassen eines Formularsinfo- Informations-overlayexpert-search-table-result-limit- Overlay für Suchergebnisse mit mehr Ergebnisse als das Limiaggregate-delete-confirmation- Bestätigung von Löschaktion bei einem Aggregatelement
Folgende OVERLAY_BTN_TYPES sind defaultmäßig verfügbar:
cancel- Abbrechensave- Formular Zwischenspeichernleave- Formular Verlassenclose- Overlay schließendelete-entry- Aggregatitem löschenexcel-download- Suchergebnisse als Excel Datei herunterladensubmit- Beim Info Overlay
Anwendungsbeispiel
Um die oben definierten Identifikatoren beispielsweise in einem e2e-Testin Framework wie Playwright zu verwenden oder um eigene CSS Styles zu schreiben, können die Locators direkt über CSS-Selektoren angesprochen werden. Hier sind fünf typische Beispiele:
1. Klick auf einen Navigations-Button (Statische ID)
Um zur nächsten Seite des Formulars zu navigieren:
// Selektiert den "Weiter"-Button in der Sticky Bar über die ID
await page.locator('#sticky-bar-next-page-btn').click();
2. Interaktion mit einem Formular-Element (Dynamische ID)
Eingabe in ein Textfeld über den bekannten JSON-Path:
const jsonPath = '$.properties["89D6E122-2CC7-4940-A202-F1D2C51898AD"]';
await expect(page.locator(`[id='${jsonPath}']`).fill('Max Mustermann')).toBeVisible();
Wichtig!
Da der Standard-ID-Selektor (`#<ID>`) empfindlich auf Sonderzeichen reagieren kann – insbesondere bei dynamisch generierten IDs oder IDs, die mit Symbolen beginnen – wird die Verwendung von Attribut-Selektoren (`[id='<ID>']`) empfohlen. Dies gewährleistet eine stabilere Identifikation der Elemente und beugt Fehlern bei der Selektion vor.
3. Zugriff über CSS-Klassen (Mehrfach vorkommende Elemente)
Da data-class verwendet wird, um Elemente zu identifizieren, die mehrfach vorhanden sein können, nutzt man den Attribut-Selektor:
// Klickt auf den ersten "Eintrag löschen" Button eines Aggregats
await page.locator('[data-class="agg-entry-delete-btn"]').first().click();