View a markdown version of this page

Beschleunigung von Appium-based 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-based 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 branchenüblichen Best Practices, treffen jedoch möglicherweise nicht auf Ihre Situation zu. Zur Feinabstimmung der Parameter des Appium-Servers können Sie die Standard-Appium-Funktionen in Ihrer Testspezifikation anpassen. Im Folgenden wird beispielsweise die usePrebuildWDA Funktion true in einer iOS-Testsuite auf „in“ gesetzt, um die anfängliche Startzeit zu verkürzen:

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-Funktionen muss es sich um eine JSON-Struktur mit Shell-Escapes in Anführungszeichen handeln.

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 beendet wird, sodass praktisch keinerlei Bereinigungen durchgeführt werden. fullResetdeinstalliert und löscht alle Anwendungsdaten vom Gerät, nachdem die Sitzung geschlossen wurde. Weitere Informationen finden Sie unter Reset Strategies 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 zu Problemen bei einigen XPath-based Testsuiten führen, da die Hierarchie des UI-Layouts geändert wurde.

skipUnlock(Nur Android)

Informiert Appium darüber, dass derzeit kein PIN-Code eingerichtet ist, wodurch Tests nach einem Ereignis, das den Bildschirm ausschaltet oder einem anderen Sperrenereignis erfolgt, beschleunigt werden.

webDriverAgentUrl(Nur iOS)

Weist Appium an, davon auszugehen, dass eine wichtige iOS-Abhängigkeit bereits läuft und für die Annahme von HTTP-Anfragen unter der angegebenen URL verfügbar ist. webDriverAgent Wenn Appium noch webDriverAgent nicht läuft, kann es zu Beginn einer Testsuite einige Zeit dauern, bis Appium die gestartet hat. webDriverAgent Wenn Sie webDriverAgent selbst beginnen und http://localhost:8100 beim Start von Appium die Option 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 auf dem lokalen Port 8100 des Geräts zu beginnen webDriverAgent und sie dann an den lokalen Port des Testhosts weiterzuleiten 8100 (so 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 der Appium- und 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 diese 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