文章目录

  • 背景
  • 安装步骤
    • 1. 安装 appium
    • 2. 安装 appium-doctor
    • 3. 使用 appium-doctor 检测 appium 工作环境
  • 4. 运行一个 android 测试
    • 4.1 下载测试应用
    • 4.2 新建测试脚本
    • 4.3 启动 appium
    • 4.4 打开一个安卓虚拟器
    • 4.5 运行测试脚本
  • 虚拟机测试脚本执行截屏
  • 参考资料

appium有两种安装方式,一种是使用npm命令行安装方式,另外一种是下载Appium Desktop图形化界面安装。本文使用npm命令行安装方式。

背景

  • 操作系统 : Windows 10 64位 专业版
  • node 已经安装 (v.10.16.3)
  • Java 已经安装 (jdk1.8.0_77)
    • 环境变量 JAVA_HOME 已经设置
  • Android SDK 已经安装
    • 环境变量 ANDROID_HOME 已经设置

为了命令行使用各种工具方便,我已经将以下内容添加到环境变量PATH中 :

  1. %ANDROID_HOME%\tools
  2. %ANDROID_HOME%\platform-tools

安装步骤

1. 安装 appium

打开一个cmd窗口,使用如下命令安装appium:

npm install -g appium --registry=https://registry.npm.taobao.org

备注 :

  1. 全局安装
  2. 使用国内淘宝镜像以提高速度

安装完成后使用如下命令查看所安装的appium版本 :

appium -v

结果输出 :

1.16.0

2. 安装 appium-doctor

打开一个cmd窗口,使用如下命令安装appium-doctor:

npm install -g appium-doctor --registry=https://registry.npm.taobao.org

备注 :

  1. 全局安装
  2. 使用国内淘宝镜像以提高速度

安装完成后使用如下命令查看所安装的appium-doctor版本 :

appium-doctor --version

结果输出 :

1.13.0

3. 使用 appium-doctor 检测 appium 工作环境

cmd窗口中,使用如下命令检测针对android平台appium安装是否就绪 :

appium-doctor --android

然后你会看到类似如下结果 :

info AppiumDoctor Appium Doctor v.1.13.0
info AppiumDoctor ### Diagnostic for necessary dependencies starting ###
info AppiumDoctor  ✔ The Node.js binary was found at: D:\Program Files\nodejs\node.EXE
info AppiumDoctor  ✔ Node version is 10.16.3
info AppiumDoctor  ✔ ANDROID_HOME is set to: D:\programs\Android\sdk
info AppiumDoctor  ✔ JAVA_HOME is set to: C:\Program Files\Java\jdk1.8.0_77
info AppiumDoctor  ✔ adb exists at: D:\programs\Android\sdk\platform-tools\adb.exe
info AppiumDoctor  ✔ android exists at: D:\programs\Android\sdk\tools\android.bat
info AppiumDoctor  ✔ emulator exists at: D:\programs\Android\sdk\tools\emulator.exe
info AppiumDoctor  ✔ Bin directory of %JAVA_HOME% is set
info AppiumDoctor ### Diagnostic for necessary dependencies completed, no fix needed. ###
info AppiumDoctor
info AppiumDoctor ### Diagnostic for optional dependencies starting ###
WARN AppiumDoctor  ✖ opencv4nodejs cannot be found.
info AppiumDoctor  ✔ ffmpeg is installed at: C:\Program Files\ImageMagick-7.0.9-Q16\ffmpeg.EXE. ffmpeg version 4.2 Copyright (c) 2000-2019 the FFmpeg developers
WARN AppiumDoctor  ✖ mjpeg-consumer cannot be found.
WARN AppiumDoctor  ✖ bundletool.jar cannot be found
info AppiumDoctor ### Diagnostic for optional dependencies completed, 3 fixes possible. ###
info AppiumDoctor
info AppiumDoctor ### Optional Manual Fixes ###
info AppiumDoctor The configuration can install optionally. Please do the following manually:
WARN AppiumDoctor  ➜ Why opencv4nodejs is needed and how to install it: https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/image-comparison.md
WARN AppiumDoctor  ➜ mjpeg-consumer module is required to use MJPEG-over-HTTP features. Please install it with 'npm i -g mjpeg-consumer'.
WARN AppiumDoctor  ➜ bundletool.jar is used to handle Android App Bundle. Please read http://appium.io/docs/en/writing-running-appium/android/android-appbundle/ to install it. Also consider adding the ".jar" extension into your PATHEXT environment variable in order to fix the problem for Windows
info AppiumDoctor
info AppiumDoctor ###
info AppiumDoctor
info AppiumDoctor Bye! Run appium-doctor again when all manual fixes have been applied!
info AppiumDoctor

备注 :
以上结果第一部分是必要依赖部分,由以上结果可见,所有必要的依赖条件都满足了,这说明appium在本机可以正常使用了。

