Appium是一个可用于测试iOS、 Android操作系统和Windows桌面平台原生应用,移动网页应用和混合应用的自动化测试框架。

  • 原生应用(Native App):用 android、iOS或者Windows SDK编写的应用

  • 移动网页应用(Web App):通过手机浏览器访问的网页应用,比如iOS中 safari应用,Android上的Chrome应用或者内置浏览器应用,不会占用手机的存储空间。

  • 混合应用(Hybrid App):同时具备Native App和Web App的特性,一种 webview应用,将Javascript,HTML和CSS执行在embedded webview中,外层用Native App wrapper包起來。

Appium 跨语言支持:Java、 Python、 Ruby、JavaScript (Node.js)、PHP、C# (.NET)、RobotFramework等,Appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。

Appium架构

Appium引擎列表

  • Android 4.3+

    • UIAutomator
    • UIAutomator2[推荐]
  • iOS
    • UIAutomation (iOS ≤ 9.3)
    • XCUITest[推荐] (iOS ≥ 9.3)
  • Windows:
    • WinAppDriver

Appium的设计理念

Client/Server设计模式

Appium采用 C/S架构,Appium与客户端建立连接并监听命令,然后在移动设备上执行这些命令,命令执行结果通过 HTTP 响应的方式返回。客户端通过 WebDriver json wire协议与服务端通讯。由于Appium的这种特性,我们可以将Appium server放在与测试机不同的机器上。Appium Server是使用 Node.js 编写的HTTP服务。

session 会话

Appium自动化执行时会首先拉起一个session会话,客户端和服务器之间初始化一个session,通过发送一个POST /session建立连接,客户端的post请求中携带一个称为 'desired capabilities‘ 的JSON对象,定义设备平台(iOS或Android)、版本、server地址等请求字段,后面的文章将详细介绍。服务器接收到请求后会建立一个session并回应一个session ID,建立好连接后就可以发送命令了。

Appium Clients

Appium支持多语言,包括Java, Ruby, Python, PHP, JavaScript, 和 C#,这些客户端库支持WebDriver 协议扩展。

语言/框架 Github仓库地址
Ruby https://github.com/appium/ruby_lib, https://github.com/appium/ruby_lib_core
Python https://github.com/appium/python-client
Java https://github.com/appium/java-client
JavaScript (Node.js) https://github.com/admc/wd
JavaScript (Node.js) https://github.com/webdriverio/webdriverio
JavaScript (Browser) https://github.com/projectxyzio/web2driver
Objective C https://github.com/appium/selenium-objective-c
PHP https://github.com/appium/php-client
C# (.NET) https://github.com/appium/appium-dotnet-driver
RobotFramework https://github.com/serhatbolsu/robotframework-appiumlibrary

Appium生态工具

  • adb:android的控制工具,用于获取 android的各种数据和控制

  • Appium Desktop:内嵌了 appium server和inspector的综合工具

  • Appium Server:appium的核心工具,命令行工具

  • Appium client:各种语言的客户端封装库,用于连接 appium server

  • AppCrawler:自动遍历工具

appium使用 appium-xcuitest-driver来测试iPhone设备,其中需要安装 facebook开发的WDA(webdriver agent)来驱动iOS测试,下面介绍Android APP测试环境安装。

Appium环境安装

  • Java1.8版本
  • Android sdk
  • Node.js(>=10 版本),npm(>=6 版本)
  • Python3
  • Appium-desktop
  • Appium python client

1、安装Node.js

  • Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境
  • Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
  • 是运行在服务端的 JavaScript

https://nodejs.org/en/download/

命令行窗口中运行node -v 查看是否安装成功

2、安装jdk

jdk下载下载地址:

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

按照默认路径安装

配置环境变量

“我的电脑”右键菜单--->属性--->高级--->环境变量--->系统变量-->新建

  • 变量名:JAVA_HOME 

    变量值:C:\Program Files (x86)\Java\jdk1.8.0_144
  • 变量名:CALSS_PATH

    变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

找到path变量名—>“编辑”添加:

  • 变量名:PATH

    变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

查看是否安装成功:java -version

3. 安装Android SDK

Android SDK是Google提供的Android开发工具包,在开发Android应用的时候会用到,需要通过引入工具包来调用Android的API

下载地址:https://developer.android.com/

中文社区的SDK下载地址:http://tools.android-studio.org/index.php/sdk

双击打开SDK Manage.exe,安装API版本和对应的工具包,这些在运行模拟器和真机测试的时候会使用到。

配置环境变量

新建环境变量ANDROID_HOME,变量值为sdk的路径:E:\Android\android-sdk

“我的电脑”右键菜单--->属性--->高级--->环境变量--->系统变量-->新建

  • 变量名:ANDROID_HOME 

    变量值:D:\android\android-sdk-windows

找到环境变量path—>“编辑”添加:

  • 变量名:PATH

    • 变量值:;% ANDROID_HOME%\platform-tools;

    • 变量值:% ANDROID_HOME%\build-tools;

    • 变量值:% ANDROID_HOME%\tools;

tools目录下运行android命令,platform-tools目录运行adb命令

检验Android SDK是否安装成功:adb version

4. 安装Appium

