提示:我们前面说的Android环境搭建和adb命令都是为移动端自动化测试环境搭建做准备的。

1、主流的移动端自动化测试框架

(1)Robotium

  1. 支持语言:Java
  2. 仅支持Android系统。
  3. 不支持跨应用。

(2)Macaca

  1. 支持语言:JavaPythonNode.js
  2. 支持Android和iOS系统。
  3. 支持跨应用。

(3)Appium

  1. 支持语言:JavaC#PythonphpperlrubyNode.js
  2. 支持Android和iOS系统。
  3. 支持跨应用。

2、自动化测试工具的选择

自动化测试工具选择的关注点有以下几点:

  1. 是否支持nativewebview
  2. 是否支持获取toast
  3. 是否支持跨应用。

nativewebviewtoast说明(重点):

(1)native:表示APP原生页面。

  • 使用Android/iOS支持的语言编写页面。

    Android是Java语言。

    iOS 是Object-C语言。
  • 优点:页面打开速度快。
  • 缺点:更新复杂。

    当你修改了原生页面,需要重新发布的话,就需要重新发布到应用市场上,无论APP修改了什么,哪怕是一点点原生页面,都需要重新发布。需要应用市场平台审核,审核需要一定时间。

    在用户方面,更新需要用户升级或重新下载APP。

(2)webview:简单理解就是APP中的H5页面。

  • 使用前端技术编写的页面。
  • 优点:更新方便。

    进行修改,不需要重新发布应用市场,webview页面在我们自己的服务端就可以自行更新。
  • 缺点:打开速度慢,需要加载页面的很多元素,如jscss等。

(3)toast:就是页面中的一个标签。

  • toast的样子

    比如我在Android虚拟机中打开文件管理器,点击返回按钮会有一行提示“再次点击即可退出。”,

    如下图所示:



    这个样式的提示就叫toast
  • toast并不是弹窗,在页面中弹窗你不操作的话会一直存在,而toast默认时间就自动消失了。

补充:

  • 我们现在大部分的APP页面,都是由native页面和webview页面混合组成的,既有原生页面,也有H5页面。
  • 在APP中区分原生页面还是H5页面的基础办法(不一定准确),打开原生页面是没有进度条的,打开H5的页面是有进度条的。

3、Appium简介

  1. Appium官网地址:www.Appium.io,由SauceLab公司开发。
  2. Appium是由nodejsexpress框架写的Http Server,Appium使用WebDriverjson wire协议(该协议可支持多语言),来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。

    Appium对iOS系统的支持得益于Dan Cuellar’s对于iOS自动化的研究。

    Appium也集成了Selendroid,来支持老Android版本。
  3. Appium支持Selenium WebDriver支持的所有语言,如JavaObject-CJavaScriptPhpPythonRubyC#Clojure,或者Perl语言,更可以使用Selenium WebDriver的API。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用JavaScript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用Java来编写测试用例。Appium实现了真正的跨平台自动化测试。
  4. Appium是一个自动化测试开源、跨平台工具。它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了 iOS 和 Android 测试套件间代码的复用性。

    支持iOS平台和Android平台上的原生应用,Web应用和混合应用。

    所谓的“移动原生应用”是指那些用iOS或者Android的SDK编写的应用。

    所谓的“移动Web应用”是指使用移动浏览器访问的应用(Appium支持iOS上的Safari和Android上的 Chrome)。

    所谓的“混合应用”是指原生代码封装网页视图——原生代码和Web内容交互。

    比如,像Phonegap,可以帮助开发者使用网页技术开发应用,然后用原生代码封装,这些就是混合应用。
  5. Appium使用的供应商提供的框架:

    iOS 9.3及以上:苹果的XCUITest

    iOS 9.3及更低版本:苹果的UIAutomation

    Android 4.2+:谷歌的UiAutomator/UiAutomator 2

    Android 2.3+:谷歌的InstrumentationInstrumentation由单独的项目Selendroid提供支持)。

    Windows:微软的WinAppDriver

下面这段介绍来自于Appium的官网:

Introduction to Appium