4. 运行一个 android 测试

4.1 下载测试应用

  • 测试应用 ApiDemos 下载位置

这是一个由 appium 官方提供的测试应用。
假设该应用下载到本地以后,保存为 d:\ApiDemos-debug.apk

4.2 新建测试脚本

基于Webdriver.io创建一个测试脚本 :

  1. npm init -y
  2. npm install webdriverio
  3. 创建脚本如下index.js
// javascriptconst wdio = require("webdriverio");
const assert = require("assert");const opts = {port: 4723,capabilities: {platformName: "Android",platformVersion: "8",deviceName: "Android Emulator",app: "d:\\ApiDemos-debug.apk",appPackage: "io.appium.android.apis",appActivity: ".view.TextFields",automationName: "UiAutomator2"}
};async function main () {const client = await wdio.remote(opts);const field = await client.$("android.widget.EditText");await field.setValue("Hello World!");const value = await field.getText();assert.equal(value,"Hello World!");await client.deleteSession();
}main();

注意这里使用的android平台版本为8,这里要求下面使用的android虚拟机跟这里一致。

4.3 启动 appium

打开一个cmd命令行窗口,使用如下命令行启动appium :

appium

4.4 打开一个安卓虚拟器

注意上面的测试脚本中使用的android平台版本为8,所以要求这里使用的android虚拟机也是版本8

4.5 运行测试脚本

node index.js

可以观测到如下运行结果 :

  • 控制台输出
