Der PowerShell-Agent stellt mehrere Objekte für PowerShell-Skripte zur Verfügung:
-
variables - Array von aqua.ProcessEngine.WebServiceProxy.VariableValue Objekten, die Testfallvariablen (und ihre Werte) für die Ausführung beinhaltet. Name und Value sind die wichtigsten Eigenschaften für VariableValue
-
tempDir - String Variable, die den Pfad des temporären Verzeichnisses enthält, in dem Skriptanhänge gespeichert wurden (wenn vorhanden)
-
aquaCallback - Verweis auf das AquaShellCallbackHelper Objekt, dass genutzt werden kann, um mit aqua vom PowerShell-Skript zu kommunizieren. Die verfügbare Funktionalität beinhaltet:
-
Senden von Log-Nachrichten nach aqua (auch mit Screenshots)
-
Senden von Anhängen nach aqua (gespeichert als Anhänge im Ausführungsobjekt)
-
StopRequest Eigenschaft - wird bei Abbruchanfragen, die von aqua erhalten werden, vom Agenten gesetzt. Lang laufende Skripte sollten diesen Flag periodisch überprüfen und langsam stoppen, wenn gesetzt. Wenn nicht nach 5 Sekunden gestoppt wird, nachdem dieser Flaf gesetzt wurde, macht der Agent einen Forced Stop des laufenden Skripts.
Um exponierte Objekte zu nutzen, muss das PowerShell-Skript ihre Benutzung deklarieren, indem der folgende Befehl eingegeben wird:
param($variables, $tempDir, $aquaCallback)
Beachten Sie, dass alle genutzten Variablen in einem einzelnen "param"-Befehl deklariert werden müssen. Ein Beispielskript, dass diese Objekte benutzt:
# Beispiel PowerShell Skript, dass .NET Objekte und Testfallvariablen von aqua benutzt
param($variables, $tempDir, $aquaCallback)
$text = new-object System.Text.StringBuilder
$date = [System.DateTime]::Now
$text.AppendLine($date.ToLongDateString())
$text.AppendLine($date.ToLongTimeString())
echo "$text" > script-sample.log
foreach ($var in $variables)
{
$varName = $var.Name
$varValue = $var.Value
echo "Variable: $varName : $varValue" >> script-sample.log
}
# Mögliche Typen von [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]
# SUTError, ScriptExecutionError, PreparationError, ExecutionError, InformationalInfo, InformationalDebug, InformationalWarn, InformationalSuccess
$aquaCallback.SendMessage("hello, I was sent from script", [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalWarn, "my category");
$aquaCallback.SendMessageWithScreenshot("and this is Screenshot", "c:\sample.jpg", [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalWarn, "my category");
dir $tempDir >> script-sample.log
$aquaCallback.AddExecutionAttachment("script-sample.log");
while ($true)
{
if ($aquaCallback.StopRequest)
{
$aquaCallback.SendMessage("Aborting on StopRequest", [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalWarn, "my category");
return "Aborted"
}
Start-Sleep -s 10
aquaCallback.SendMessage("Looping in PowerShell…", [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalWarn, "my category");
}
# Gibt den Status der Skriptausführung zurück. Einen von: Ready, Blocked, Fail, Aborted (Bereit, Blockiert, Gescheitert, Abgebrochen)
39. return "Ready"