Appium 学习笔记 -- 1. 安装和验证
文章目录
- 背景
- 安装步骤
- 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
中 :
%ANDROID_HOME%\tools
%ANDROID_HOME%\platform-tools
安装步骤
1. 安装 appium
打开一个cmd
窗口,使用如下命令安装appium
:
npm install -g appium --registry=https://registry.npm.taobao.org
备注 :
- 全局安装
- 使用国内淘宝镜像以提高速度
安装完成后使用如下命令查看所安装的appium
版本 :
appium -v
结果输出 :
1.16.0
2. 安装 appium-doctor
打开一个cmd
窗口,使用如下命令安装appium-doctor
:
npm install -g appium-doctor --registry=https://registry.npm.taobao.org
备注 :
- 全局安装
- 使用国内淘宝镜像以提高速度
安装完成后使用如下命令查看所安装的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
创建一个测试脚本 :
npm init -y
npm install webdriverio
- 创建脚本如下
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
虚拟机测试脚本执行截屏
参考资料
- Appium Get Started
- The UiAutomator2 Driver for Android
- Introduction to Appium
Appium 学习笔记 -- 1. 安装和验证相关推荐
- appium学习笔记
appium学习笔记 第1节.2节课appium介绍和安装 开源.跨平台.多语言支持的移动应用自动化工具 测试对象 原生APP 混合APP 移动APP APP运行环境 真实设备 虚拟设备 测试程序语言 ...
- OracleDesigner学习笔记1――安装篇
OracleDesigner学习笔记1――安装篇 QQ:King MSN:qiutianwh@msn.com Email:qqking@gmail.com 一. 前言 Oracle是当 ...
- linux sipp 呼叫转移_SIPp 学习笔记 一 (安装)
SIPp学习笔记一(安装) SIPp可以用来测试各种sip的设备,如终端电话或者proxy,包括功能和性能上的(性能上只能在linux平台下才可以;)具体的描述可以去参照SIPp的官方网站; http ...
- homeassistant mysql_HomeAssistant学习笔记docker安装的ha更换数据库
HomeAssistant学习笔记docker安装的ha更换数据库 用了一段时间之后发现日志和历史打开的速度越来越慢,在论坛里查了半天发现是因为HA官方所用数据库导致,官方也给出了相关文档,https ...
- mesos 学习笔记-- mesos安装和配置
2019独角兽企业重金招聘Python工程师标准>>> mesos 学习笔记-- mesos安装和配置 博客分类: 架构 mesos 参考资料: 官方文档:http://mesos. ...
- homeassistant mysql_学习笔记 篇三:HomeAssistant学习笔记docker安装的ha更换数据库
学习笔记 篇三:HomeAssistant学习笔记docker安装的ha更换数据库 2018-11-15 12:06:58 4点赞 18收藏 3评论 是返乡过年?还是就地过年?最新一届#双面过节指南# ...
- Joomla 学习笔记-----Joomla 安装
Joomla 学习笔记-----Joomla 安装 1.Joomla安装 自己建的web服务器地址:10.170.89.116 下载Joomla 3.2 并解压 解压后的目录: 使用FileZill ...
- ZED相机学习笔记1——安装与配置(Win10 + Python)
系列文章目录 ZED相机学习笔记1--安装与配置(Win10 + Python) 文章目录 系列文章目录 前言 一.ZED2 相机 二.配置ZED相机环境 1.安装CUDA 2.安装ZED-SDK 3 ...
- python数组 swig_学习笔记:安装swig+用SWIG封装C++为Python模块+SWIG使用说明
这段时间一直在摸索swing,用它来封装C++代码来生成python脚步语言.并总结了swing从安装到配置再到代码封装编译生成动态库的整个过程,下面这篇文章都是我在实际的运用中的一些经验总结,分享给 ...
最新文章
- Mysql分页order by数据错乱重复
- golang string切片解析json
- 【PAT乙级】1036 跟奥巴马一起编程 (15 分)
- jvm调优:能生成的线程数
- javascript中数组的22种方法
- LeetCode 1620. 网络信号最好的坐标
- w10计算机,打开win10自带计算器的多种方法
- 打印纸张尺寸换算_各种打印纸的尺寸是多少?
- 武汉的二本计算机学校有哪些,武汉二本大学有哪些学校
- 汽车/车载/自动驾驶/辅助驾驶相关认知记录
- 阿里云IoTStudio中的“移动可视化开发”不见了
- 三极管(如NPN)集电极正偏 发射极反偏会怎么样呢? 电流会倒流吗? 其他三种都知道,就是不知道这种情况
- Jupyter notebook远程访问服务器
- 亚马逊程序员:我曾拼命逃离996!
- mysql查询表中不重复数据
- python简单入门——画多啦A梦
- oracle evaluate,ORACLE VERSIONS 用法 | 学步园
- springboot的java打印票据-4
- Microsoft Visual Studio 2015 Installer Projects 打包 安装 部署
- 苏州新导RFID仓储管理系统带领仓库领域走向智能化