Appium 教程

8 Jan 2025 | 11 分钟阅读
Appium Tutorial

Appium 教程提供了 Appium 自动化测试工具的基础和高级概念。我们的 Appium 教程专为初学者和专业人士设计。

在本教程中,我们将讨论以下主题


什么是 Appium?

Appium 是一款开源的自动化移动测试工具,用于测试应用程序。它由 Sauce Labs 开发和支持,用于自动化原生和混合移动应用程序。它是一款跨平台移动自动化工具,这意味着相同的测试可以在多个平台上运行。Appium 可以轻松地并行测试多个设备。

在当今的开发领域,对移动应用程序的需求很高。目前,人们正在将他们的网站转换为移动应用程序。因此,了解移动软件自动化测试技术并与新技术保持联系非常重要。Appium 是一款目前在 移动自动化测试技术 中很受欢迎的移动应用程序测试工具。

Appium 用于自动化测试 原生混合Web 应用程序。它支持在模拟器(iOS)和模拟器(Android)以及物理设备(Android 和 iOS)上进行自动化测试。以前,该工具主要专注于 IOS 和 Android 应用程序,并且仅限于移动应用程序测试。在几个更新之前,Appium 宣布它现在也将支持 Windows 的桌面应用程序测试。

Appium Tutorial

Appium 与 Selenium Webdriver 测试工具非常相似。所以,如果您已经了解 Selenium Webdriver,学习 Appium 将会非常容易。Appium 对移动设备 OS 没有依赖性,因为它有一个框架,可以将 Selenium Webdriver 命令转换为 Android 和 iOS 分别使用的 UIAutomator 和 UIAutomation 命令,这取决于设备类型而不是操作系统类型。

它支持多种语言,如 Java、PHP、Objective C、C#、Python、JavaScript(带 node.js)和 Ruby,以及更多具有 Selenium 客户端库的语言。Selenium 是 Appium 的后端,为测试需求提供 Selenium 功能控制。

Appium 的特点

  • Appium 不需要应用程序源代码或库。
  • Appium 提供了一个强大且活跃的社区。
  • Appium 具有多平台支持,即它可以在多个平台上运行相同的测试用例。
  • Appium 允许并行执行测试脚本。
  • 在 Appium 中,小的改动不需要重新安装应用程序。
  • Appium 支持 C#、Python、Java、Ruby、PHP、JavaScript(带 node.js)等多种语言,以及其他具有 Selenium 客户端库的语言。

Appium 的优点

  • Appium 是一款开源工具,意味着它是免费提供的。易于安装。
  • 它允许对混合、原生和 Web 应用程序进行自动化测试。
  • 与其他测试工具不同,您不需要在应用程序中添加任何额外的代理来使 Appium 与自动化兼容。它测试的是将要上传到 App Store 的同一个应用程序。
  • Appium 添加了一项附加功能。现在,除了移动应用程序测试之外,它还将支持 Windows 的桌面应用程序测试。
  • Appium 是一款跨平台、免费的移动测试工具,它允许我们进行跨平台移动测试。这意味着您可以在多个平台上进行测试(用于 Android 和 IOS 平台的单一 API)。

Appium 的缺点

除了一些特点和优点,Appium 也有一些缺点,如下所示:

  • 缺乏详细的报告。
  • 由于测试依赖于远程 Web 驱动程序,因此速度有些慢。
  • 这并非局限性,而是 Appium 使用 UIAutomator 进行 Android 测试(仅支持 Android SDK API 16 或更高版本)的开销。但是,Appium 支持旧版 API,但不是直接支持。它使用另一个开源库 Selendroid 来支持旧版 API。
  • 在 iOS 中,一个 Mac OS 设备上只能运行一个实例(iOS 脚本),这意味着每个 Mac 一次只能执行一个测试。如果您想同时在多个 iOS 设备上运行测试,则需要准备相同数量的 Mac 机器。但准备多台 Mac 机器会很昂贵。

