

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 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-endpoint.md) Appium 测试。

本节介绍如何配置、打包和上传您的 Appium 测试，以便在 Device Farm 的托管服务器端环境中运行。Appium 是一种开源工具，用于自动执行本机和移动合应用程序。有关更多信息，请参阅 Appium 网站上的 [Appium 简介](http://appium.io/docs/en/latest/intro)。

有关示例应用程序和工作测试链接，请参阅适用于 [Android 的 Device Farm 示例应用程序和适用于](https://github.com/aws-samples/aws-device-farm-sample-app-for-android) [iOS 的 Device Farm 示例应用程序](https://github.com/aws-samples/aws-device-farm-sample-app-for-ios) GitHub。

有关在 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 服务器版本。主机附带的工具可使用设备平台的默认驱动程序启用预配置版本（UiAutomator2 个适用于 Android，iOS 有 2 个）。 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 

 以下代码片段可用于在测试规范文件中的 De WebDriverAgent vice Farm 上选择与您的 XCTest UI 驱动程序版本兼容的版本。

```
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/)