导航

关于Appium

Posted on 2017-05-25 20:42  Young哥哥  阅读(757)  评论(0编辑  收藏  举报

Appium

Appium是一款开源的,跨平台的测试自动化工具,用于本地,混合和移动Web应用程序,在模拟器(iOS,FirefoxOS),仿真器(Android)和实际设备(iOS,Android,Windows,FirefoxOS)上进行测试。

 

支持的平台

  • iOS版
  • Android的
  • 视窗
  • FirefoxOS

有关更多详细信息,请参阅平台支持文档

 

为什么选择

  1. 由于在所有平台上使用标准的自动化API,因此您无需以任何方式重新编译应用程序或进行修改。
  2. 您可以使用任何与WebDriver兼容的语言(如Java,Objective-C,带Node.js(承诺,回调生成器风格)),PHP,Python,Ruby,C#,Clojure或Perl的WebDriver兼容语言编写测试使用Selenium WebDriver API和特定于语言的客户端库。
  3. 您可以使用任何测试框架。

投资WebDriver协议意味着您将投注于单一,免费和开放的测试协议,这已成为一个违反标准。不要将自己锁定到专有的堆栈中。

如果您没有使用Apple的UIAutomation库,您只能使用JavaScript编写测试,并且只能通过仪器应用程序运行测试。同样,使用Google的UiAutomator,您只能使用Java编写测试。Appium打开了真正的跨平台本地移动自动化的可能性。最后!

 

我没有得到它...

如果您是Appium的新手,或者想要更完整地描述这些内容,请阅读我们的Appium概念介绍

 

要求

您需要为要运行测试的特定移动平台设置您的环境。具体平台要求见下文。

如果您想通过一个npm install或多个App来运行Appium,那么您将需要 node.js和npm v6或更高版本(使用nbrew install node安装Node.js.确保您没有安装Node或Appium sudo,否则您将会遇到问题)。我们建议最新的稳定版本。

要验证是否满足所有的Appium的依赖关系,可以使用 appium-doctor。使用npm install -g appium-doctor(或从运行它)安装它,然后运行 appium-doctor并提供--ios--android标志来验证所有依赖项是否正确设置。

您还需要下载您的语言的Appium客户端,以便您可以编写测试。Appium客户端是WebDriver客户端的简单扩展。您可以在Appium客户列表中查看客户列表和下载说明的链接。

iOS要求

Android要求

  • Android SDK API = 17(附加功能需要18/19)
  • Appium在OS X,Linux和Windows上支持Android。确保您按照适用于设置环境的说明进行不同操作系统的测试:

Windows要求

FirefoxOS要求

 

快速开始

启动一个Appium服务器,然后运行一个用您最喜欢的WebDriver兼容语言编写的测试!您可以使用node.js或使用应用程序运行一个Appium服务器,如下所示。

使用Node.js

$ npm install -g 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库支持。这是默认的自动化后端。
  • 设备: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

建立

开始:

  1. 下载最新节点和npm工具 MSI(version> = 6.0)。该npmnodejs路径应该在你的PATH环境变量。
  2. 打开管理cmd提示符
  3. 运行npm install -g appium从NPM安装Appium 的命令
  4. 要启动Appium,现在可以直接appium从提示符运行。
  5. 按照以下说明进行Android或Windows应用程序测试的设置。
  6. 从任何Appium客户端运行测试。

 

Android App测试的附加设置

  1. 在这里下载最新的Java JDK (先接受许可协议)。将'JAVA_HOME'设置为您的JDK路径。该bin目录应该添加到您的PATH变量中。
  2. 安装Android SDK。设置ANDROID_HOME环境变量设置为你的Android SDK路径并添加toolsplatform-tools文件夹到PATH环境变量。
  3. 安装Apache Ant,或者在eclipse \ plugins文件夹中使用Android Windows SDK附带的安装。确保将包含Ant的文件夹添加到PATH变量中。
  4. 安装Apache Maven并设置M2HOME和M2环境变量。设置M2_HOME该目录Maven是安装在,并设置M2bin该目录中。将您用于路径的路径添加M2到PATH。
  5. 要在Windows上运行测试,您将需要启动Android模拟器或者连接的Android设备正在运行API为17级或更高版本的AVD。然后在命令行上运行Appium(通过appium命令)
  6. 您的测试脚本应确保该platformVersion功能对应于您正在测试的仿真器或设备版本,并且该app功能是Android应用的.apk文件的绝对路径。

 

Windows应用程序测试的其他设置

  1. 要测试Windows应用程序,只需确保已打开开发人员模式

(有关如何运行Windows应用程序测试的说明,请参阅Windows应用程序测试文档)

运行Appium

有关所有命令行参数,请参阅服务器文档。

  • 在Windows上以管理员身份运行Appium.exe,或者从源代码运行时,需要以管理员身份运行cmd。
  • 您必须提供Android --no-reset--full-resetWindows标准。
  • 存在用于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可再发行库

安装:

  1. Appium.io下载最新版本
  2. 提取ZIP文件。
  3. 发射appium.exe

手动更新Appium服务器:

  1. 关闭appium-dot-exe
  2. 去appium-dot-exe主目录
  3. 删除node_modules文件夹
  4. 删除node.exe文件
  5. 发射 appium.exe
  6. 下载应自动发生
 

参数指南

主窗口

 

  • 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无法调整的选项时,才应使用此选项。