透過所需的功能加速 Device Farm 中的 Appium 型測試 - AWS Device Farm

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

透過所需的功能加速 Device Farm 中的 Appium 型測試

使用 Appium 時,您可能會發現標準模式測試套件非常慢。這是因為 Device Farm 會套用預設設定,並且不會針對您想要如何使用 Appium 環境做出任何假設。雖然這些預設值是以產業最佳實務為基礎建置,但可能不適用於您的情況。若要微調 Appium 伺服器的參數,您可以調整測試規格中的預設 Appium 功能。例如,下列 會將 iOS 測試套件true中的 usePrebuildWDA 功能設定為 ,以加快初始開始時間:

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 &

Appium 功能必須是 Shell 逸出的引用JSON結構。

下列 Appium 功能是效能改善的常見來源:

noResetfullReset

這兩個功能是互斥的,描述每個工作階段完成後 Appium 的行為。當 noReset 設定為 時true,Appium 伺服器不會在 Appium 工作階段結束時從您的應用程式移除資料,而有效地不進行任何清理。 會在工作階段關閉後從裝置fullReset解除安裝並清除所有應用程式資料。如需詳細資訊,請參閱 Appium 文件中的重設策略

ignoreUnimportantViews (僅限 Android)

指示 Appium 僅將 Android UI 階層壓縮至測試的相關檢視,以加速某些元素查詢。不過,由於 UI 版面配置的階層已變更,因此可能會中斷某些 XPath型測試套件。

skipUnlock (僅限 Android)

告知 Appium 目前未設定PIN程式碼,這會加速螢幕關閉事件或其他鎖定事件後的測試。

webDriverAgentUrl (僅限 iOS)

指示 Appium 假設基本的 iOS 相依性 已在執行webDriverAgent中,並可用於在指定的 接受HTTP請求URL。如果 webDriverAgent 尚未啟動並執行,則在測試套件開始時可能需要一段時間才能啟動 webDriverAgent。如果您在啟動 Appium http://localhost:8100webDriverAgent啟動 並webDriverAgentUrl設定為 ,則可以更快地啟動測試套件。請注意,此功能絕不應與useNewWDA功能搭配使用。

您可以使用下列程式碼webDriverAgent從裝置本機連接埠 的測試規格檔案開始8100,然後將其轉送至測試主機的本機連接埠 8100(這可讓您將 webDriverAgentUrl的值設定為 http://localhost:8100)。此程式碼應在定義任何用於設定 Appium 和webDriverAgent環境變數的程式碼之後,於安裝階段執行:

# 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 &

然後,您可以將下列程式碼新增至測試規格檔案,以確保 成功webDriverAgent啟動。在確保 Appium 成功啟動之後,此程式碼應在測試前階段結束時執行:

# 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;

如需 Appium 支援功能的詳細資訊,請參閱 Appium 文件中的 Appium 預期功能

如需擴展測試套件和最佳化測試的更多方法,請參閱 在 Device Farm 中擴展自訂測試環境