解决方案:如果您在 Sauce Lab 的 移动云 中运行脚本,则可以解决此问题。目前,它允许脚本同时在多个 iOS 模拟器上运行。

Appium 架构

Appium 是一个用 node.js 编写的 HTTP 服务器。它在设备上启动一个“测试用例”,该测试用例会产生一个服务器并监听来自主 Appium 服务器的代理命令。测试人员编写测试脚本以在设备或模拟器上执行。Appium 会创建并处理多个针对 Android 和 IOS 等不同平台的 webdriver 会话。

Appium Tutorial

测试人员编写的测试脚本通过将请求发送到 Appium 服务器来在模拟器或设备上执行。每个供应商,如 IOS 或 Android,都有不同的方法和机制来在设备上执行测试用例。因此,测试用例在接收到 Appium 服务器的命令后执行。Appium 使用 JSON wire 协议向 Appium 服务器发送命令请求。

Appium 如何工作?

  • 当我们安装 Appium 时,一个服务器也会安装在我们的机器上,该服务器公开 REST API。
  • 它接收客户端的命令和连接请求,并在 iOS 或 Android 等设备上执行该命令。
  • 它以 HTTP 响应进行回复。
  • 为了执行请求,它使用移动测试自动化框架来运行应用程序的用户界面。例如 -
    • Apple Instruments 用于 iOS
    • Selendroid 用于 Android API 15 或更低版本
    • UIAutomator 用于 Android API 16 或更高版本

请记住,Appium 使用另一个开源库 Selendroid 来支持旧版 API,因为 UIAutomator 只支持 API 16 或更高版本。

现在我们将讨论 Appium 在不同平台上的工作方式 -

Appium 在 Android 上

在 Android 上,Appium 将命令代理到一个在设备上运行的 UIAutomator 脚本。UIAutomator 是 Android 的原生 UI 自动化框架,它允许您通过命令行直接在设备上运行 Junit 测试用例。虽然它使用 Java 编程语言,但 Appium 允许从任何 WebDriver 支持的语言运行它。

Android 使用 bootstrap.jar,它充当 TCP 服务器。它用于发送测试命令以使用 UIAutomator 在 Android 设备上执行操作。

在下面的图中,可以看到 Appium 架构与 Android 自动化相关的部分 -

Appium Tutorial

Appium 在 iOS 上

就像 Android 使用 UIAutomator 一样,iOS 使用 UIAutomation。与 Android 类似,Appium 将命令代理到一个在 Mac Instruments 环境中运行的 UIAutomation 测试用例。Apple 提供了这个应用程序“Instruments”,它可以执行构建、性能分析和控制 iOS 应用程序等各种活动。另一方面,它还有一个自动化组件,您可以在其中使用 JavaScript 编写命令。它使用 UIAutomation API 与应用程序 UI 进行交互。Appium 使用相同的库来自动化 iOS 应用程序。

在下面的图中,可以看到 Appium 架构与 iOS 自动化相关的部分 -

Appium Tutorial

请注意,上图中使用 bootstrap.js 代替 bootstrap.jar。它执行我们 AUT(待测应用程序)上的操作。

移动应用程序的类型

正如我们之前讨论过的,Appium 能够处理所有类型的应用程序,即原生、混合和 Web。让我们详细了解它们 -

原生应用程序

原生应用程序是为特定平台而开发的软件程序。这些应用程序是使用特定的软件开发工具包开发的。原生应用程序是为在特定设备上使用而开发的,并且可以从 App Store(如 Google Play Store 或 Apple 的 App Store)安装。它们可以离线工作,也可以使用设备的通知系统。

一些原生应用程序的例子是 - Pinterest、Skype、Snapchat 等。

Web 应用程序

Web 应用程序不是真正的应用程序,它们是在浏览器上运行的网站。这些应用程序使用 HTML、CSS 和 JavaScript 以非常低的成本开发。与 Android 和 iOS 应用程序不同,它们不需要软件开发工具包 (SDK) 供开发人员使用。Web 应用程序不是为特定平台开发的。由于 Web 应用程序在 Web 浏览器上运行,因此它们不需要任何安装。