D:\tmp\Appium>node index.js
2020-01-13T07:11:59.156Z INFO webdriverio: Initiate new session using the webdriver protocol
2020-01-13T07:11:59.163Z INFO webdriver: [POST] http://localhost:4723/wd/hub/session
2020-01-13T07:11:59.164Z INFO webdriver: DATA { capabilities:{ alwaysMatch:{ platformName: 'Android',platformVersion: '8',deviceName: 'Android Emulator',app: 'd:\\ApiDemos-debug.apk',appPackage: 'io.appium.android.apis',appActivity: '.view.TextFields',automationName: 'UiAutomator2' },firstMatch: [ {} ] },desiredCapabilities:{ platformName: 'Android',platformVersion: '8',deviceName: 'Android Emulator',app: 'd:\\ApiDemos-debug.apk',appPackage: 'io.appium.android.apis',appActivity: '.view.TextFields',automationName: 'UiAutomator2' } }
2020-01-13T07:12:15.130Z INFO webdriver: COMMAND findElement("class name", "android.widget.EditText")
2020-01-13T07:12:15.134Z INFO webdriver: [POST] http://localhost:4723/wd/hub/session/e1483a67-07ec-40ca-a943-9b7df98c019c/element
2020-01-13T07:12:15.135Z INFO webdriver: DATA { using: 'class name', value: 'android.widget.EditText' }
2020-01-13T07:12:17.016Z INFO webdriver: RESULT { 'element-6066-11e4-a52e-4f735466cecf': 'adb1f252-017b-48d5-999c-d0592fd307c2',ELEMENT: 'adb1f252-017b-48d5-999c-d0592fd307c2' }
2020-01-13T07:12:17.030Z INFO webdriver: COMMAND elementClear("adb1f252-017b-48d5-999c-d0592fd307c2")
2020-01-13T07:12:17.031Z INFO webdriver: [POST] http://localhost:4723/wd/hub/session/e1483a67-07ec-40ca-a943-9b7df98c019c/element/adb1f252-017b-48d5-999c-d0592fd307c2/clear
2020-01-13T07:12:17.080Z INFO webdriver: COMMAND elementSendKeys("adb1f252-017b-48d5-999c-d0592fd307c2", "Hello World!", <object>)
2020-01-13T07:12:17.083Z INFO webdriver: [POST] http://localhost:4723/wd/hub/session/e1483a67-07ec-40ca-a943-9b7df98c019c/element/adb1f252-017b-48d5-999c-d0592fd307c2/value
2020-01-13T07:12:17.084Z INFO webdriver: DATA { text: 'Hello World!',value:[ 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!' ] }
2020-01-13T07:12:18.570Z INFO webdriver: COMMAND getElementText("adb1f252-017b-48d5-999c-d0592fd307c2")
2020-01-13T07:12:18.575Z INFO webdriver: [GET] http://localhost:4723/wd/hub/session/e1483a67-07ec-40ca-a943-9b7df98c019c/element/adb1f252-017b-48d5-999c-d0592fd307c2/text
2020-01-13T07:12:19.275Z INFO webdriver: RESULT Hello World!
2020-01-13T07:12:19.282Z INFO webdriver: COMMAND deleteSession()
2020-01-13T07:12:19.286Z INFO webdriver: [DELETE] http://localhost:4723/wd/hub/session/e1483a67-07ec-40ca-a943-9b7df98c019c

虚拟机测试脚本执行截屏

参考资料

  1. Appium Get Started
  2. The UiAutomator2 Driver for Android
  3. Introduction to Appium

Appium 学习笔记 -- 1. 安装和验证相关推荐

  1. appium学习笔记

    appium学习笔记 第1节.2节课appium介绍和安装 开源.跨平台.多语言支持的移动应用自动化工具 测试对象 原生APP 混合APP 移动APP APP运行环境 真实设备 虚拟设备 测试程序语言 ...

  2. OracleDesigner学习笔记1――安装篇

    OracleDesigner学习笔记1――安装篇   QQ:King MSN:qiutianwh@msn.com Email:qqking@gmail.com 一.       前言 Oracle是当 ...

  3. linux sipp 呼叫转移_SIPp 学习笔记 一 (安装)

    SIPp学习笔记一(安装) SIPp可以用来测试各种sip的设备,如终端电话或者proxy,包括功能和性能上的(性能上只能在linux平台下才可以;)具体的描述可以去参照SIPp的官方网站; http ...

  4. homeassistant mysql_HomeAssistant学习笔记docker安装的ha更换数据库

    HomeAssistant学习笔记docker安装的ha更换数据库 用了一段时间之后发现日志和历史打开的速度越来越慢,在论坛里查了半天发现是因为HA官方所用数据库导致,官方也给出了相关文档,https ...

  5. mesos 学习笔记-- mesos安装和配置

    2019独角兽企业重金招聘Python工程师标准>>> mesos 学习笔记-- mesos安装和配置 博客分类: 架构 mesos 参考资料: 官方文档:http://mesos. ...

  6. homeassistant mysql_学习笔记 篇三:HomeAssistant学习笔记docker安装的ha更换数据库

    学习笔记 篇三:HomeAssistant学习笔记docker安装的ha更换数据库 2018-11-15 12:06:58 4点赞 18收藏 3评论 是返乡过年?还是就地过年?最新一届#双面过节指南# ...

  7. Joomla 学习笔记-----Joomla 安装

    Joomla 学习笔记-----Joomla 安装 1.Joomla安装 自己建的web服务器地址:10.170.89.116 下载Joomla 3.2  并解压 解压后的目录: 使用FileZill ...

  8. ZED相机学习笔记1——安装与配置(Win10 + Python)

    系列文章目录 ZED相机学习笔记1--安装与配置(Win10 + Python) 文章目录 系列文章目录 前言 一.ZED2 相机 二.配置ZED相机环境 1.安装CUDA 2.安装ZED-SDK 3 ...

  9. python数组 swig_学习笔记:安装swig+用SWIG封装C++为Python模块+SWIG使用说明

    这段时间一直在摸索swing,用它来封装C++代码来生成python脚步语言.并总结了swing从安装到配置再到代码封装编译生成动态库的整个过程,下面这篇文章都是我在实际的运用中的一些经验总结,分享给 ...

最新文章

  1. Mysql分页order by数据错乱重复
  2. golang string切片解析json
  3. 【PAT乙级】1036 跟奥巴马一起编程 (15 分)
  4. jvm调优:能生成的线程数
  5. javascript中数组的22种方法
  6. LeetCode 1620. 网络信号最好的坐标
  7. w10计算机,打开win10自带计算器的多种方法
  8. 打印纸张尺寸换算_各种打印纸的尺寸是多少?
  9. 武汉的二本计算机学校有哪些,武汉二本大学有哪些学校
  10. 汽车/车载/自动驾驶/辅助驾驶相关认知记录
  11. 阿里云IoTStudio中的“移动可视化开发”不见了
  12. 三极管(如NPN)集电极正偏 发射极反偏会怎么样呢? 电流会倒流吗? 其他三种都知道,就是不知道这种情况
  13. Jupyter notebook远程访问服务器
  14. 亚马逊程序员:我曾拼命逃离996!
  15. mysql查询表中不重复数据
  16. python简单入门——画多啦A梦
  17. oracle evaluate,ORACLE VERSIONS 用法 | 学步园
  18. springboot的java打印票据-4
  19. Microsoft Visual Studio 2015 Installer Projects 打包 安装 部署
  20. 苏州新导RFID仓储管理系统带领仓库领域走向智能化

热门文章

  1. Activiti7工作流引擎-环境搭建及创建数据库
  2. 杨辉三角(C语言实现)
  3. STM32 汇编程序——串口输出 Hello world
  4. 新东方雅思词汇---6.2、重音在词根上,不在前后缀(名词除外)
  5. IT男,你应该在任何行业所向披靡
  6. [SDOI2012]拯救小云公主
  7. Cocos creator Graphics绘制线条却出现的是填充图案
  8. 字库芯片GT20L16S1Y使用记录
  9. python数据分析pandas_利用Python进行数据分析笔记-pandas建模(Patsy篇)
  10. Kotlin版 极简 干货集中营 APP