Skip to main content
Skip table of contents

Keywords

Allgemein


create dataset

Parameter

Keine

Aktion

Startet die Neuanlage eines Datensatzes der geöffneten Entität

Beispiel

GROOVY
create dataset

create dependent dataset

Parameter

Keine

Aktion

Startet die Neuanlage eines abhängigen Datensatzes (d.h. über den Unterbereich) auf der aktuell geöffneten Relation (der aktive Tab im Unterbereich).

Beispiel

GROOVY
create dependent dataset

open parameter dataset

Parameter

1st|2nd|3rd|10th

Aktion

Öffnet den i-ten Datensatz oder den ersten, der alle angegebenen Suchkriterien erfüllt, aus der gerade sichtbaren Tabelle (Suchergebnis- oder Unterbereichstabelle).

Beispiel

GROOVY
open 1st dataset
open 2nd dataset
open 3rd dataset
open 10th dataset from subdata
open dataset from subdata matching {
	field "ActTypeKey.Activity" matches ~/.*/ // regex pattern
	field "Subject.Activity" equals "Mein Betreff"
}

open dataset matching { ... }

open entity "entityName"

Parameter

entityName technischer Name der Entität

Aktion

Öffnet über das Bereich-/Dateimenü eine leere Maske der übergebenen Entität. Je nach Konfiguration des Systems wird die Einfeldsuche oder die Suchmaske geöffnet. Kann die Entität über das Bereich-/Dateimenü nicht geöffnet werden, wird sie über die COMMAND-Suche geöffnet. Voraussetzung dafür ist, dass die Entität auch für die COMMAND-Suche freigegeben ist.

Die "Bereiche" in der Seitenleiste müssen für dieses Keyword geöffnet sein. Sollten sie zusammengeklappt sein, schlägt das Keyword fehl.

Um die "Bereiche" dauerhaft aus zuklappen, muss sich mit dem Test-Benutzer am CRM angemeldet werden und das Ausklappen einmal händisch durchgeführt werden. Beim Abmelden wird die Änderung gespeichert.

  • image-20240125-100443.png

Beispiel

GROOVY
open entity "Customer"

open searchmask

Parameter

Keine

Aktion

Öffnet die Suchmaske ("Erweiterte Suche") einer Entität. Dies funktioniert nicht aus der Detailmaske heraus.

Beispiel

GROOVY
open searchmask

open listview

Parameter

Keine

Aktion

Öffnet die Listenansicht einer Entität. Dies funktioniert nur aus einer Detailmaske heraus.

Beispiel

GROOVY
open listview

open subdata listview

Parameter

Keine

Aktion

Öffnet die Listenansicht der im Unterbereich zugeordneten Entitäten. Dies funktioniert nur aus einer Detailmaske heraus.

Beispiel

GROOVY
open subdata listview

open tasklist

Parameter

Keine

Aktion

Öffnet die Liste der offenen Tasks für den aktuellen Benutzer. Ist die Taskliste bereits geöffnet, wird sie geschlossen und erneut geöffnet.

Beispiel

GROOVY
open tasklist

prompt tester interaction steps

Parameter

steps Liste von Strings, die beschreiben, welche Schritte der Anwender vornehmen muss, um den Testlauf fortzusetzen.

Aktion

Pausiert den Testlauf für manuelle Eingaben des Anwenders, falls die zu testenden Funktionen noch nicht über das Test Studio abgedeckt werden. Es wird eine Meldung angezeigt, die dem Anwender die notwendigen Schritte erläutert. Bestätigt der Anwender die Meldung, wird der Testlauf fortgesetzt.

Steht nicht in der automatischen Ausführung (Headless-mode) zur Verfügung. Falls es dennoch genutzt wird, bricht der Test an dieser Stelle ab.

Beispiel

GROOVY
prompt tester interaction "Wählen Sie den ersten Datensatz im Unterbereich aus", "Entfernen Sie ihn aus dem Unterbereich", "Setzen Sie den Testlauf fort"

reload dataset

Parameter

Keine

Aktion

Lädt den aktuellen Datensatz erneut.

Beispiel

GROOVY
reload dataset

save dataset

Parameter

Keine

Aktion

Speichert den geöffneten Datensatz.

Beispiel

GROOVY
save dataset

delete dataset

Parameter

Keine

Aktion

Löscht den geöffneten Datensatz.

Beispiel

GROOVY
delete dataset

deselect all rows

Parameter

Keine

Aktion

Deselektiert alle Zeilen einer Tabelle.

Beispiel

GROOVY
deselect all rows

