1、Appium测试环境搭建整体思路

(1)Android测试环境搭建

Android测试环境需要搭建三个环境,JavaAndroidSDKAndroid模拟器

为什么要安装这三个环境?

  • Java:Android的应用程序层使用的语言是Java,所以需要使用Java环境。
  • AndroidSDK:Android SDK给你提供开发、测试所必须的Android API类库
  • Android模拟器:实际上就是一台手机,方便我们给大家展示效果。

(2)Appium测试环境搭建

Appium测试环境需要搭建:

  • Appium Server

    是Appium的核心,提供了一组REST API的Web服务器。

    Appium收到客户端的连接、监控命令,之后在移动设备上执行这些命令,最后把执行结果放在HTTP响应中返回给客户端。

    可以通过Node.js安装,也可以通过Appium Desktop启动Appium Server服务。
  • Appium Clients

    Appium官方提供了一套Appium client,涵盖多种语言Ruby/Java/Python等,

    在测试的时候,一般要使用这些client库去替换原生的webdriver库。

    让我们可以更方便的写出可读性更好的测试用例。
  • Devices

    就是我们的移动设备,可以是真实的手机,或者是电脑上的Android模拟器。

    (Android模拟器我们在上一步就完成了)

(3)测试脚本语言的环境搭建

例如:Pyhton、Java等开发环境。

要使用Pyhton语言写我们的测试脚本,就搭建Python语言的开发环境,包括开发工具。

要使用Java语言写我们的测试脚本,就搭建Java语言的开发环境,包括开发工具。

2、Appium在Android端和IOS端的工作流程

(1)Android端

在Android端,Appium基于WebDriver协议,利用Bootstrap.jar,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。

UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。

另外由于UiAutomator对H5的支持有限,Appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。

Appium 在Android端工作流:

  1. client端也就是我们test script(webdriver测试脚本)。
  2. 中间是起动的Appium的服务,Appium在服务端起了一个Server(4723端口),跟Selenium Webdriver测试框架类似, Appium支持标准的WebDriver JSON Wire Protocol

    在这里提供它提供了一套REST的接口,Appium Server接收webdriver client标准rest请求,解析请求内容,调用对应的框架响应操作。
  3. Appium Server会把请求转发给中间件Bootstrap.jar ,它是用Java写的,安装在手机上的Bootstrap监听4724端口并接收Appium的命令,最终通过调⽤用UiAutomator的命令来实现。
  4. 最后Bootstrap将执行的结果返回给Appium Server。
  5. Appium Server再将结果返回给Appium Client。

(2)iOS端

在iOS端,Appium同样使用WebDriver的一套协议。

与Android端测试框架不同的是,Appium iOS封装了Apple的Instruments框架,主要用了Instrument里的UI Automation(Apple的自动化测试框架),然后在设备中注入bootstrap.js进行监听。

Appium 在iOS端工作流:

  1. Client端 依然是test script(webdriver测试脚本)。
  2. 中间是起动的是Appium的服务,Appium在服务端起了一个Server(4723端口),跟Selenium Webdriver测试框架类似,Appium支持标准的WebDriver JSON Wire Protocol

    在这里提供它提供了一套REST的接口,Appium Server接收webdriver client标准rest请求,解析请求内容,调用对应的框架响应操作。
  3. Appium Server调用instruments.js启动⼀一个socket server,同时分出一个子进程运行instruments.app,将bootstrap.js(一个UIAutomation脚本)注入到device用于和外界进行交互
  4. 最后Bootstrap.js将执行的结果返回给Appium Server
  5. Appium Server再将结果返回给 Appium Client。

(3)总结

所以我们可以看到Android与iOS区别在于Appium将请求转发到bootstrap.js或者bootstrap.jar

然后由bootstrap驱动UIAutomationUiAutomator去Devices上完成具体的动作。

如下图所示:

3、ADB执行原理和Appium执行原理

(1)ADB原理

ADB原理简易模型图 (跟着12345步骤走),如下图所示:

(2)ADB实际操作原理参考图

如下图所示:

(3)Appium原理

Appium简易原理图(跟着序号12345678走),如下图所示:

(4)Appium原理实际参考图( 结合简易原理图 )

如下图所示:

参考:

『与善仁』Appium基础 — 14、Appium测试环境搭建的更多相关文章

  1. 『动善时』JMeter基础 — 14、使用JMeter发送Post请求

    目录 1.Post请求参数类型说明 2.用于演示的项目说明 3.发送Post请求示例 (1)测试计划内包含的元件 (2)请求参数类型为x-www-form-urlencoded 4.请求参数form- ...

  2. 『与善仁』Appium基础 — 8、Appium自动化测试框架介绍

    目录 1.主流的移动端自动化测试框架 (1)Robotium (2)Macaca (3)Appium 2.自动化测试工具的选择 3.Appium简介 提示:我们前面说的Android环境搭建和adb命 ...

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

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

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

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

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

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

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

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

  7. Appium robotframework-appium (ios 客户端测试)环境搭建

    一. 简介 1.1摘要 本人测试新人,最近在搞ios客户端的自动化,准备采用robotframework-appium来实现自动化测试,一边学习一边总结,此安装说明文档是基于mac系统10.11版本, ...

  8. Appium Mac系统 自动测试环境搭建

    一.python 环境准备 Mac 自带 Python 环境,一般为 2.7 版本. 1.查看当前系统默认的Python路径 which python ==> /usr/bin/python 2 ...

  9. 『与善仁』Appium基础 — 20、Appium元素定位

    目录 1.by_id定位 2.by_name定位 3.by_class_name定位 4.by_xpath定位 5.by_accessibility_id定位 6.by_android_uiautom ...

随机推荐

  1. pycharm中安装和使用sqlite过程详解

    创建Django项目,添加app 使用虚拟环境 项目创建默认使用的Django数据库是sqlite 配置静态文件 STATIC_URL = '/static/' # HTML中使用的静态文件夹前缀 S ...

  2. .jar文件没有Java(TM) Platform SE binary打开方式解决办法

    下面是我个人在打开.jar文件时候的一些小问题: 明明已经配置好了环境变量.jar文件却没有 Java(TM) Platform SE binary 的打开方式, 网上查了资料点明是环境变量的问题,后 ...

  3. Android构建工具--AAPT2源码解析(一)

    一.什么是AAPT2 在Android开发过程中,我们通过Gradle命令,启动一个构建任务,最终会生成构建产物"APK"文件.常规APK的构建流程如下: (引用自Google官方 ...

  4. [no_code][Beta]发布声明报告

    $( "#cnblogs_post_body" ).catalog() 软件下载 一个全新的超简易的OCR表单识别工具 轻松拍照,实现手写表格识别 一键打开,支持多种应用打开你的表 ...

  5. 第4次 Beta Scrum Meeting

    本次会议为Beta阶段第4次Scrum Meeting会议 会议概要 会议时间:2021年6月4日 会议地点:「腾讯会议」线上进行 会议时长:0.5小时 会议内容简介:对完成工作进行阶段性汇报:对下一 ...

  6. elasticsearch嵌套对象的映射

    在es中,我们有时候可能需要映射,{ "field" : "xx" , "field01" : [] }这样格式的嵌套对象,默认情况下es会 ...

  7. 為什麼我的手機連Wi-Fi速度總是卡在75Mbps?Wi-Fi速度解惑~帶你一次看懂!

    正文字体大小:大 中 小 為什麼我的手機連Wi-Fi速度總是卡在75Mbps?Wi-Fi速度解惑-帶你一次看懂! (2017-02-21 10:57:48) 转载▼ 标签: wi-fi速度 手機wi- ...

  8. 把数组排成最小的数 牛客网 剑指Offer

    把数组排成最小的数 牛客网 剑指Offer 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能 ...

  9. Python NameError:name ‘xrange’ is not defined

    在python3 中会出这个问题,而xrange( )函数时在python 2.x中的一个函数,在Python 3中,range()的实现方式与xrange()函数相同,所以就不存在专用的xrange ...

  10. 『学了就忘』Linux基础命令 — 18、Linux命令的基本格式

    目录 1.命令提示符说明 2.命令的基本格式 (1)举例ls命令 (2)说明ls -l命令的 输出内容 1.命令提示符说明 [root@localhost ~] # []:这是提示符的分隔符号,没有特 ...