Appium最初由Dan Cueller开发,用于利用Apple iOS的UI自动化框架对本机移动应用程序运行测试。使用与Selenium相同的语法,它共享Selenium通过移动浏览器自动与网站交互的能力,但另外提供了一种与移动应用程序特定的元素(如手势)交互的方式。出于这个原因,虽然Appium可以用于针对移动和桌面浏览器的网站测试,但它更常用于测试iOS和Android的本机和混合移动应用程序。

Appium是一个用node.js编写的HTTP服务器,它为iOS和Android等不同平台创建和处理多个WebDriver会话。

Appium在设备上启动“测试用例”,该设备生成服务器并侦听来自主Appium服务器的代理命令。它与Selenium服务器几乎相同,后者从selenium客户端库中感知http请求,并根据平台以不同方式处理这些请求。

像iOS和Android这样的每个供应商都有不同的方式和机制来在设备上运行测试用例,因此Appium会破解它并在从appium服务器监听命令后运行此测试用例。

Appium如何在iOS上运行?

在iOS上,Appium代理命令到在Mac Instruments环境中运行的UI Automation脚本。Apple提供了这个名为“instruments”的应用程序,用于执行分析,控制和构建iOS应用程序等许多活动,但它还有一个自动化组件,我们可以在javascript中编写一些命令,使用UI Automation API与App UI进行交互。Appium利用这些相同的库自动化iOS应用程序。

在上图中,我们可以在iOS自动化的上下文中看到Appium的体系结构。如果我们谈论一个命令生命周期,就像Selenium webdriver从(Element.click)这样的代码中选择一个命令,并通过http请求以JSon的形式发送给Appium服务器。

Appium服务器知道像iOS和Android这样的自动化上下文,并将此命令发送到Instruments命令服务器,该命令服务器将等待Instruments命令客户端(用node.js编写)来获取它并在iOS中的bootstrap.js中执行它仪器环境。执行该命令后,命令客户端将消息发送回Appium服务器,该服务器在其控制台中记录与该命令相关的所有内容。这个循环一直持续到所有命令执行的时间。

APPIUM设计概念

Appium是使用Node.js平台编写的“HTTP服务器” ,使用Webdriver JSON有线协议驱动iOS和Android会话。因此,在初始化Appium Server之前,必须在系统上预安装Node.js.

下载并安装Appium时,会在我们的机器上设置一个公开REST API的服务器。

它从客户端接收连接和命令请求,并在移动设备(Android / iOS)上执行该命令。

它响应HTTP响应。同样,为了执行此请求,它使用移动测试自动化框架来驱动应用程序的用户界面。框架如: –

适用于iOS的Apple Instruments(仪器仅适用于OS X v10.5及更高版本的Xcode 3.0或更高版本)

Google UIAutomator for Android API等级16或更高

Selendroid for Android API等级为15或更低

一般使用APPIUM的先决条件

ANDROID SDK [ 链接 

JDK(Java开发工具包)[ 链接 ]

TestNG [ 链接 ]

Eclipse [ 链接 ]

Selenium Server JAR [ 链接 ]

Webdriver语言绑定库[ 链接 ]

适用于Windows的APPIUM [ 链接 ]

APK App在Google Play上的信息[ 链接 ]

Node.js(不需要 – 每当安装Appium服务器时,默认情况下它都带有“Node.exe”和NPM。它包含在当前版本的Appium中。)

Appium的基本要求

应在系统中安装Eclipse或Android Studio。

iOS系统设置要求

苹果系统

XCode

Apple开发者工具(iPhone模拟器SDK)

Android系统设置要求

应该正确安装Android SDK和Java。

适用于Android的Appium设置以及OS X,Linux和Windows上的iOS。

定义编写Appium测试所需的功能。

如何定义所需的功能?

期望的功能是存储属性的键和值的集合,例如deviceName,browserName,platformName,platformVersion等。

以下是添加Selenium Jars及其所需功能的示例:

APPIUM检查员

与Selenium IDE记录和播放工具类似,Appium有一个“Inspector”来记录和播放。它通过检查DOM来记录和播放本机应用程序行为,并以任何所需语言生成测试脚本。但是,目前不支持Appium Inspector for Microsoft Windows。在Windows中,它启动Appium Server但无法检查元素。但是,UIAutomator查看器可用作检查元素的选项。

从Mac机上的Appium Inspector开始的步骤: –

1)从链接http://appium.io/下载Appium for iOS。