select parameter

Parameter

1st row | rows matching {...} | all rows

Aktion

Markiert additiv einen (mehrere) Datensatz (Datensätze) in einer Tabelle. Die ausgewählten Enträge werden also zu den bereits selektierten Datensätzen hinzugefügt.
Erfolgt entweder auf Index-Basis oder nach Suchkriterien. Es werden alle Zeilen markiert, die die Bedingungen erfüllen. Für die Auswahl eines Datensatzes.

Tipp

  • Falls sichergestellt sein soll, dass nur die ausgewählten Zeilen selektiert sind, sollte vorher die Aktion 'deselect all rows' genutzt werden.

  • Zum Markieren aller Meiers und Mustermanns wird das Keyword zweimal aufgerufen.

GROOVY
deselect all rows
select rows matching {
  field "Name1.Customer" equals "Meier"
}
select rows matching {
  field "Name1.Customer" equals "Mustermann"
}

Beispiel

GROOVY
select 1st row
select 2nd row
select 3rd row
select 4th row

select rows matching {
  field "Name.Entity" equals "someString"
  field "Name.Entity" == "someString" // Alternative zur vorigen Zeile.
  field "Name.Entity" matches ~/.*AB/ // java.util.regex.Pattern
} 


select all rows // alle Zeilen, Paginator-übergreifend

select tab "tabName"

Parameter

tabName Dargestellter Name des gewünschten Tabs auf der Maske. Ab einer CRM-Version von 23.2 kann zusätzlich der technische Name verwendet werden.

Aktion

Wechselt zum Tab auf der Maske mit dem übergebenen Namen bzw. Beschriftung. Falls der Name nicht eindeutig ist, wird der zuerst gefundene Tab verwendet. Das Auswählen findet im Falle einer übergebenen Beschriftung ohne Beachtung der Groß- und Kleinschreibung statt.
Bei Verwendung des technischen Namens, muss dieser jedoch genau übereinstimmen.

Beispiel

GROOVY
select tab "DETAILS"
select tab "CampaignTab"

toggle collapsible "collapsibleName"

Parameter

collapsibleName Interner Name des gewünschten Collapsibles auf der Maske

Aktion

Wechselt den Status des über den übergebenen internen (technischen) Namen identifizierten Collapsibles. Ein ausgeklapptest Collapsible wird hiermit eingeklappt, ein eingeklapptes Collapsible ausgeklappt.

Das Keyword ist insbesondere dann notwendig, wenn Collapsible-Elemente standardmäßig eingeklappt sind, da das Test-Studio genau wie ein menschlicher Benutzer nicht auf "weggeklappte" Elemente zugreifen kann.

Beispiel

GROOVY
toggle collapsible "C0InvolvedPersonsCollapsible"

Abbildung


enter edit mode

Parameter

Keine

Aktion

Wechselt den aktuellen Datensatz in den Bearbeitungsmodus.

Beispiel

GROOVY
enter edit mode

enter read mode

Parameter

Keine

Aktion

Wechselt den aktuellen Datensatz in den Lesemodus.

Beispiel

GROOVY
enter read mode

execute "libraryMethodName"

Parameter

libraryMethodName Name der auszuführenden Bibliotheksmethode. Dieser setzt sich zusammen aus dem Namen der Bibliothek und der gewünschten Bibliotheksmethode.

Aktion

Führt eine Bibliotheksmethode, welche keine weiteren Parameter benötigt, aus.

Beispiel

GROOVY
execute "AssignmentLib.removeAllDatasets"

execute "libraryMethodName" using { parameter }

Parameter

libraryMethodName Name der auszuführenden Bibliotheksmethode. Dieser setzt sich zusammen aus dem Namen der Bibliothek und der gewünschten Bibliotheksmethode.

parameter Parameter, die in der ausgewählten Methode definiert sind.

Aktion

Führt eine Bibliotheksmethode unter Verwendung der dazugehörigen Parametern aus.

Beispiel

CODE
execute "BPMUtils.startProcess" using {
  parameter processName : "Mein Prozess"
  parameter occasion: "Mein Anlass"
  // ggf. weitere Parameter
}

Befüllen


fill mask using values

Parameter

values Liste von Feldwerte, die gesetzt werden sollen

Aktion

Füllt die aktuelle Maske mit den übergebenen Feldwerten.

Beispiel

GROOVY
fill mask using {
    lookup "PersontypeKey.Customer": "H"
    textfield "Name1.Customer": "Mustermann"
    datefield "DateOfOrigin.Customer": "01.01.1970"
}

