Selenium
Die Einrichtung von Selenium mit aqua für automatisierte Tests
Diese Anleitung hilft Ihnen, Selenium mit aqua einzurichten, um automatisierte Tests in Ihrer Entwicklungsumgebung oder in BrowserStack durchzuführen. Folgen Sie den Schritten sorgfältig, um sicherzustellen, dass alle Komponenten korrekt konfiguriert sind.
Voraussetzungen
Vergewissern Sie sich, dass Sie die folgenden Dinge vorhanden sind, bevor Sie mit der Einrichtung beginnen:
aqua PowerShell-Agent
Java JDK, das auf dem Server installiert ist, auf dem der Agent ausgeführt wird
Selenium, JUnit, Hamcrest, und Apache Commons IO Bibliotheken heruntergeladen:
30MBSeleniumJunitLibs.ziparchive
aqua-Testfall mit den erforderlichen Testdaten für Browser- und Betriebssystemkonfigurationen erstellt
Selenium IDE Heruntergeladen und installierte Browser Erweiterung.
Schritte zum Einrichten und Ausführen von Tests
1. Einrichtung der Umgebung
Java JDK installieren:
Laden Sie die neueste Version von Java JDK herunter und installieren Sie sie auf dem Server, auf dem der PowerShell-Agent ausgeführt wird.
Selenium herunterladen:
Laden Sie die Selenium Java-Client-Bibliothek von der offiziellen Website von Selenium herunter.
Extrahieren Sie den Inhalt in einen Ordner namens
Selenium
innerhalb des PowerShell-Agent-Verzeichnisses.
JUnit und Hamcrest-Bibliotheken herunterladen:
Laden Sie JUnit und Hamcrest von der offiziellen JUnit Download Seite.
Legen Sie die heruntergeladenen JAR-Dateien ebenfalls in das Verzeichnis des PowerShell-Agenten.
Erstellen Sie einen leeren Ordner "Temp".
Apache Commons IO herunterladen:
Laden Sie das
org.apache.commons.io.jar
herunter und platzieren Sie es im Verzeichnis des Agenten. Stellen Sie alternativ sicher, dass es im Klassenpfad deklariert ist.
Selenium Server ausführen:
Laden Sie den Selenium Standalone-Server von der offiziellen Website von Selenium herunter.
Starten Sie den Server mit dem Befehl:
java -jar selenium-server-4.23.0.jar standalone
2. aqua konfigurieren
Anmeldung bei aqua:
melden Sie sich in aqua an.
Erstellen Sie einen Testfall:
Navigieren Sie zum Abschnitt Testfälle und erstellen Sie einen neuen Testfall.
Fügen Sie einen Testschritt hinzu:
Erstellen Sie innerhalb des Testfalls einen neuen Testschritt.
PowerShell-Automatisierung hinzufügen:
Konfigurieren Sie den Testschritt für die Verwendung von PowerShell zur Automatisierung.
PowerShell-Skript hochladen:
Kopieren Sie das in
execute.ps1
enthaltene PowerShell-Skript in den aqua PowerShell-Automatisierungsschritt.
Java-Dateien hochladen:
Laden Sie
TestLoginTest.java
als Anhang in den PowerShell-Schritt hoch. Diese Datei enthält die Testlogik und das Protokoll.
3. Einrichtung von Testdaten
Hinzufügen von Testdaten zum Testfall:
Fügen Sie die folgenden Testdatenparameter ein, um die Betriebssystem- und Browserkonfigurationen zu steuern:
BrowserName
BrowserVersion
OS
OS_Version
Diese Parameter werden in
TestLoginTest.java
verwendet, um anzugeben, in welcher Umgebung der Test laufen soll.
4. Ausführung des Tests
Starten Sie den Powershell agent.
Starten Sie die Selenium IDE Browser Erweiterung.
Starten Sie den Java-Server mit der Command Prompt.
Kompilieren Sie die Javadateien:
Stellen Sie sicher, dass das PowerShell-Skript (
execute.ps1
) die Java-Dateien mit dem Befehljavac
mit dem entsprechenden Klassenpfad kompiliert, der alle erforderlichen Bibliotheken und Klassen enthält.
Test durchführen:
Führen Sie den Test über die aqua-Schnittstelle aus. Das PowerShell-Skript wird ausgeführt, kompiliert und führt die Java-Testdateien aus.
Beispiel für ein PowerShell-Skript (execute.ps1
)
# Get Parameters from aqua
param($variables, $tempDir, $aquaCallback)
$OutputEncoding = [Console]::OutputEncoding
####################################
# Construct classpath for Selenium #
####################################
# Set Java-Classpath and send to aqua-Log
# $classpath = "C:/Program Files (x86)/Selenium/libs/libs/*;C:/Program Files (x86)/Selenium/libs/selenium-java-3.141.59.jar;"+$tempDir+";"
$classpath = $tempDir+"\..\..\hamcrest_1_3\*;"+$tempDir+"\..\..\junit_4_13\*;"+$tempDir+"\..\..\Selenium\*;"+$tempDir+"\..\..\Selenium\selenium-java-4.23.0.jar;"+$tempDir+";"
$javaFiles=Get-ChildItem -File -Filter "*.java"
$aquaCallback.SendMessage($tempDir, [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug, "PowerShell");
$aquaCallback.SendMessage("Classpath: "+$classpath, [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug, "PowerShell");
#################################################
# Inject Parameters from aqua-Variables-Manager #
#################################################
$fileStr = $tempDir+"\RemoteTest.java"
#$aquaCallback.SendMessage("File: "+$fileStr, [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug, "PowerShell");
$tempFileStr = $tempDir+"\Temp.java"
#$aquaCallback.SendMessage("Temp-File: "+$tempFileStr, [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug, "PowerShell");
foreach ($var in $variables) {
$aquaCallback.SendMessage("Set Parameter "+$var.Name+ " to "+$var.Value, [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug, "PowerShell");
$replaceString = "%"+$var.Name+"%"
Get-Content $fileStr | Foreach-Object {$_.Replace($replaceString, $var.Value)} | Set-Content $tempFileStr
If (Test-Path $fileStr){
Remove-Item $fileStr
move-item -path $tempFileStr -destination $fileStr
}
}
# replace variable %browserstack% so that settings of browserstack are used
$aquaCallback.SendMessage("Replace %browserstack% for online execution on Browserstack", [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug, "PowerShell");
Get-Content $fileStr | Foreach-Object {$_.Replace("%browserstack%", "true")} | Set-Content $tempFileStr
If (Test-Path $fileStr){
Remove-Item $fileStr
move-item -path $tempFileStr -destination $fileStr
}
################
# Compile Test #
################
# javac -encoding UTF-8 -cp "$classpath" -d . $tempDir/*.java 2>&1 > execution.log
$aquaCallback.SendMessage($PWD, [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug, "PowerShell");
javac -cp "$classpath" -d . $javaFiles 2>&1 >> execution.log
################
# Execute Test #
################
$aquaCallback.SendMessage("Going to execute selenium tests", [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug, "PowerShell");
# Run JUnit with Selenium-Script and log to test.log
java -cp "$classpath;." org.junit.runner.JUnitCore RemoteTest 2>&1 >> execution.log
########################
# Send results to aqua #
########################
# Read Execution-Result
$result = $LastExitCode
$aquaCallback.AddExecutionAttachment($tempDir+"/execution.log");
$aquaCallback.SendMessage("Execution Finished with result: "+$result, [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug, "PowerShell");
# Send Log to Attachments which is created by the java code
# If (Test-Path $tempDir+"/test.log"){
$aquaCallback.AddExecutionAttachment($tempDir+"/test.log");
# }
# Parse Log
foreach ($line in [System.IO.File]::ReadLines($tempDir+"/test.log")) {
if($started) {
if($line -cmatch "STOP") {
$started = $true;
break
}
$split = $line.Split(";");
$date = $split[0]
$level = $split[1]
$message = $split[2]
$screenshot = $split[3]
if($level -match "INFO") {
$levelstring = [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalInfo
} elseif ($level -match "DEBUG") {
$levelstring = [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug
} elseif ($level -match "ERROR") {
$levelstring = [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::ExecutionError
} elseif ($level -match "WARN") {
$levelstring = [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalWarn
} else {
$levelstring = [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::ExecutionError
}
if($screenshot) {
$aquaCallback.SendMessageWithScreenshot($message, $tempDir+"/"+$screenshot, $levelstring, "Selenium");
} else {
$aquaCallback.SendMessage($message, $levelstring, "Selenium");
}
}
# Loop for starting Line
if(!$started) {
if($line -cmatch "START") {
$started = $true;
}
}
}
# Cleanup - Does not work
Remove-Item .\screenshot* -include .png -force
Remove-Item .\* -include .class -force
Remove-Item .\test.log -force
# Return Result
if ($result -gt 0)
{
$aquaCallback.SendMessage("Failures detected. See attached log for details.", [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug, "PowerShell");
return "Fail";
}
else
{
$aquaCallback.SendMessage("All tests passed.", [aqua.ProcessEngine.WebServiceProxy.ExecutionLogMessageType]::InformationalDebug, "PowerShell");
return "Ready"
}
Hinweise
Stellen Sie sicher, dass die Pfade im PowerShell-Skript korrekt auf die Speicherorte der Bibliotheken Selenium, JUnit, Hamcrest und Apache Commons IO eingestellt sind.
Wenn Sie diese Schritte befolgen, werden Sie Selenium-Tests in der aqua-Umgebung erfolgreich einrichten und ausführen können.
Last updated
Was this helpful?