Beschleunigung von Appium-basierten Tests in Device Farm durch die gewünschten Funktionen - AWS Device Farm

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beschleunigung von Appium-basierten Tests in Device Farm durch die gewünschten Funktionen

Wenn Sie Appium verwenden, stellen Sie möglicherweise fest, dass die Testsuite im Standardmodus sehr langsam ist. Dies liegt daran, dass Device Farm die Standardeinstellungen anwendet und keine Annahmen darüber trifft, wie Sie die Appium-Umgebung verwenden möchten. Diese Standardeinstellungen basieren zwar auf den bewährten Methoden der Branche, gelten jedoch möglicherweise nicht für Ihre Situation. Um die Parameter des Appium-Servers zu optimieren, können Sie die Standardfunktionen von Appium in Ihrer Testspezifikation anpassen. Im Folgenden wird beispielsweise die usePrebuildWDA Fähigkeit true in einer iOS-Testsuite auf festgelegt, um die anfängliche Startzeit zu beschleunigen:

phases: pre_test: - # ... Start up Appium - >- appium --log-timestamp --default-capabilities "{\"usePrebuiltWDA\": true, \"derivedDataPath\":\"$DEVICEFARM_WDA_DERIVED_DATA_PATH\", \"deviceName\": \"$DEVICEFARM_DEVICE_NAME\", \"platformName\":\"$DEVICEFARM_DEVICE_PLATFORM_NAME\", \"app\":\"$DEVICEFARM_APP_PATH\", \"automationName\":\"XCUITest\", \"udid\":\"$DEVICEFARM_DEVICE_UDID_FOR_APPIUM\", \"platformVersion\":\"$DEVICEFARM_DEVICE_OS_VERSION\"}" >> $DEVICEFARM_LOG_DIR/appiumlog.txt 2>&1 &

Bei Appium-Fähigkeiten muss es sich um eine Shell-Escape-Struktur mit Anführungszeichen handeln. JSON

Die folgenden Appium-Funktionen sind häufig Quellen für Leistungsverbesserungen:

noReset und fullReset

Diese beiden Funktionen, die sich gegenseitig ausschließen, beschreiben das Verhalten von Appium nach Abschluss jeder Sitzung. Wenn auf gesetzt noReset isttrue, entfernt der Appium-Server keine Daten aus Ihrer Anwendung, wenn eine Appium-Sitzung endet, und führt praktisch keine Bereinigung durch. fullResetdeinstalliert und löscht alle Anwendungsdaten vom Gerät, nachdem die Sitzung geschlossen wurde. Weitere Informationen finden Sie unter Reset-Strategien in der Appium-Dokumentation.

ignoreUnimportantViews(Nur Android)

Weist Appium an, die Hierarchie der Android-Benutzeroberfläche nur auf die für den Test relevanten Ansichten zu komprimieren, wodurch die Suche nach bestimmten Elementen beschleunigt wird. Dies kann jedoch einige XPath basierte Testsuiten beschädigen, da die Hierarchie des UI-Layouts geändert wurde.

skipUnlock(Nur Android)

Informiert Appium darüber, dass derzeit kein PIN Code festgelegt ist, was Tests nach einem Ausschalten des Bildschirms oder einem anderen Sperreneignis beschleunigt.

webDriverAgentUrl(nur iOS)

Weist Appium an, davon auszugehen, dass eine wichtige iOS-Abhängigkeit,webDriverAgent, bereits läuft und für die Annahme von HTTP Anfragen an den angegebenen Bedingungen verfügbar ist. URL Wenn Appium noch webDriverAgent nicht betriebsbereit ist, kann es zu Beginn einer Testsuite einige Zeit dauern, bis Appium gestartet ist. webDriverAgent Wenn Sie webDriverAgent selbst starten und http://localhost:8100 beim Start von Appium webDriverAgentUrl auf einstellen, können Sie Ihre Testsuite schneller starten. Beachten Sie, dass diese Funktion niemals zusammen mit der useNewWDA Funktion verwendet werden sollte.

Sie können den folgenden Code verwenden, um mit Ihrer Testspezifikationsdatei am lokalen Port 8100 des Geräts zu beginnen webDriverAgent und sie dann an den lokalen Port des Testhosts weiterzuleiten 8100 (auf diese Weise können Sie den Wert auf setzen webDriverAgentUrlhttp://localhost:8100). Dieser Code sollte während der Installationsphase ausgeführt werden, nachdem der Code für die Einrichtung des Appium und der webDriverAgent Umgebungsvariablen definiert wurde:

# Start WebDriverAgent and iProxy - >- xcodebuild test-without-building -project /usr/local/avm/versions/$APPIUM_VERSION/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -derivedDataPath $DEVICEFARM_WDA_DERIVED_DATA_PATH -destination id=$DEVICEFARM_DEVICE_UDID_FOR_APPIUM IPHONEOS_DEPLOYMENT_TARGET=$DEVICEFARM_DEVICE_OS_VERSION GCC_TREAT_WARNINGS_AS_ERRORS=0 COMPILER_INDEX_STORE_ENABLE=NO >> $DEVICEFARM_LOG_DIR/webdriveragent_log.txt 2>&1 & iproxy 8100 8100 >> $DEVICEFARM_LOG_DIR/iproxy_log.txt 2>&1 &

Anschließend können Sie Ihrer Testspezifikationsdatei den folgenden Code hinzufügen, um sicherzustellen, dass sie erfolgreich webDriverAgent gestartet wurde. Dieser Code sollte am Ende der Vortestphase ausgeführt werden, nachdem sichergestellt wurde, dass Appium erfolgreich gestartet wurde:

# Wait for WebDriverAgent to start - >- start_wda_timeout=0; while [ true ]; do if [ $start_wda_timeout -gt 60 ]; then echo "WebDriverAgent server never started in 60 seconds."; exit 1; fi; grep -i "ServerURLHere" $DEVICEFARM_LOG_DIR/webdriveragent_log.txt >> /dev/null 2>&1; if [ $? -eq 0 ]; then echo "WebDriverAgent REST http interface listener started"; break; else echo "Waiting for WebDriverAgent server to start. Sleeping for 1 seconds"; sleep 1; start_wda_timeout=$((start_wda_timeout+1)); fi; done;

Weitere Informationen zu den Funktionen, die Appium unterstützt, finden Sie unter Appium Desired Capabilities in der Appium-Dokumentation.

Weitere Möglichkeiten, Ihre Testsuite zu erweitern und Ihre Tests zu optimieren, finden Sie unter. Erweiterung benutzerdefinierter Testumgebungen in Device Farm