set lookupfield "fieldname" through searching using searchParameter

Parameter

fieldname Name des zu füllenden Nachschlagefeldes

searchParameter Felder auf der Suchmaske, die gefüllt werden sollen

Aktion

Das angegebene Nachschlagefeld wird durch die dahinter liegende Nachschlagesuche gefüllt. Dabei wird immer der erste ermittelte Datensatz in das Feld eingetragen. Innerhalb von searchParameter können mehrere Felder gefüllt werden.

Beispiel

GROOVY
set lookupfield "DefaultContactPerson.Activity" through searching using {
   	field "LastName.ContactPerson": "Mustermann"
    field "FirstName.ContactPerson": "Max"
}

set field "fieldName" to "value"

Parameter

fieldname Name des zu setzenden Textfeldes

value gewünschter Wert

Aktion

Setzt das angegebene Feld (Text, Zahl) auf einen gewünschten Wert.

Die Maske sollte sich dafür bereits im Bearbeitungsmodus befinden.

Beispiel

GROOVY
set field "Subject.Activity" to "Mein Betreff"
set field "Subject.Activity" to "12345"

Tipp

Auch Nachschlagefelder können mit diesem Keyword gefüllt werden. Der notwendige Lucene-Index könnte allerdings nicht so schnell gesetzt worden sein. Um spätere Fehlermeldung zu vermeiden, empfiehlt sich, direkt nach der Eingabe des Feld eine Feldprüfung vorzunehmen.

Weitere Informationen siehe Bekannte Einschränkungen

GROOVY
set field "Subject.Activity" to "Mein Betreff"
field "Subject.Activity" should be "Mein Betreff"
set field "Subject.Activity" to "12345"
field "Subject.Activity" should be "12345"

clear fieldType "fieldName"

Parameter

fieldname Name des zu setzenden Textfeldes

fieldType datefield|textfield|lookup|textarea|htmlarea|booleanfield oder field

Aktion

Leert bzw. deselektiert das angegebene Feld.

Beispiel

GROOVY
clear field "EndDate.Activity" // das Test-Studio ermittelt selbst, um was für einen Feldtyp es sich handelt
clear datefield "EndDate.Activity"
clear textfield "Subject.Activity"
clear lookupfield "PersontypeKey.Customer"

BPM


assign process to me

Parameter

Keine

Aktion

Weist den geöffneten Prozesstask dem aktuellen Benutzer über den "Mir zuweisen"-Button zu.

Beispiel

GROOVY
assign process to me

cancel process

Parameter

Keine

Aktion

Bricht den aktuellen Prozess ab, indem auf den Abbrechen-Button geklickt und die darauf folgende Meldung bestätigt wird.

Beispiel

GROOVY
cancel process

fill bpm selection mask using searchParameter

Parameter

searchParameter Feldwerte für die Suchmaske

Aktion

Füllt die Eingabefelder einer Suchmaske mit den übergebenen Werten. Die Suche muss mit dem Keyword execute-search ausgeführt werden.

Beispiel

GROOVY
fill bpm selection mask using {
    lookup "PersontypeKey.Customer": "H"
    textfield "Name1.Customer": "Mustermann"
}

Fortsetzen eines gestarteten BPM-Prozesses

Eine BPM-Prozessaktion kann in der Taskliste auf zwei Arten gefunden werden:

  • Über den Namen des Tasks (im Screenshot rot markiert)

  • Über die Beschreibung ("Instanzinfo") der Prozessaktion (im Screenshot blau markiert)

Die entsprechenden Keywords sind nachfolgend ausgeführt.


open bpm task "taskname"

Parameter

taskname Name des zu öffnenden Tasks

Aktion

Öffnet einen Prozess aus der Taskliste, wenn diese bereits geöffnet ist.

Beispiel

GROOVY
open bpm task "Kampagnenphase und Outbound hinzufügen"
open bpm task "Kampagne anlegen"

open bpm instance "instanceDescription"

Parameter

instanceDescription Beschreibung des zu öffnenden Tasks

Aktion

Öffnet einen Task aus der Taskliste, wenn diese bereits geöffnet ist.

Beispiel

GROOVY
open bpm instance "Anlage der Kampagne [Das CURSOR-Test-Studio]"
open bpm instance "Kampagnendaten pflegen"

start internationalized process "processName"

Parameter

Keine

processName internationalisierter Name des zu startenden Prozesses

Aktion

Startet einen Prozess aus dem Prozessmenü anhand des sichtbaren internationalisierten Prozessnamens.