一些 Web 应用程序的例子是 - Flipkart、Ali Express、Twitter 等。

混合应用程序

混合应用程序是原生应用程序和 Web 应用程序的组合。与原生应用程序一样,这些应用程序可以从 App Store 下载,并且还可以利用设备功能,但实际上它们是内部的 Web 应用程序。它们使用 Web 开发语言 - HTML、CSS 和 JavaScript 进行开发,就像混合应用程序一样,这使得它们可以在任何平台上运行。

一些混合应用程序的例子是 - OLA、Instagram、Basecamp 等。

使用 Appium 的先决条件

  • 安装 Java (JDK)
  • 安装 Android Studio
  • 安装额外的 Android SDK 工具
  • 安装 Appium jar 文件
  • js (不需要 - 在安装 Appium 服务器时,它会默认附带“node.js”和“NPM”。因此,不需要单独安装 node.js 和 NPM。它已包含在当前版本的 Appium 中。)
  • 安装 Appium Desktop Client
  • 安装用于 Java 的 Eclipse IDE

在 Windows 上安装 Appium

设置 Appium 不仅仅是安装一个工具或设置几个变量。完整的 Appium 设置需要安装许多其他工具。然后 Appium 开始测试应用程序。本教程主要关注 Windows 操作系统上 Android 的 Appium 设置。

安装和设置 Java

使用 Appium,您需要编写可以与移动屏幕交互并控制移动应用程序中的字段(如文本框、按钮等)的自动化测试脚本,并且还可以对其执行操作。Java 用于编写这些自动化测试脚本。因此,下载最新版本的 JDK 并设置环境变量。

  • 下载最新版本的 Java --> https://www.oracle.com/in/java/technologies/javase-downloads.html
  • 设置 Java 环境变量。

安装和设置 Android Studio

这是下载和安装 Android Studio 最耗时的步骤之一。如果未正确完成,可能会导致 Appium 出错。在下载 Android Studio 的同时,还需要进行许多其他更改。在这里,我们建议您下载最新版本的 Android Studio。

  • 下载 Android Studio
    单击上面的链接下载最新版本的 Android Studio。双击下载的.exe文件运行。要完成安装过程,请继续使用所有默认选项并完成安装过程。Android Studio 的安装需要时间。
  • 安装额外的 Android SDK 工具
    在 Android Studio 完全安装后,您将看到 Android Studio 的主面板,如下图所示。单击右下角的“配置”下拉菜单,然后选择“SDK Manager”。
    Appium Tutorial
    将打开带有 Android SDK 的默认屏幕,在 SDK Platform 下,检查是否安装了最新版本的 Android。您也可以使用另一个 Android 版本,如果您正在使用真实的 Android 设备。
    Appium Tutorial
    在同一页面上,切换到SDK Tools并检查标记的组件是否已安装/更新。如果没有,请勾选复选框并安装它们。
    Appium Tutorial
  • 设置 Android 环境变量

Appium Desktop Client 的分步安装

现在,在安装 Java 和 Android Studio 并为两者设置环境变量后,安装 Appium Desktop Client。Appium Studio 是一个 GUI 应用程序,用于安装 Appium 服务器。它带有安装和使用 Appium 服务器的所有先决条件。它有一个检查器,用于获取有关您的移动应用程序的基本信息。在 Windows 上安装 Appium Desktop Client 的步骤如下:

步骤 1:转到以下链接 https://appium.node.org.cn/ 并单击“下载 Appium”按钮。

Appium Tutorial

步骤 2:对于 Windows OS,下载 Appium desktop setupexe 文件。所以,单击下图所示的文件。

Appium Tutorial

步骤 3:下载 exe 文件后,双击下载的文件运行。

Appium Tutorial

注意:在 Windows OS 上,您无需安装 Appium。它直接从 .exe 文件运行,而 Mac 机器需要安装 dmg。