Appium is an open-source tool for automating native, mobile web, and hybrid applications on iOS mobile, Android mobile, and Windows desktop platforms. Native apps are those written using the iOS, Android, or Windows SDKs. Mobile web apps are web apps accessed using a mobile browser (Appium supports Safari on iOS and Chrome or the built-in 'Browser' app on Android). Hybrid apps have a wrapper around a "webview" -- a native control that enables interaction with web content. Projects like Apache Cordova make it easy to build apps using web technologies that are then bundled into a native wrapper, creating a hybrid app.

Importantly, Appium is "cross-platform": it allows you to write tests against multiple platforms (iOS, Android, Windows), using the same API. This enables code reuse between iOS, Android, and Windows testsuites.

Appium简介

Appium 是一个开源工具,用于在 iOS 移动、Android 移动和 Windows 桌面平台上自动化原生、移动 Web 和混合应用程序。 本机应用是使用 iOS、Android 或 Windows SDK 编写的应用。 移动网络应用是使用移动浏览器访问的网络应用(Appium 支持 iOS 和 Chrome 上的 Safari 或 Android 上的内置“浏览器”应用)。 混合应用有一个围绕“webview”的包装器——一种支持与网络内容交互的本机控件。 像 Apache Cordova 这样的项目可以使用 Web 技术轻松构建应用程序,然后将这些技术捆绑到本机包装器中,从而创建混合应用程序。

重要的是,Appium 是“跨平台的”:它允许您使用相同的 API 针对多个平台(iOS、Android、Windows)编写测试。 这可以在 iOS、Android 和 Windows 测试套件之间实现代码重用。

Appium Philosophy

Appium was designed to meet mobile automation needs according to a philosophy outlined by the following four tenets:

  1. You shouldn't have to recompile your app or modify it in any way in order to automate it.
  2. You shouldn't be locked into a specific language or framework to write and run your tests.
  3. A mobile automation framework shouldn't reinvent the wheel when it comes to automation APIs.
  4. A mobile automation framework should be open source, in spirit and practice as well as in name!

Appium哲学

Appium是根据以下四个原则概述的理念设计的,以满足移动自动化需求:

  1. 您不应该需要重新编译您的应用程序或以任何方式修改它,以使其自动化。
  2. 您不应该被锁在特定的语言或框架中来编写和运行测试。
  3. 当涉及到自动化API时,移动自动化框架不应该重新发明轮子。
  4. 一个移动自动化框架应该是开源的,在精神上和实践上都是开源的!