Das Menü "Prozesse" in der Seitenleiste müssen für dieses Keyword sichtbar und geöffnet sein. Sollte es nicht sichtbar oder zusammengeklappt sein, schlägt das Keyword fehl. Um das Menü "Prozesse" dauerhaft auszuklappen, muss sich mit dem Test-Benutzer am CRM angemeldet werden, das Menu eingeblendet werden und das Ausklappen einmal händisch durchgeführt werden. Beim Abmelden wird die Änderung gespeichert.

  • image-20240125-101009.png
  • image-20240125-101032.png

Beispiel

GROOVY
start internationalized process "Kampagne anlegen"

current bpm phase should be <path>

Die Phasen werden teils abgeschnitten und wie hier mit "..." dargestellt  dargestellt. In Diesem Fall ist statt des Originalnamens der Phase "..." zu verwenden, also:
current bpm phase should be "..." >> "Phase3" >> "Phase4" >> "..." >> "Teilphase4" >> "Teilphase5"

Parameter

<path> dargestellter Name der Phasen bis zu der zu prüfenden Phase.

Aktion

Überprüft ob der angegeben Pfad übereinstimmt und ob die zuletzt angegebene Phase aktiv ist. 

Beispiel

GROOVY
current bpm phase should be "Phase1" >> "Phase2" >> "Phase3"

borrow document and restore

>=24.3

Parameter

Keine

Aktion

Überspringt das Herunterladen und Speichern eines Dokuments in einem BPM-Usertask

Beispiel

CODE
1 borrow document and restore

Damit das Keyword korrekt funktioniert, muss die erweiterte Dateibehandlung für den ausführenden User deaktiviert sein.


Interaktion


click button "buttonID"

Parameter

buttonID internen Name des Buttons

Aktion

Klickt auf den Button mit dem übergebenen technischen Namen.

Die gewünschten Buttons müssen sich auf der Maske befinden.

Toolbar-Buttons können mit dieser Variante nicht betätigt werden

Beispiel

GROOVY
click button "btn_medium_strom" 

click action "actionID"

>=24.4

Parameter

actionID interner Name des Aktionsboxschalters

Aktion

Klickt auf den Aktionsboxschalter mit dem übergebenen internen Namen. Die Aktionsbox muss dafür bereits aufgeklappt sein.

Beispiel

GROOVY
click action "C0createCommon" 

click myCrm path

Parameter

path Pfad zum gewünschten Element

Aktion

Klickt das Element im gewünschten Pfad.

Beispiel

GROOVY
click myCrm >> "Mein Ordner" >> "Noch ein Ordner" >> "Mein Prozess"
click myEvi >> "Mein Ordner" >> "Noch ein Ordner" >> "Mein Prozess"
click myTina >> "Mein Ordner" >> "Noch ein Ordner" >> "Mein Prozess"

confirm task

Parameter

Keine

Aktion

Setzt den aktuellen Prozess fort, indem auf den Fortsetzen-Button geklickt wird.

Beispiel

GROOVY
confirm task

execute search

Parameter

Keine

Aktion

Führt die Suche der aktuellen Suchmaske aus.

Beispiel

GROOVY
execute search

pick internationalized task option "buttonCaption"

Parameter

buttonCaption Inhalt eines Buttons als String

Aktion

Drückt einen Button einer Meldung

Bei User-Task vom Typ "Dialog" : pick dialog option "ButtonCaption"

Beispiel

GROOVY
pick internationalized task option "zweiter Schalter"

pick task option option

Parameter

option Button-Option: OK, YES, NO oder Integer: 0,1,2,... oder String: "firstButton", "secondButton",...

Aktion

Drückt einen Button einer Meldung eines BPM-Prozesses

Beispiel

GROOVY
pick task option OK
pick task option 0 // der erste Button ist der 0te
pick task option 1
pick task option YES
pick task option "firstButton"

pick dialog option option

Parameter

option Button-Option: OK, YES, NO oder Integer: 0,1,2,... oder String: "firstButton", "secondButton",...

Aktion

Drückt einen Button einer Meldung eines BPM-Prozesses

Beispiel

GROOVY
pick dialog option YES
pick dialog	option NO
pick dialog option OK
pick dialog option CANCEL
pick internationalized dialog option "firstButton"

suspend task (and save|discard)

Parameter

Keine

Aktion

Pausiert den aktuellen Prozess, indem auf den Pausieren-Button geklickt wird.

Beispiel

GROOVY
suspend task
suspend task and save
suspend task and discard

Tipp

