自动化测试-Appium(介绍)

Appium 介绍
  • Appium 是一个开源工具,用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用。「原生应用」指那些用 iOS、 Android 或者 Windows SDKs 编写的应用。「移动 Web 应用」是用移动端浏览器访问的应用( Appium 支持 iOS 上的 Safari 、Chrome 和 Android 上的内置浏览器)。「混合应用」带有一个「webview」的包装器——用来和 Web 内容交互的原生控件,类似于 Apache Cordova 或 Phonegap 项目,创建一个混合应用使得用 Web 技术开发然后打包进原生包装器创建一个混合应用变得容易了
支持的平台
  • Appium 支持多种平台以及各种测试方式(native,hybrid,web,真机,模拟器,等等…)。这份文档的设计初衷就是为了搞清楚所支持平台的版本,以及所需的条件

  • iOS 平台支持

    • 版本:9.0 及以上版本
    • 设备:iPhone 模拟器,iPad 模拟器,以及 iPhone 和 iPad 的真机
    • 是否支持 Native 应用:支持。如在模拟器执行,需要 debug 版本的 .app 包,在真机上运行则需要已签名的 .ipa 包。底层的框架是由苹果的 XCUITest (或 UIAutomation 支持更旧的版本) 所提供支持
    • 是否支持移动端浏览器:支持。我们通过移动端的 Safari 进行自动化测试。对于真机,ios-webkit-remote-debugger 工具是必须的。可惜的是对于 Safari 的 native 部分的自动化目前还不支持。更多介绍请查看 mobile web doc(English)。
    • 是否支持 Hybrid 应用:支持。如使用真机,ios-webkit-remote-debugger 工具也是必须的。更多介绍请查看 hybrid doc。
    • 是否支持在一个 session 中多个应用的自动化:不支持
    • 是否支持多设备同时执行自动化:不支持
    • 是否支持第三方应用的自动化:仅支持在模拟器上仅有的第三方应用(设置,地图,等等…)。若在 iOS 10 及以上的版本,你同样可以在 home 界面做自动化。
    • 是否支持自定义的、非标准的 UI 控件的自动化:只支持小部分。你需要在控件设置可识别的信息,从而对一些元素进行一些基础的自动化操作。
  • Android 平台支持

    • 版本:4.3 及以上版本
    • 4.3 以及更高的版本是通过 Appium 自己的 UiAutomator 库实现。这是默认的自动化后台。
    • 设备:Android 模拟器以及 Android 真机
    • 是否支持 Native 应用:支持
    • 是否支持移动端浏览器:支持(除了使用 Selendroid 后台的时候)。Appium 绑定了一个 Chromedriver 服务,使用这个代理服务进行自动化测试。在 4.2 和 4.3 版本,只能在官方的 Chrome 浏览器或者 Chromium 执行自动化测试。在 4.4 及更高版本,可以在内置的 “浏览器” 应用上进行自动化了。更多介绍请查看 mobile web doc(English)。
    • 是否支持 Hybrid 应用:支持。更多介绍请查阅 hybrid doc。
    • 默认的 Appium 自动化后台:支持 4.4 以及更高版本
    • Selendroid 自动化后台:支持 2.3 以及更高版本
      是否支持多个 app 在同一个 session 中自动化:支持(除了使用 Selendroid 后台的时候)
    • 是否支持多个设备同时进行自动化:支持,即使 Appium 在开始的时候,使用不同的端口号作为服务器参数,–port, --bootstrap-port (或者 --selendroid-port) 还有 --chromedriver-port. 更多介绍请查看 server args doc。
    • 支持第三方引用:支持(除了使用 Selendroid 后台的时候)
    • 支持自定义的、非标准的 UI 控件的自动化:不支持
  • Windows 桌面支持

Appium 的理念

Appium 旨在满足移动端自动化需求的理念,概述为以下四个原则:

1.不应该为了自动化而重新编译你的应用或以任何方式修改它。
2.不应该被限制在特定的语言或框架上来编写运行测试。
3.移动端自动化框架不应该在自动化接口方面重造轮子。
4.移动端自动化框架应该开源,在精神、实践以及名义上都该如此。

Appium 的设计

那么 Appium 项目的架构是如何实现这些理念的呢?为了实现理念#1,使用了系统自带的自动化框架。这样,不需要把 Appium 特定的或者第三方的代码编译进你的应用,这意味着测试使用的应用与最终发布的应用并无二致。使用以下系统自带的自动化框架:

Appium 的概念
  • 客户端 / 服务器架构
    Appium 的核心一个是暴露 REST API 的 WEB 服务器。它接受来自客户端的连接,监听命令并在移动设备上执行,答复 HTTP 响应来描述执行结果。实际上客户端 / 服务器架构给予了我们许多可能性:我们可以使用任何有 http 客户端 API 的语言编写我们的测试代码,不过选一个 Appium 客户端程序库 用起来更为容易。我们可以把服务器放在另一台机器上,而不是执行测试的机器。我们可以编写测试代码,并依靠类似 Sauce Labs 的云服务接收和解释命令
  • 会话(Session)
    自动化始终在一个会话的上下文中执行,这些客户端程序库以各自的方式发起与服务器的会话,但最终都会发给服务器一个 POST /session 请求,请求中包含一个被称作「预期能力(Desired Capabilities)」的 JSON 对象。这时服务器就会开启这个自动化会话,并返回一个用于发送后续命令的会话 ID
  • 预期能力(Desired Capabilities)
    预期能力(Desired Capabilities)是一些发送给 Appium 服务器的键值对集合(比如 map 或 hash),它告诉服务器我们想要启动什么类型的自动化会话。也有许多能力(Capabilities)可以修改服务器在自动化过程中行为。例如,我们可以将 platformName 能力设置为 iOS,以告诉 Appium 我们想要 iOS 会话,而不是 Android 或者 Windows 会话。或者我们也可以设置 safariAllowPopups 能力为 true ,确保我们在 Safari 自动化会话期间可以使用 JavaScript 打开新窗口。有关 Appium 能力的完整列表,请参阅 能力文档
  • Appium 服务器
    Appium 是一个用 Node.js 写的服务器。可以从源码构建安装或者从 NPM 直接安装:
$ npm install -g appium
$ appium

Appium 的 beta 版本可以通过 NPM 使用 npm install -g appium@beta 指令进行安装。它是开发版本,所以可能存在破坏性的变更。在安装新版本请卸载 appium@beta (npm uninstall -g appium@beta)以获得一组干净的依赖

  • Appium 客户端
    有一些客户端程序库(分别在 Java、Ruby、Python、PHP、JavaScript 和 C# 中实现),它们支持 Appium 对 WebDriver 协议的扩展。你需要用这些客户端程序库代替常规的 WebDriver 客户端。你可以在这里浏览所有程序库的列表
  • Appium Desktop
    这有一个 Appium 服务器的图形界面封装可以下载,它适用于任何平台。它打包了 Appium 服务器运行需要的所有东西,所以你不需要为 Node 而烦恼。它们还提供一个 Inspector 使你可以查看应用程序的层级结构。这在写测试时可以派上用场
搭建依赖
  • Python
  • Node.js
  • Appium
  • JDK
  • Android SDK
  • Appium-doctor
  • Appium-desktop
  • Appium server(2016停止更新,win2015,可以不用)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aniona

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值