步骤 4:在这里,您需要选择安装选项。如果您系统中有多个用户,则可以选择所有用户,否则选择仅我作为系统管理员。

选择安装选项后,单击“安装”按钮。

Appium Tutorial

这将开始安装,可能需要一些时间。

步骤 5:Appium 已成功安装在您的系统上。要完成 Appium 设置,请单击“完成”按钮。

请注意,“运行 Appium”已勾选。这将启动 Appium Desktop。

Appium Tutorial

步骤 6:现在,Appium Desktop UI 将出现在屏幕上,其中包含默认的主机端口,可以进行更改。

默认主机 - 0.0.0.0

默认端口 - 4723

单击“启动服务器”按钮并启动 Appium 服务器。

步骤 7:一个新服务器将在上一步指定的 Host 和 Port 上启动。您可以在屏幕顶部看到消息“服务器正在运行”。

Appium Tutorial

步骤 8:转到文件并单击“新建会话窗口”。

Appium Tutorial

步骤 9:在此处提供所有所需的配置,然后单击“启动会话”按钮以启动新会话。

Appium Tutorial
  • 下载用于 Java 的 Eclipse IDE
  • 在 Android 手机上开启 USB 调试
  • 下载 Eclipse 的 Appium Jar 文件
  • 在 Eclipse 中创建一个新的 Appium 项目
  • 设计测试用例以测试应用程序在 Android 设备上启动应用程序

请注意,Microsoft Windows 不支持运行 Appium Inspector。

Appium Doctor

要检查 Appium 安装和依赖项,您可以从这里 https://github.com/appium/appium-doctor 下载appium-doctor

Appium-doctor 是一个应用程序工具,用于验证 Appium 安装。它会显示您需要完成的所有缺失项。因此,当您遇到任何问题时,运行 appium-doctor 会非常有帮助。它将通过 npm 安装。

Appium 的局限性

  • Microsoft Windows 不支持运行 Appium Inspector。
  • Appium 不支持 Android 版本低于 4.2 的测试。
  • Appium 对混合应用程序的测试支持有限。例如,无法测试应用程序的切换操作,即从 Web 应用到原生应用,反之亦然。

Appium 的竞争对手

有几种可用的移动应用程序自动化测试工具,如 Robotium、Appium、Experitest、Selendroid、Kobiton 和 Testdroid 等。它们都是 Appium 的强大竞争对手。但 Selendroid 和 Robotium 是 Appium 的顶级竞争对手之一。让我们了解一些差异,看看它们是如何相互区别的。

Appium vs Robotium

  • Appium 是一款跨平台工具,同时支持 iOS 和 Android。而 Robotium 只支持 Android。
  • Appium 支持多种语言,而 Robotium 只支持 Java 编程语言。
  • Appium 不需要应用程序源代码/库,而 Robotium 工具需要应用程序源代码或库。
  • Appium 可用于测试原生、Web 和混合移动应用程序,而 Robotium 只能测试原生和混合应用程序。
  • Appium 支持许多框架,如 Selenium。但 Robotium 与 Selenium 完全不兼容。
  • 在 Appium 中,您不必为小的改动而重新安装应用程序。但 Robotium 代码会导致为小的改动而进行完全重建。

Appium vs Selendroid

  • Appium 是一款开源自动化工具,同时支持 iOS 和 Android,而 Selendroid 是一款仅支持 Android 的测试自动化框架。
  • Appium 中,小的改动不需要重新安装应用程序。但 Selendroid 需要重新安装应用程序。
  • Appium 拥有一个强大而活跃的社区,而 Selendroid 没有像 Appium 那样强大的社区。
  • Appium 支持许多框架和语言。另一方面,Selendroid 与 Jenkin 和 Selenium 兼容。
  • Appium 不需要应用程序源代码/库,而 Selendroid 需要应用程序源代码或库。
  • Appium 在有限的支持下支持所有 Android API。Appium 使用 UIAutomator 对运行在 API>=17 上的测试,而对于旧版 API,它使用 Selendroid 运行测试。