War der aktuelle Prozess-Schritt eine Maske, auf der Feldwerte geändert wurden, so erscheint ein Dialog, ob diese Werte zwischengespeichert werden sollen.
Dieser muss durch den Zusatz and save respektive and discard behandelt werden. Wurden keine Werte geändert, erscheint der Dialog nicht.


start internationalized action "actionName"

Parameter

actionName Beschriftung des Buttons in der Aktionsbox

Aktion

Startet eine Aktion mit dem übergebenen Namen aus der Aktionsbox.

Beispiel

GROOVY
start internationalized action "Kampagne anlegen"

copy dataset

Kopiert den Datensatz ohne Dokumentenzuordnung und verknüpft diesen mit dem Original.


copy activities with copies

Kopiert sowohl die Aktivität als auch zugeordnete Dokumente. Verknüpft anschließend die Kopien der Dokumente und die ursprüngliche Aktivität mit dem neuen Datensatz.


copy activity with documents

Kopiert die Aktivität mit den bestehenden Dokumentenzuordnungen und verknüpft die Kopie mit dem Original. 


copy activity without documents

Kopiert die Aktivität ohne Dokumentenzuordnung und verknüpft die Kopie mit dem Original.


Überprüfen


current view should be parameter

Parameter

parameter listview | detailmask | bpm user task | searchmask | mail | desktop

Aktion

Prüft, ob die aktuelle Ebene ein(e) Listenansicht|Detailmaske|BPM-Usermaske|Suchmaske|E-Mail|der CRM-Desktop ist. Über die zweite Variante "belong to" ist es möglich, zu prüfen, ob die Ebene zur gewünschten Entität gehört.

Beispiel

GROOVY
open entity "Activity"
current view should be detailmask|searchmask|bpm user task|listview|desktop
current view should belong to "Activity"    // aktuelle Ebene gehört zu Entität "Activity"

current view should belong to EntityName

Parameter

EntityName technischer Name der zu prüfenden Entität

Aktion

Prüft, ob die aktuell geöffnete Maske zu einer definierten Entität gehört.

Beispiel

GROOVY
open entity "Activity"
current view should belong to "Activity"    // aktuelle Ebene gehört zu Entität "Activity"

Die zugehörige Entität von Suchmaske/Listenansicht kann mit dem Keyword "current view belongs to EntityName" nicht überprüft werden.


field "fieldName" should be value

Dies ist die allgemeine Variante des Keywords, da der genaue Feldtyp nicht angegeben werden muss, sondern von Test-Studio selbstständig ermittelt wird.

Parameter

fieldName Name des zu prüfenden Datumsfeldes

value gewünschter Wert

Aktion

Prüft das angegebene Datumsfeld auf einen gewünschten Wert. Folgende Werte können verwendet werden:

  • "Wert": Tatsächlicher Wert des Feldes

  • enabled / disabled: Schreibbar / gesperrt

  • visible / invisible: Sichtbar / ausgeblendet auf der Maske

  • mandatory / nonmandatory: Pflichtfeld / kein Pflichtfeld

  • blank / filled: Feld vollständig geleert (bei Nachschlagefeldern bedeutet dies, dass nicht einmal der Leerschlüssel eIngetragen ist) / irgendein Wert steht drin (das schließt den Leerschlüssel mit ein)

  • emptykey / anything: Der Leerschlüssel ist eingetragen / irgendein Wert, der nicht der Leerstring oder der Leerschlüssel ist, steht in dem Feld .
    (Warnung) Steht nur bei Nachschlagefeldern zur Verfügung. Erzeugt auf anderen Feldern eine Fehlermeldung.


datefield "fieldName" should be value

Parameter

fieldName Name des zu prüfenden Datumsfeldes

value gewünschter Wert

Aktion

Prüft das angegebene Datumsfeld auf einen gewünschten Wert. Folgende Werte können verwendet werden:

  • "Wert": Tatsächlicher Wert des Datumsfeldes

  • enabled / disabled: Schreibbar / gesperrt

  • visible / invisible: Sichtbar / ausgeblendet auf der Maske

  • mandatory / nonmandatory: Pflichtfeld / kein Pflichtfeld

  • blank / filled: Feld vollständig geleert (bei Nachschlagefeldern bedeutet dies, dass nicht einmal der Leerschlüssel eIngetragen ist) / irgendein Wert steht drin (das schließt den Leerschlüssel mit ein)

Ist nicht der gewünschte Wert eingetragen bzw. das Feld im gewünschten Status, wird dies als Fehler gewertet.

Beispiel

