Appium
Appium是一款开源的,跨平台的测试自动化工具,用于本地,混合和移动Web应用程序,在模拟器(iOS,FirefoxOS),仿真器(Android)和实际设备(iOS,Android,Windows,FirefoxOS)上进行测试。
支持的平台
- iOS版
- Android的
- 视窗
- FirefoxOS
有关更多详细信息,请参阅平台支持文档。
为什么选择
- 由于在所有平台上使用标准的自动化API,因此您无需以任何方式重新编译应用程序或进行修改。
- 您可以使用任何与WebDriver兼容的语言(如Java,Objective-C,带Node.js(承诺,回调或生成器风格)),PHP,Python,Ruby,C#,Clojure或Perl的WebDriver兼容语言编写测试使用Selenium WebDriver API和特定于语言的客户端库。
- 您可以使用任何测试框架。
投资WebDriver协议意味着您将投注于单一,免费和开放的测试协议,这已成为一个违反标准。不要将自己锁定到专有的堆栈中。
如果您没有使用Apple的UIAutomation库,您只能使用JavaScript编写测试,并且只能通过仪器应用程序运行测试。同样,使用Google的UiAutomator,您只能使用Java编写测试。Appium打开了真正的跨平台本地移动自动化的可能性。最后!
我没有得到它...
如果您是Appium的新手,或者想要更完整地描述这些内容,请阅读我们的Appium概念介绍。
要求
您需要为要运行测试的特定移动平台设置您的环境。具体平台要求见下文。
如果您想通过一个npm install
或多个App来运行Appium,那么您将需要 node.js和npm v6或更高版本(使用n或 brew install node
安装Node.js.确保您没有安装Node或Appium sudo
,否则您将会遇到问题)。我们建议最新的稳定版本。
要验证是否满足所有的Appium的依赖关系,可以使用 appium-doctor
。使用npm install -g appium-doctor
(或从源运行它)安装它,然后运行 appium-doctor
并提供--ios
或--android
标志来验证所有依赖项是否正确设置。
您还需要下载您的语言的Appium客户端,以便您可以编写测试。Appium客户端是WebDriver客户端的简单扩展。您可以在Appium客户列表中查看客户列表和下载说明的链接。
iOS要求
- 推荐使用Mac OS X 10.12
- 推荐XCode 8
- 苹果开发工具(iPhone模拟器SDK,命令行工具)
- 确保您阅读我们的文档,设置自己的iOS测试!
Android要求
- Android SDK API = 17(附加功能需要18/19)
- Appium在OS X,Linux和Windows上支持Android。确保您按照适用于设置环境的说明进行不同操作系统的测试:
Windows要求
- Windows 10
- 文档
FirefoxOS要求
快速开始
启动一个Appium服务器,然后运行一个用您最喜欢的WebDriver兼容语言编写的测试!您可以使用node.js或使用应用程序运行一个Appium服务器,如下所示。
使用Node.js
$ npm install -g appium
$ appium
使用应用程序
- 下载Appium应用程序
- 运行!
写作测试
开始编写和运行测试的主要指南是运行测试。
基本上,我们支持Selenium WebDriver JSON Wire Protocol的一个子集,并扩展它,以便您可以指定移动目标的所需功能,以通过Appium运行测试。
您可以通过使用WebDriver的元素查找策略的子集来查找元素。请查看点击,轻击和滑动等元素。
您还可以在混合应用程序中自动化网页视图!请参阅混合应用程序指南
该存储库包含许多不同语言的许多测试示例!
有关Appium文档页面的完整列表,请访问此目录。
怎么运行的
Appium驱动各种本地自动化框架,并提供基于Selenium的WebDriver JSON线协议的API 。
Appium推动了苹果UIAutomation库的iOS支持,这是基于 Dan Cuellar在iOS Auto上的工作。
支持Android使用了新的平台和框架UiAutomator Selendroid对于较旧的Android平台。
Windows支持使用Microsoft的WinAppDriver
FirefoxOS支持利用Marionette,一种与WebDriver兼容的自动化驱动程序,用于自动化基于Gecko的平台。
设置Appium
Appium平台支持
Appium支持各种平台和测试模式(本机,混合,网络,真实设备,模拟器等)。本文档的目的是为了明确各方面的支持和要求。
iOS支持
请参阅在OS X上运行:适用于iOS的iOS要求和安装说明。
- 版本:9.3+
- 设备:iPhone模拟器,iPad模拟器,以及真正的iPhone和iPad
- 本机应用程序支持:是的,具有.app(模拟器)的调试版本或正确签名的.ipa(实际设备)。Apple的XCTest框架提供了基础支持。
- 移动网络支持:是的,通过移动Safari的自动化。对于真实的设备,需要ios-webkit-remote-debugger,并且Safari界面的本机方面的自动化是不可能的。有关说明,请参阅移动网络文档。
- 混合支持:是的。对于真实的设备,需要ios-webkit-remote-debugger。请参阅混合文档以获取说明。
- 支持在一个会话中自动执行多个应用程序:否
- 支持同时自动化多个设备:否
- 支持自动化供应商提供的或第三方应用程序:仅供应商提供的应用程序(首选项,地图等),只有在模拟器
- 支持自定义非标准UI控件:最小。您需要在控件上设置辅助功能信息,从而实现一些基本的自动化。
Android支持
请参阅在OS X上运行:Android, 在Windows上运行,或 在Linux 上运行 Android要求和安装说明。
- 版本:2.3及以上
- 版本2.3至4.2通过Appium的捆绑版本的Selendroid支持,该版本 使用Instrumentation。Selendroid具有与默认的Appium不同的命令集(尽管正在迅速被最小化)和不同的支持配置文件。要访问此自动化后端,请使用
automationName
带有该值的功能Selendroid
。 - 版本4.2及以上版本由Appium自己的UiAutomator库支持。这是默认的自动化后端。
- 版本2.3至4.2通过Appium的捆绑版本的Selendroid支持,该版本 使用Instrumentation。Selendroid具有与默认的Appium不同的命令集(尽管正在迅速被最小化)和不同的支持配置文件。要访问此自动化后端,请使用
- 设备:Android模拟器和真正的Android设备
- 本地应用程序支持:是的
- 移动Web支持:是(但不使用Selendroid后端)。使用捆绑的Chromedriver服务器作为代理实现自动化。使用4.2和4.3,自动化功能仅适用于官方Chrome浏览器或Chromium。使用4.4+,自动化也可以在内置的“浏览器”应用程序中使用。必须在被测设备上安装Chrome / Chromium /浏览器。有关说明,请参阅移动网络文档。
- 混合支持:是的。请参阅混合文档以获取说明。
- 使用默认的Appium自动化后端:版本4.4及更高版本
- 使用Selendroid自动化后端:2.3及更高版本
- 支持在一个会话中自动执行多个应用程序:是(但不使用Selendroid后端)
- 支持自动同步多个设备:是的,尽管Appium必须使用不同的端口,用于服务器的参数开始
--port
,--bootstrap-port
(或--selendroid-port
)和/或--chromedriver-port
。有关这些参数的更多信息,请参阅服务器args文档。 - 支持自动化供应商提供的或第三方应用程序:是(但不使用Selendroid后端)
- 支持自定义非标准UI控件:否
在Windows上运行Appium
建立
开始:
- 下载最新节点和npm工具 MSI(version> = 6.0)。该
npm
和nodejs
路径应该在你的PATH环境变量。 - 打开管理cmd提示符
- 运行
npm install -g appium
从NPM安装Appium 的命令 - 要启动Appium,现在可以直接
appium
从提示符运行。 - 按照以下说明进行Android或Windows应用程序测试的设置。
- 从任何Appium客户端运行测试。
Android App测试的附加设置
- 在这里下载最新的Java JDK (先接受许可协议)。将'JAVA_HOME'设置为您的JDK路径。该
bin
目录应该添加到您的PATH变量中。 - 安装Android SDK。设置
ANDROID_HOME
环境变量设置为你的Android SDK路径并添加tools
和platform-tools
文件夹到PATH环境变量。 - 安装Apache Ant,或者在eclipse \ plugins文件夹中使用Android Windows SDK附带的安装。确保将包含Ant的文件夹添加到PATH变量中。
- 安装Apache Maven并设置M2HOME和M2环境变量。设置
M2_HOME
该目录Maven是安装在,并设置M2
到bin
该目录中。将您用于路径的路径添加M2
到PATH。 - 要在Windows上运行测试,您将需要启动Android模拟器或者连接的Android设备正在运行API为17级或更高版本的AVD。然后在命令行上运行Appium(通过
appium
命令) - 您的测试脚本应确保该
platformVersion
功能对应于您正在测试的仿真器或设备版本,并且该app
功能是Android应用的.apk文件的绝对路径。
Windows应用程序测试的其他设置
- 要测试Windows应用程序,只需确保已打开开发人员模式。
(有关如何运行Windows应用程序测试的说明,请参阅Windows应用程序测试文档)
运行Appium
有关所有命令行参数,请参阅服务器文档。
- 在Windows上以管理员身份运行Appium.exe,或者从源代码运行时,需要以管理员身份运行cmd。
- 您必须提供Android
--no-reset
或--full-reset
Windows标准。 - 存在用于Android的硬件加速仿真器; 它有自己的局限性
Android安装程序
要开始使用,您需要安装node.js(v4或更高版本)。只需按照您的风格的linux的说明。
安装node.js后,安装Android SDK。您将需要运行“android”工具(包含在SDK中的“tools”目录下)。
运行“android”工具,并使用它来安装API级别17或更高版本。
(如果要从源代码运行Appium,您还需要Apache Ant来构建Appium用于运行Android模拟器/设备的引导jar。)
最后,设置$ANDROID_HOME
为您的Android SDK路径。例如,如果您将Android SDK解压到/ usr / local / adt /,应该将其添加到shell启动中:
export ANDROID_HOME =“/ usr / local / adt / sdk”
现在你设置运行Appium!如果您从源代码运行Appium,请npm install
从您的Appium checkout 运行 以安装所有依赖项。
Android的旧版本的其他设置
Appium使用,并预先包装,Selendroid运行Android版本2.3到4.1。当它检测到较旧的版本时,Appium会自动切换到使用Selendroid,但是如果从源代码运行,则需要一些额外的设置。
- 确保您已安装Maven 3.1.1或更新版本(
mvn
)。
运行Appium Android测试
要在Linux上运行测试,您将需要启动Android Emulator并运行A Level,级别为17或更高。然后appium
在通过NPM安装后运行Appium(),node .
如果从源运行,则在源目录中运行。
有关所有命令行参数,请参阅服务器文档。
笔记
- 存在一个用于android的硬件加速仿真器,它有自己的局限性。有关更多信息,请查看此 页面。
- 确保
hw.battery=yes
在您的AVD中config.ini
,如果您要运行任何一个Appium测试,或使用任何电源命令。 - Selendroid需要您的应用程序的以下权限:
<uses-permission android:name="android.**permission.INTERNET"/>
请确保您的应用程序在使用selendroid或旧版本的Android时设置了Internet权限,即2.3到4.1
并行Android测试
Appium为用户提供了一种在单台机器上自动化多个Android会话的方式。它涉及的是启动具有不同标志的多个Appium服务器。
自动化多个Android会话的重要标志是:
-p
主要的Appium端口-U
设备ID-bp
Appium引导端口--chromedriver-port
Chromedriver端口(如果使用网页浏览或chrome)--selendroid-port
selendroid端口(如果使用selendroid)
这些标志的更多信息可以在这里找到。
如果我们有两个ID为43364和32456的设备,我们将使用以下命令启动两个不同的Appium服务器:
node . -p 4492 -bp 2251 -U 32456
node . -p 4491 -bp 2252 -U 43364
只要您的Appium和Appium引导端口在0和65536之间,所有它们必须是不同的,以便两个Appium服务器不尝试在同一端口上侦听。确保您的-u标志对应于正确的设备ID。这就是Appium如何知道哪个设备进行通信,所以它必须准确。
如果您使用chromedriver或selendroid,请为每个服务器设置一个不同的端口。
并行iOS测试
不幸的是,运行本地并行iOS测试是不可能的。与Android不同,一次只能启动一个版本的iOS模拟器,使其一次运行多个测试。
如果你想要运行并行的iOS测试,你需要使用酱汁。只需将您的Appium测试上传到Sauce,就可以在您的帐户允许的范围内运行多个并行的iOS或Android测试。查看更多关于酱油运行测试在这里
Appium GUI
用于Appium的Windows GUI
如果您是Appium的新手,请参阅入门指南,了解有关该项目的更多信息。
Pre-req:*需要.NET Framework 4.5可再发行库
安装:
手动更新Appium服务器:
- 关闭appium-dot-exe
- 去appium-dot-exe主目录
- 删除
node_modules
文件夹 - 删除
node.exe
文件 - 发射
appium.exe
- 下载应自动发生
参数指南
主窗口
- Android按钮:显示Android设置。
- Android按钮:显示Android设置。
- 设置按钮:显示常规设置。
- 开发者按钮:显示开发者设置。
- 关于按钮:显示Appium版本信息。
- Inspector Button:启动Appium Inspector。
- 启动/停止按钮:启动或停止Appium服务器。
- 清除按钮:清除所有日志输出的显示。
Android设定
- 应用
- 应用路径:
.apk
要测试的Android应用程序()的路径。 - 选择按钮:用于选择应用程序的路径。
- 软件包:要运行Android应用程序的Java包(例如
com.example.android.myApp
)。 - 等待软件包:Android活动的软件包名称等待。
- 启动活动:从您的包中启动的Android活动的活动名称(例如
MainActivity
)。 - 等待活动:要等待的Android活动的活动名称。
- 完全重置:通过卸载应用程序而不是清除应用程序数据来重置应用程序状态,并在会话完成后删除应用程序。
- 否复位:防止设备复位。
- 使用浏览器:启动指定的Android浏览器(例如
Chrome
)。 - 意图动作:将用于启动活动的意图动作。
- 意图类别:将用于启动活动的意图类别。
- 意图标志:将用于启动活动的标志。
- 意图参数:将用于启动活动的其他意图参数。
- 应用路径:
- 启动设备
- 启动AVD:启动AVD的名称。
- 设备就绪超时:等待设备准备就绪时超时(秒)。
- 参数:用于启动avd的其他仿真器参数。
- 功能
- 平台名称:移动平台的名称。
- 自动化名称:自动化工具(Appium或Selendroid)的名称。
- 平台版本:移动平台的版本。
- 设备名称:要使用的移动设备的名称。
- 语言:Android设备的语言。
- 区域设置:Android设备的区域设置。
- 高级
- SDK路径:Android SDK的路径。
- 覆盖类:完全合格的仪表类。
- 引导端口:设备上使用的端口与Appium通话。
- Selendroid端口:用于与Selendroid进行通信的本地端口。
- Chromedriver端口:运行ChromeDriver的端口。
偏好指南
可以通过单击主窗口中的相应按钮来访问偏好设置。
常规设置
- 服务器
- 服务器地址:要运行Appium服务器的IP地址(127.0.0.1是localhost)。
- 端口:Appium服务器将侦听WebDriver命令的端口(默认为4723)。
- 检查更新:启动时,Appium将自动检查更新。
- 预启动应用程序:Appium将在开始监听WebDriver命令之前预先启动应用程序。
- 覆盖现有会话:任何现有的App会话将被覆盖。
- 使用远程服务器:用于将Appium Inpector连接到已在运行的服务器。
- 硒网格配置文件:Selenium Grid配置文件的路径。
- 记录
- 安静日志记录:不要使用详细的日志输出。
- 使用颜色:在控制台输出中使用颜色。
- 显示时间戳:在控制台输出中显示时间戳。
- 登录到文件:将日志输出发送到此文件。
- 登录WebHook:将日志输出发送到此HTTP侦听器。
开发者设置
- 启用:如果选中,将会发现开发者设置。
- 使用外部NodeJS二进制:Appium将使用此处提供的NodeJS版本,而不是应用程序附带的版本。
- 使用外部应用程序包:Appium将使用此处提供的Appium软件包版本,而不是应用程序捆绑的版本。
- NodeJS调试端口:运行NodeJS调试器的端口。
- 应用程序启动时断开:NodeJS调试服务器将在应用程序启动时中断。(相当于将debug-brk交换机提供给节点)
- 自定义服务器标志:启动Appium服务器时使用的自定义标志。只有在使用Appium UI无法调整的选项时,才应使用此选项。