『与善仁』Appium基础 — 8、Appium自动化测试框架介绍的更多相关文章

  1. 『与善仁』Appium基础 — 10、Appium基本原理

    目录 1.Appium自动化测试架构 2.Appium架构图 3.Session说明 4.Desired Capabilities说明 5.Appium Server说明 6.Appium Clien ...

  2. 『与善仁』Appium基础 — 12、Appium的安装详解

    目录 (一)Appium server安装 方式一:(桌面方式:推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二:(No ...

  3. 『与善仁』Appium基础 — 14、Appium测试环境搭建

    目录 1.Appium测试环境搭建整体思路 (1)Android测试环境搭建 (2)Appium测试环境搭建 (3)测试脚本语言的环境搭建 2.Appium在Android端和IOS端的工作流程 (1 ...

  4. 『与善仁』Appium基础 — 15、使用Appium的第一个Demo

    我们使用Python语言作为测试脚本的编写语言. 执行脚本前提: Android模拟器或者手机是开机状态. 使用确保电脑和Android设备进行了链接. 也就是使用ADB命令adb connect链接 ...

  5. 『与善仁』Appium基础 — 18、元素定位工具(二)

    目录 1.Appium Inspector介绍 2.Appium Inspector打开方式 3.Appium Inspector布局介绍 4.Appium Inspector工具的配置 5.Appi ...

  6. 『与善仁』Appium基础 — 9、补充:C/S架构和B/S架构说明

    目录 1.C/S架构和B/S架构概念 2.C/S结构与B/S架构的区别 3.C/S架构和B/S架构优点和缺点 (1)B/S模式的优点和缺点: (2)C/S模式的优点和缺点: 1.C/S架构和B/S架构 ...

  7. 『与善仁』Appium基础 — 16、APPium基础操作API

    目录 1.前置代码 2.安装和卸载APP 3.判断APP是否已安装 4.关闭APP软件和关闭驱动对象 5.发送文件到手机和获取手机中的文件 6.获取当前屏幕内元素结构(重点) 7.脚本内启动其他APP ...

  8. 『与善仁』Appium基础 — 17、元素定位工具(一)

    目录 1.uiautomatorviewer介绍 2.uiautomatorviewer工具打开方式 3.uiautomatorviewer布局介绍 4.uiautomatorviewer工具的使用 ...

  9. 『与善仁』Appium基础 — 19、元素定位工具(三)

    目录 1.Chrome Inspect介绍 2.Chrome Inspect打开方式 3.Chrome Inspect工具的使用 (1)Chrome Inspect工作前提 (2)Chrome Ins ...

随机推荐

  1. 鸿蒙内核源码分析(定时器篇) | 哪个任务的优先级最高 | 百篇博客分析OpenHarmony源码 | v31.02

    百篇博客系列篇.本篇为: v31.xx 鸿蒙内核源码分析(定时器篇) | 哪个任务的优先级最高 | 51.c.h .o 本篇说清楚定时器的实现 读本篇之前建议先读鸿蒙内核源码分析(总目录)其余篇. 运 ...

  2. P4100-[HEOI2013]钙铁锌硒维生素【矩阵求逆,最大匹配】

    正题 题目链接:https://www.luogu.com.cn/problem/P4100 题目大意 给出\(n\)个线性无关的向量\(A_i\),然后给出\(n\)个向量\(B_i\),求一个字典 ...

  3. P5488-差分与前缀和【NTT,生成函数】

    正题 题目链接:https://www.luogu.com.cn/problem/P5488 题目大意 求一个长度为$n$的序列的$k$阶差分/前缀和. 解题思路 先考虑前缀和怎么做 搞出来生成函数就 ...

  4. YbtOJ#493-最大分数【斜率优化dp,分治】

    正题 题目链接:http://www.ybtoj.com.cn/contest/117/problem/1 题目大意 \(n\)个数的一个序列,给其中的一些数打上标记. 一个标记方案的贡献为\(s_1 ...

  5. Python实现一个简单三层神经网络的搭建并测试

    python实现一个简单三层神经网络的搭建(有代码) 废话不多说了,直接步入正题,一个完整的神经网络一般由三层构成:输入层,隐藏层(可以有多层)和输出层.本文所构建的神经网络隐藏层只有一层.一个神经网 ...

  6. Unittest 框架之断言,你学会了吗??

    unittest断言 Python在 unittest.TestCase 类中提供了很多断言方法.断言方法检查你认为应该满足的条件是否确实满足.如果该条件确实满足,你对程序行为的假设就得到了确认,你就 ...

  7. Jenkins持续集成与部署

    一.Jenkins简介 在阅读此文章之前,你需要对Linux.Docker.Git有一定的了解和使用,如果还未学习,请阅读我前面发布的相关文章进行学习. 1.概念了解:CI/CD模型 CI全名Cont ...

  8. virtualbox 桥接模式网络配置虚拟机之间通讯以及虚拟机联网

    一般来说桥接模式可以解决所有的网络问题 网卡选择 [root@HELLO network-scripts]# cat ifcfg-eth0 TYPE="Ethernet" PROX ...

  9. 洛谷4631 [APIO2018] Circle selection 选圆圈 (KD树)

    qwq纪念AC450 一开始想这个题想复杂了. 首先,正解的做法是比较麻烦的. qwqq 那么就不如来一点暴力的东西,看到平面上点的距离的题,不难想到\(KD-Tree\) 我们用类似平面最近点对那个 ...

  10. selenium 4.0 发布

    我们非常高兴地宣布Selenium 4的发布.这适用于Java..net.Python.Ruby和Javascript.你可以从你最喜欢的包管理器或GitHub下载它! https://github. ...