GROOVY
datefield "BeginDate.Activity" should be enabled    // schreibbar
datefield "EndDate.Activity" should be "24.12.2018" // 24.12.2018 als Datum im Feld eingetragen
datefield "EndDate.Activity" should be "24.12.2018 12:00"   // 24.12.2018 12:00 als Datum mit Uhrzeit im Feld eingetragen
datefield "Begin.Activity" should be mandatory  // Pflichtfeld

lookupfield "fieldName" should be value

Parameter

fieldName Name des zu prüfenden Nachschlagefeldes

value gewünschter Wert/Eigenschaft

Aktion

Prüft das angegebene Nachschlagefeld auf einen gewünschten Wert. Folgende Werte können verwendet werden:

  • "Wert": Tatsächlicher Wert des Feldes

  • enabled / disabled: Schreibbar / gesperrt

  • visible / invisible: Sichtbar / ausgeblendet auf der Maske

  • mandatory / nonmandatory: Pflichtfeld / kein Pflichtfeld

  • blank / filled: Feld vollständig geleert (bei Nachschlagefeldern bedeutet dies, dass nicht einmal der Leerschlüssel eIngetragen ist) / irgendein Wert steht drin (das schließt den Leerschlüssel mit ein)

  • emptykey / anything: Der Leerschlüssel ist eingetragen / irgendein Wert, der nicht der Leerstring oder der Leerschlüssel ist, steht in dem Feld . 

Ist nicht der gewünschte Wert eingetragen bzw. das Feld im gewünschten Status, wird dies als Fehler gewertet.

Beispiel

GROOVY
lookupfield "DefaultContactPerson.Activity" should be enabled   // schreibbar
lookupfield "DefaultContactPerson.Activity" should be "MUSTERMANN"  // MUSTERMANN als Schlüssel im Feld eingetragen
lookupfield "DefaultContactPerson.Activity" should be mandatory // Pflichtfeld

textfield "fieldName" should be value

Parameter

fieldName Name des zu prüfenden Feldes

value gewünschter Wert

Aktion

Prüft das angegebene Feld (Text, Zahl, Boolean) auf einen gewünschten Wert. Folgende Werte können verwendet werden:

  • "Wert": Tatsächlicher Wert des Feldes

  • enabled / disabled: Schreibbar / gesperrt

  • visible / invisible: Sichtbar / ausgeblendet auf der Maske

  • mandatory / nonmandatory: Pflichtfeld / kein Pflichtfeld

  • blank / filled: Feld vollständig geleert (bei Nachschlagefeldern bedeutet dies, dass nicht einmal der Leerschlüssel eIngetragen ist) / irgendein Wert steht drin (das schließt den Leerschlüssel mit ein)

Ist nicht der gewünschte Wert eingetragen bzw. das Feld im gewünschten Status, wird dies als Fehler gewertet.

Beispiel

GROOVY
textfield "Subject.Activity" should be enabled  // schreibbar
textfield "Subject.Activity" should be "Betreffzeile"   // Betreffzeile als Text im Feld eingetragen
textfield "Subject.Activity" should be mandatory    // Pflichtfeld

label "theLabel" should be value

Parameter

theLabel interner Name des Labels (Eigenschaft Name im GUI Builder)
value gewünschter Wert

Aktion

Prüft das angebene Label auf einen gewünschten Wert. Folgende Werte können verwendet werden:

  • "someValue": Angezeigter Text

  • visible / invisible: Sichtbar / ausgeblendet auf der Maske

Beispiel

GROOVY
label "customerSatisfaction" should be "Happy" 

label "customerSatisfaction" should be visible 
label "customerSatisfaction" should be invisible

button "buttonID" should be value

>=24.4

Parameter

buttonID interner Name des zu prüfenden Buttons
value gewünschter Wert

Aktion

Prüft das angebene Button auf einen gewünschten Wert. Folgende Werte können verwendet werden:

  • "Wert": Tatsächlicher Wert des Feldes

  • enabled / disabled: Aktiviert (Kann ich den Button anklicken?) / deaktiviert

  • visible / invisible: Sichtbar / ausgeblendet auf der Maske

Beispiel

GROOVY
button "buttonID" should be enabled
button "buttonID" should be disabled
button "buttonID" should be visible
button "buttonID" should be invisible
button "buttonID" should be "Click me!"

action "actionID" should be value

>=24.4

Parameter

actionID interner Name des zu prüfenden Aktionsboxschalters
value gewünschter Wert

Aktion

