Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Velocizzare Appium-based i test in Device Farm grazie alle funzionalità desiderate
Quando usi Appium, potresti scoprire che la suite di test in modalità standard è molto lenta. Questo perché Device Farm applica le impostazioni predefinite e non fa ipotesi su come si desidera utilizzare l'ambiente Appium. Sebbene queste impostazioni predefinite siano basate sulle migliori pratiche del settore, potrebbero non essere applicabili alla tua situazione. Per ottimizzare i parametri del server Appium, puoi regolare le funzionalità di Appium predefinite nelle specifiche di test. Ad esempio, quanto segue imposta la usePrebuildWDA funzionalità di una suite di test iOS per true accelerare l'ora di avvio iniziale:
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 &
Le funzionalità di Appium devono essere una struttura JSON citata con escape dalla shell.
Le seguenti funzionalità di Appium sono fonti comuni di miglioramento delle prestazioni:
noResetefullReset-
Queste due funzionalità, che si escludono a vicenda, descrivono il comportamento di Appium al termine di ogni sessione. Quando
noResetè impostato sutrue, il server Appium non rimuove i dati dall'applicazione al termine di una sessione Appium, di fatto non esegue alcuna pulizia.fullResetdisinstalla e cancella tutti i dati dell'applicazione dal dispositivo dopo la chiusura della sessione. Per ulteriori informazioni, consulta Reset Strategiesnella documentazione di Appium. ignoreUnimportantViews(Solo Android)-
Indica ad Appium di comprimere la gerarchia dell'interfaccia utente di Android solo nelle visualizzazioni pertinenti per il test, accelerando la ricerca di determinati elementi. Tuttavia, ciò può interrompere alcune suite di XPath-based test perché la gerarchia del layout dell'interfaccia utente è stata modificata.
skipUnlock(solo Android)-
Informa Appium che non è attualmente impostato alcun codice PIN, il che accelera i test dopo un evento di spegnimento dello schermo o un altro evento di blocco.
webDriverAgentUrl(solo iOS)-
Indica ad Appium di assumere che una dipendenza iOS essenziale sia già in esecuzione e disponibile per accettare richieste HTTP all'URL specificato.
webDriverAgentSewebDriverAgentnon è già attivo e funzionante, Appium può impiegare del tempo all'inizio di una suite di test per avviare il.webDriverAgentSe lo avviiwebDriverAgentda solo e lowebDriverAgentUrlimposti suhttp://localhost:8100quando avvii Appium, puoi avviare la tua suite di test più velocemente. Nota che questa funzionalità non dovrebbe mai essere utilizzata insieme allauseNewWDAfunzionalità.È possibile utilizzare il codice seguente per iniziare
webDriverAgentdal file delle specifiche di test sulla porta locale del dispositivo8100, quindi inoltrarlo alla porta locale dell'host del test8100(ciò consentewebDriverAgentUrldi impostare il valore suhttp://localhost:8100). Questo codice deve essere eseguito durante la fase di installazione dopo aver definito qualsiasi codice per l'impostazione di Appium e delle variabili diwebDriverAgentambiente:# 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 &Quindi, puoi aggiungere il seguente codice al tuo file delle specifiche di test per assicurarti che
webDriverAgentsia stato avviato correttamente. Questo codice deve essere eseguito alla fine della fase di pre-test dopo aver verificato che Appium sia stato avviato correttamente:# 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;
Per ulteriori informazioni sulle funzionalità supportate da Appium, vedi Appium Desired Capabilities nella documentazione di Appium.
Per altri modi per estendere la suite di test e ottimizzare i test, consulta. Estensione degli ambienti di test personalizzati in Device Farm