

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

# 在 Device Farm 中自動執行 Appium 測試
<a name="test-types-appium"></a><a name="test-types-ios-appium-java-testng"></a><a name="test-types-ios-appium-java-junit"></a><a name="test-types-ios-appium-python"></a><a name="test-types-ios-appium-ruby"></a><a name="test-types-ios-appium-node"></a><a name="test-types-android-appium-java-testng"></a><a name="test-types-android-appium-java-junit"></a><a name="test-types-android-appium-python"></a><a name="test-types-android-appium-ruby"></a><a name="test-types-android-appium-node"></a><a name="test-types-web-app-appium-java-testng"></a><a name="test-types-web-app-appium-java-junit"></a><a name="test-types-web-app-appium-python"></a><a name="test-types-web-app-appium-ruby"></a><a name="test-types-web-app-appium-node"></a>

**注意**  
此頁面涵蓋在 Device Farm 的受管**伺服器端**執行環境中執行 Appium 測試。若要在遠端存取工作階段期間從本機**用戶端**環境執行 Appium 測試，請參閱[用戶端 Appium 測試](appium-endpoint.md)。

本節說明如何設定、封裝和上傳 Appium 測試，以便在 Device Farm 的受管伺服器端環境中執行。Appium 是一種開放原始碼工具，用於自動化原生和行動 Web 應用程式。如需詳細資訊，請參閱 [Appium 網站上的 Appium 簡介](http://appium.io/docs/en/latest/intro)。

如需範例應用程式和工作測試的連結，請參閱 GitHub 上的適用於 [Android 的 Device Farm Sample App](https://github.com/aws-samples/aws-device-farm-sample-app-for-android) 和[適用於 iOS 的 Device Farm Sample App](https://github.com/aws-samples/aws-device-farm-sample-app-for-ios)。

如需在 Device Farm 中測試及伺服器端運作方式的詳細資訊，請參閱 [AWS Device Farm 中的測試架構和內建測試](test-types.md)。

## 選取 Appium 版本
<a name="w2aac24c15c41"></a>

**注意**  
 支援特定的 Appium 版本、Appium 驅動程式或程式設計 SDKs 將取決於為測試執行選取的裝置和測試主機。

 Device Farm 測試主機已預先安裝 Appium，以便針對更直接的使用案例更快速地設定測試。不過，使用測試規格檔案可讓您視需要安裝不同版本的 Appium。

### 案例 1：預先設定的 Appium 版本
<a name="w2aac24c15c41b7b1"></a>

 Device Farm 根據測試主機預先設定不同的 Appium 伺服器版本。主機隨附工具，可啟用具有裝置平台預設驅動程式的預先設定版本 （適用於 Android 的 UiAutomator2 和適用於 iOS 的 XCUITest)。

```
phases:
  install:
    commands:
      - export APPIUM_VERSION=2
      - devicefarm-cli use appium $APPIUM_VERSION
```

 若要檢視支援的軟體清單，請參閱 上的 主題[自訂測試環境中支援的軟體](custom-test-environments-hosts-software.md)。

### 案例 2：自訂 Appium 版本
<a name="w2aac24c15c41b7b3"></a>

 若要選取自訂版本的 Appium，請使用 `npm`命令來安裝它。下列範例示範如何安裝最新版的 Appium 2。

```
phases:
  install:
    commands:
      - export APPIUM_VERSION=2
      - npm install -g appium@$APPIUM_VERSION
```

### 案例 3：舊版 iOS 主機上的 Appium
<a name="w2aac24c15c41b7b5"></a>

 在 上[舊版 iOS 測試主機](custom-test-environments-hosts-ios.md#legacy-ios-host)，您可以選擇具有 的特定 Appium 版本`avm`。例如，若要使用 `avm`命令將 Appium 伺服器版本設定為 `2.1.2`，請將這些命令新增至您的測試規格 YAML 檔案。

```
phases:
  install:
    commands:
      - export APPIUM_VERSION=2.1.2
      - avm $APPIUM_VERSION
```

## 為 iOS 測試選取 WebDriverAgent 版本
<a name="test-types-appium-select-wda"></a>

 若要在 iOS 裝置上執行 Appium 測試，必須使用 WebDriverAgent。此應用程式必須經過簽署，才能安裝在 iOS 裝置上。Device Farm 提供預先簽章的 WebDriverAgent 版本，可在自訂測試環境執行期間使用。

 下列程式碼片段可用於在與 XCTestUI 驅動程式版本相容的測試規格檔案中，選取 Device Farm 上的 WebDriverAgent 版本。

```
phases:
  pre_test:
    commands:
      - |-
        APPIUM_DRIVER_VERSION=$(appium driver list --installed --json | jq -r ".xcuitest.version" | cut -d "." -f 1);
        CORRESPONDING_APPIUM_WDA=$(env | grep "DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH_V${APPIUM_DRIVER_VERSION}")
        if [[ ! -z "$APPIUM_DRIVER_VERSION" ]] && [[ ! -z "$CORRESPONDING_APPIUM_WDA" ]]; then
          echo "Using Device Farm's prebuilt WDA version ${APPIUM_DRIVER_VERSION}.x, which corresponds with your driver";
          DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH=$(echo $CORRESPONDING_APPIUM_WDA | cut -d "=" -f2)
        else
          LATEST_SUPPORTED_WDA_VERSION=$(env | grep "DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH_V" | sort -V -r | head -n 1)
          echo "Unknown driver version $APPIUM_DRIVER_VERSION; falling back to the Device Farm default version of $LATEST_SUPPORTED_WDA_VERSION";
          DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH=$(echo $LATEST_SUPPORTED_WDA_VERSION | cut -d "=" -f2)
        fi;
```

 如需 WebDriverAgent 的詳細資訊，請參閱 Appium [的文件](https://appium.github.io/appium-xcuitest-driver/9.10/guides/run-prebuilt-wda/)。