Prüft den angebenen Aktionsboxschalter auf einen gewünschten Wert. Folgende Werte können verwendet werden:

  • "Wert": Tatsächlicher Wert des Feldes

  • enabled / disabled: Aktiviert (Kann ich den Button anklicken?) / deaktiviert

  • visible / invisible: In der Aktionsbox sichtbar / nicht sichtbar

Beispiel

GROOVY
action "actionID" should be enabled
action "actionID" should be disabled
action "actionID" should be visible
action "actionID" should be invisible
action "actionID" should be "Click me!"

advanced right template should contain { group "groupName" permitted values }

Parameter

groupName der zu prüfenden Gruppe
values read, write, confidential, edit

Aktion

Prüft für jede angegebene Gruppe die Rechte auf dem derzeitigen Datensatz:

  • "Werte": Liste aller Rechte welche die jeweilige Gruppe besitzt. Alle nicht angegebenen Rechte werden auf fehlendes Recht geprüft.

  • read: Die Gruppe besitzt Leserecht

  • write: Die Gruppe besitzt Schreibrecht

  • confidential: Die Gruppe besitzt das Recht für vertrauliche Felder

  • edit: Die Gruppe darf Rechte auf dem Datensatz ändern

Beispiel

GROOVY
advanced right template should contain {
	group "ADMINISTRATION" permitted read, write, confidential, edit
	group "default" permitted read, write, edit
	group "GUEST" permitted read, write
	group "USERS" permitted read, write
}

advanced right template should not contain groups values

Parameter

values Name aller Gruppen, welche der Datensatz nicht enthalten soll.

Aktion

Prüft für jede angegebene Gruppe ob diese im Rechtedialog eines Datensatzes unter den Tab 'Erweitert' gefunden werden kann.

Beispiel

GROOVY
advanced right template should not contain groups "DOESNOTEXIST", DOESNOTEXISTASWELL"

current view should be mail

>=24.3

Beispiel

CODE
current view should be mail

Navigation


go back

Parameter

Keine

Aktion

Geht in der CRM-History einen Eintrag zurück. Mit dieser Aktion ist es zum Beispiel möglich aus einer im Unterbereich geöffneten Entität wieder zurück auf die ursprüngliche Entität zu springen.
Die Funktionalität entspricht der des rot markierten Buttons, siehe Screenshot.

Beispiel

GROOVY
go back

close level (and save|discard)

Parameter

Keine

Aktion

Schließt die aktuelle Ebene. Falls diese ein geänderter Datensatz ist, besteht die Möglichkeit die Änderungen mit save zu speichern oder mit discard zu verwerfen.

Beispiel

GROOVY
close level
close level and save
close level and discard 

Der Zusatz “and save/discard” ist nicht zum Schließen von Maildialogen geeignet. Hierfür ist die Kombination close level + pick task option YES zu verwenden.


open subdata entity "entityName"

Parameter

entityName Name der Entität

Aktion

Öffnet eine Entität aus dem Unterbereich.

Beispiel

GROOVY
open subdata entity "Activity"
open subdata entity "Activity" using "rCoPeAc|interner Relationsname"

open subdata searchmask

Parameter

Keine

Aktion

Öffnet die Suche für die verknüpften Datensätze der im Unterbereich ausgewählten Entität.

Beispiel

GROOVY
open subdata searchmask

Abbildung


open linked dataset from "fieldName"

Parameter

fieldName interner Name des Nachschlagefeldes

Aktion

Öffnet einen verknüpften Datensatz basierend auf dem angegebenen Feldnamen. Dies funktioniert nur auf Nachschlagefeldern.

Beispiel

GROOVY
open linked dataset from "DefaultContactPerson.Activity"

Abbildung

grafik-20240104-124427.png

Zuordnungsbrowser


assign (all|rows) datasets found using {searchCriteria}

Parameter

all|Zahl|Zahlenfolge Angabe, welche Zeilen zugeordnet werden sollen

  • all alle Datensätze, die gefunden werden

  • Zahl ein Index für die Zeile, deren Datensatz zugeordnet werden soll.
     (Warnung) 0 ist die erste Zeile

  • Bereich Start..Ende (z.B. 1..4) Alle indizes zwischen Start und Ende (einschließend)

  • Zahl und Bereich Können kombiniert werden, z.B. 1, 4, 7 .. 13

searchCriteria Suchkriterien für die Suche 

Aktion

Ordnet alle/einige Datensätze zu, die die Suchbedingungen erfüllen.

Beispiel

GROOVY
assign all datasets found using {
   textfield "Subject.Activity": "*"
   // other search criteria
}