2)右键单击下载的文件并使用DiskImageMounter 打开它,如下所示。它将在不同的文件夹中打开Appium.app。

3)将Appium.app拖到Applications文件夹,如下所示。

4)双击Applications文件夹打开Appium.app。首先,您需要通过单击顶部的苹果图标导航到Appium iOS设置。您无需填写所有表格。还要记得检查图标下方的圆形按钮,确保定位到正确的平台。

5)您需要做的第一件事是将Appium服务器指向您要测试的.APP文件(从Xcode项目生成 -只需选中“App Path”框并将路径粘贴到文本字段中的.App文件中,或单击按钮导航到该文件。

6)接下来,在屏幕上向下移动一点,直到在“设备设置”下找到“强制设备”字段。选中该框并选择要测试的设备。虽然最后您可以插入任何您喜欢的文本字符串,但此步骤是必需的。

7)紧接着是UDID字段。选中复选框并打开Xcode。导航到窗口 – >设备,从左侧边栏中选择您连接的设备。您需要复制“标识符”行前面的文本,返回Appium并将其粘贴到UDID字段中。

8)接下来,您需要选中“完全重置”框。这告诉Appium每次运行测试时都要重置我们正在测试的应用程序的状态。

9)最后,您需要检查Appium是否知道Xcode应用程序的路径。单击“高级”选项卡,检查底部字段中的路径是否正确。如果没有,只需单击按钮并导航到Xcode

10)您现在可以启动服务器了。关闭iOS设置屏幕并选择按钮。您应该会在Appium终端上看到一些信息。几秒钟后,您可以单击带有图标的按钮,这将打开Appium Inspector。此时,应用程序将在您的设备上安装并启动。Inspector的目的是允许您引用正在测试的应用程序的UI元素,以便您可以与它们进行交互。

如何使用API​​来定位元素并执行操作?

>按名称(按内容-desc)

这也是定位元素的有效方法,但问题与UI开发人员在页面上具有非唯一名称或自动生成名称的ID相同。使用此策略,将返回名称属性值与位置匹配的第一个元素。如果没有元素具有匹配的name属性,则将引发NoSuchElementException 。

>按类名称

有了这个,你可以根据class属性的值找到元素。如果一个元素有很多类,那么这将匹配它们中的每一个。一个类可以包含许多元素。

>按ID

使用此策略,将返回id属性值与位置匹配的第一个元素。如果没有元素具有匹配的id属性,则将引发NoSuchElementException 。这是定位元素的最有效和首选方式,因为大多数时间ID都是唯一的。

>通过XPath

Xpath 是Appium中的重要定位器,因为你会遇到很多情况,你没有任何选择,只能使用xpath。Xpath可以是相对的和绝对的,但建议始终使用相对xpath。

用例和部署范围

Appium由拥有Android和iOS本机应用程序的团队在整个组织中使用。我们正在使用它来自动化大型回归测试,现在我们手动运行。Appium让我们改进了发布过程的持续时间并提高了回归阶段的速度,让我们可以选择将手动测试团队减少到一个人。

目前,Appium正在使用TestObject,因为通过这两个协同工作,可以提高设备覆盖率和整个发布过程的速度,并具有良好的质量水平。

您甚至可以参考链接获取有关eclipse的其他解释。

结论

使用Appium,您可以自动执行Android和iOS测试。没有必要学习超过1种语言。配置和使用Appium非常容易; 当你测试策略基于“开发人员编写测试”时,它非常有用。