下载地址:https://bitbucket.org/appium/appium.app/downloads/?tab=downloads

  • 安装完成后添加到环境变量
  • 把安装的appium文件夹的Appium\node_modules.bin加到系统环境变量path中

运行appium-doctor,检测appium运行环境的工具

5. 安装appium-desktop

下载地址:https://github.com/appium/appium-desktop/releases/tag/v1.15.1

6. 下载Appium-Python-Client

下载链接:https://pypi.org/project/Appium-Python-Client/

运行python setup.py install安装

或者运行 pip install Appium-Python-Client 安装。

--THE END--

文章标题:Appium 介绍及环境安装

本文作者:hiyo

本文链接:https://www.cnblogs.com/hiyong/p/14163337.html

欢迎关注公众号:「测试开发小记」及时接收最新技术文章!

Appium 介绍及环境安装的更多相关文章

  1. Appium 介绍与环境搭建

    目录 Appium 介绍 APP 自动化测试介绍 什么是 Appium ? Appium 优势 Appium 架构 Appium 生态 Appium 组件 UiAutomator API Bootst ...

  2. RabbitMQ简单介绍+Windows环境安装

    文章目录 1.RabbitMQ简介2.RabbitMQ与其他MQ有什么不同3.RabbitMQ环境安装3.1 安装erlang3.2 安装rabbitmq-server4. RabbitMQ管理平台介 ...

  3. Appium简介以及环境安装

    官网地址 Appium 是一个自动化测试开源工具,支持多平台上的原生应用,web应用和混合应用,是由appium server和appium Client两部分组成通过json wire protoc ...

  4. Redis介绍和环境安装

    -------------------Redis环境安装------------------- 1.安装     1.卸载软件         sudo apt-get remove redis-se ...

  5. selenium介绍及环境安装

      selenium简介: seelenium是web应用程序自动化工具,通过自动操作浏览器,进行点击.输入.回车.返回等来模拟用户的真实行为.如何理解和看待selenium项目,selenium官方 ...

  6. Appium 自动化测试(1)--环境安装:安装Appium

    一.安装nodejs Node.js安装包及源码下载地址为:https://nodejs.org/en/download/. 安装过程参考:http://www.runoob.com/nodejs/n ...

  7. Appium——appium之mac环境安装

    一.安装brew:Homebrew是一款Mac OS平台下的软件包管理工具执行:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubuserco ...

  8. GeoTools介绍、环境安装、读取shp文件并显示

    GeoTools是一个开放源代码(LGPL)Java代码库,它提供了符合标准的方法来处理地理空间数据,例如实现地理信息系统(GIS).GeoTools库实现了开放地理空间联盟(OGC)规范. Geot ...

  9. appium+android测试环境安装

    1. jdk配置 一.背景 JDK已经更新到12了,但是由于很多工具仍然未及时更新,故推荐最稳定的JDK版本1.8.x: JDK需要配置通常情况下,JDK配置分为三项: JAVA_HOME:某些软件仍 ...

随机推荐

  1. 小程序setData 修改数组附带索引解决办法

    this.setData({'judge[current]':true}); 以此句进行修改值,会报错 Error: Only digits (0-9) can be put inside [] in ...

  2. Day5 Scrum 冲刺博客

    一.站立式会议# 1. 会议照片 2. 工作进度+燃尽图 团队成员 昨日完成工作 今日工作计划 遇到的困难 周梓波 将方块分类并抽象成类 将方块旋转变形 逻辑漏洞较多 纪昂学 绘制游戏背景,方块,状态 ...

  3. 学习笔记:Kruscal 重构树

    网上感觉没有什么很详细 + 证明的讲解啊) 前置:Kruskal 求最小生成树. 这个算法可以将一棵树 / 无向连通图重构成一颗有性质的新树. 算法可以解决一些树上瓶颈边权之类的问题,可以把需要持久化 ...

  4. SseEmitter推送

    后端代码SseController.java package com.theorydance.mywebsocket.server; import java.util.HashMap; import ...

  5. 使用plesk遇到的问题

    按照plesk使用指南中,"快速建站"的部分,配置一番后,还是访问不了网站. 后来解决了,原因如下: 主域名没有解析,只解析了,带www的子域名 80端口没开

  6. Spring中毒太深,离开Spring我居然连最基本的接口都不会写了

    前言 随着 Spring 的崛起以及其功能的完善,现在可能绝大部分项目的开发都是使用 Spring(全家桶) 来进行开发,Spring也确实和其名字一样,是开发者的春天,Spring 解放了程序员的双 ...

  7. sql注入之双查询注入

    双查询注入前需要了解什么是子查询 子查询可以理解在一个select语句中再插入一个select 里面的select语句就是子查询 例子:select concat((select database() ...

  8. [python学习手册-笔记]004.动态类型

    004.动态类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明作者和出 ...

  9. 用DirectX 11绘制一个Cube

    之前一篇文章讲了如何初始化DirectX 11,现在在此基础上绘制一个Cube,总体可概括为以下几个步骤: 定义Cube顶点数据结构 创建Vertex Buffer和Index Buffer 编写应用 ...

  10. Java篇:Docker的介绍安装 和常用命令

    文章目录 为什么 出现docker Docker的简介 容器(Container) 镜像(Image) 仓库(Repository) Docker的安装 查看容器 删除镜像 删除容器 部署应用 以my ...