// Nur bestimmte Zeilen
assign 1,4,7..13 datasets found using {
    // Suchkriterien
}

assign (all|rows) datasets with attributes {attributes} found using {searchCriteria}

Parameter

Zusätzlich zu denen von assign (all|rows) datasets found using {searchCriteria}:

attributes Werte für den Beziehungstyp

Aktion

Ordnet alle/einige Datensätze zu, die die Suchbedingungen erfüllen, und setzt den Beziehungstyp auf attributierten Relationen.

Beispiel

GROOVY
//Aktivitäten über den Unterbereich eines Mitarbeiters zuordnen:
assign all datasets with attributes {
   booleanfield 'DelegatedToFlag.Activity': true
   lookup "RelationTypeKeyEm.Activity": "BCC"
} found using {
   textfield "Subject.Activity": "*"
   // other search criteria
}

//Verknüpfen eines Geschäftspartners zu einem Projekt mit der Projektrolle Anlagenbetreiber:
assign all datasets with attributes {
	lookup "ProjectRoleKey.Customer" : "ANLAGENBETREIBER"
} found using {
	field "Name1.Customer" : "Meier"
}

Schlüssel


resolve key name of "somePrimaryKey"

Parameter

somePrimaryKey eindeutiger PK des Schlüssels

Aktion

Namen von Schlüsseln können dynamisch aus dem Testsystem ausgelesen werden und in Variablen gespeichert werden. Der jeweilige Schlüssel wird dabei über seinen Primärschlüssel identifiziert

Das Keyword steht ab Version 21.2.09 zur Verfügung. Um die Verständlichkeit der Tests nicht zu beeinträchtigen, empfehlen wir, das Keyword sparsam und primär beim Modulbau in C1 einzusetzen.

Übersteuerungen von C0-Schlüsseln über Anwendungsvariablen werden bei diesem Mechanismus ebenfalls berücksichtigt.

Beispiel

CODE
@Shared
def aktivitaetInArbeit = resolve key name of 'S_ACTSTATUS-A' //A

@Shared 
def strom = resolve key name of 'c51v611baip25hgS_Keytab' //01 BITTE AENDERN

resolve key description of "somePrimaryKey"

Parameter

somePrimaryKey eindeutiger PK des Schlüssels

Aktion

Beschreibungen von Schlüsseln können dynamisch aus dem Testsystem ausgelesen werden und in Variablen gespeichert werden. Der jeweilige Schlüssel wird dabei über seinen Primärschlüssel identifiziert

Das Keyword steht ab Version 21.2.09 zur Verfügung. Um die Verständlichkeit der Tests nicht zu beeinträchtigen, empfehlen wir, das Keyword sparsam und primär beim Modulbau in C1 einzusetzen.

Übersteuerungen von C0-Schlüsseln über Anwendungsvariablen werden bei diesem Mechanismus ebenfalls berücksichtigt.

Beispiel

CODE
@Shared
def aktivitaetInArbeit = resolve key description of 'S_ACTSTATUS-A' //In Arbeit

@Shared 
def strom = resolve key description of 'c51v611baip25hgS_Keytab' //Strom

Vorbereitung


Es gibt die Möglichkeit Variablen mit bestimmten dynamischen Werten zu füllen. Diese Variablen werden nach dem Testnamen und vor dem ersten Testschritt deklariert, um diese an späterer Stelle des Testfalls verwenden zu können.

generate unique identifier 

>=24.3

Generiert einen eindeutigen Bezeichner, um diesen Variable anschließend in den Testschritten verwenden zu können.

Beispiel

CODE
@Shared
def myIdentifier = generate unique identifier

@Shared
def myName = "myName $myIdentifier"

generate unique IBAN

>=24.3

Generiert eine eindeutige IBAN.

Beispiel

CODE
@Shared
def myIban = generate unique IBAN

resolve current date

>=24.3

Ermittelt das aktuelle Datum des Systems.

Dies kann zu einem Fehler führen, wenn die Variable um 11:59:50 ermittelt wird, der Testfall jedoch z. B. eine neue Aktivität um 12.01:10 erstellt und dann versucht das Erstelldatum der Aktivität mit der Variable zu vergleichen. Darüber hinaus wird das Datum des Systems ermittelt, wo das Test-Studio gestartet wurde. Wenn ein Server in einer anderen Zeitzone zum Testen genutzt wird, kann es ebenfalls zu Fehlern kommen. (Sehr unwahrscheinlich)

Beispiel

CODE
@Shared
def currentDate = resolve current date
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.