Appium
1 配置一系列环境:
01. 环境依赖
- Node.js
- Appium
- Appium-desktop
- Appium-doctor
- Appium-Python-Client
- Python
- JDK
- Andriod SDK
02. 安装Node.js
下载地址:https://nodejs.org/en/download/releases/
注意:Node.js版本要注意与Appium兼容,本套教程Appium版本是1.13.0,则选择的Node.js版本为10.14.2
安装完成后在按键Win+R输入cmd打开Windows 命令提示符,
输入如下命令:
C:\Users\mobilefly>node -v
v10.14.2
C:\Users\mobilefly>npm -v
6.4.1
说明:
- npm(node package manage)是node.js安装包管理工具,类似Python中的pip工具。
- 如果显示‘npm’不是内部命令提示,则可以管理员省份运行cmd,如果还是失败,则需要检查一下环境变量是否配置,或者重新安装nodejs。
03. Appium 安装
Appium Server其实可以通过命令 npm install -g appium来安装。不过由于众所周知的网络原因,直接使用这样安装会非常非常慢,甚至会安装失败,所以我们可以使用国内镜像来安装。
选用的镜像是 淘宝NPM镜像
04. 镜像设置
npm install -g cnpm --registry=https://registry.npm.taobao.org
执行完成命令看到如下提示则表示设置完成
C:\Users\Shuqing> npm install -g cnpm --registry=https://registry.npm.taobao.org
npm WARN deprecated socks@1.1.10: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0
C:\Users\Shuqing\AppData\Roaming\npm\cnpm -> C:\Users\Shuqing\AppData\Roaming\npm\node_modules\cnpm\bin\cnpm
+ cnpm@5.2.0
added 764 packages in 63.767s
05. appium 安装
使用如下命令来执行安装:
#安装最新版本
cnpm install -g appium
#安装指定版本
cnpm install appium@1.7.2 -g
看到如下命令时则表示下载安装完成。
All packages installed (565 packages installed from npm registry, used 57s, speed 835.67kB/s, json 477(6.16MB), tarball 40.58MB)
[appium@1.8.0] link C:\Users\Shuqing\AppData\Roaming\npm\appium@ -> C:\Users\Shuqing\AppData\Roaming\npm\node_modules\appium\build\lib\main.js
npm的包安装分为本地安装(local)、全局安装(global)两种,一般我们推荐使用全局安装。
06. appium配置
安装完成之后可以使用如下命令查看appium的安装路径
C:\Users\Shuqing>where appium
C:\Users\Shuqing\AppData\Roaming\npm\appium
C:\Users\Shuqing\AppData\Roaming\npm\appium.cmd
07. appium运行
在控制台输入命令 appium即可启动appium服务,appium -v查看版本
C:\Users\Shuqing>appium -v
1.7.2
C:\Users\Shuqing>appium
[Appium] Welcome to Appium v1.7.2
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
如果输入appium后显示:“appium不是内部或外部命令,也不是可运行的程序或批处理文件” 可以将appium安装的路径 如: “C:\Users\Shuqing\AppData\Roaming\npm”配置到系统环境变量Path中
08. 退出appium
按键 ctrl+c 选择y 即可退出
09. 安装Appium-desktop
下载地址:https://github.com/appium/appium-desktop/releases
上面提到的问题可以使用前面我们已经介绍了Appium Server来解决,Appium-desktop工具其实也封装了Appium server和Node.js依赖环境。
appium-desktop是我们初学者最容易上手的工具,后面课程首先会基于这个工具来讲解!然后再基于appium 命令来讲。
10. python环境安装配置
下载:https://www.python.org/downloads/release/python-278/
配置:https://www.cnblogs.com/huangbiquan/p/7784533.html
安装成功之后输入命令 python --version看到如下提示即可
C:\Users\Shuqing>python --version
Python 3.5.0
11. 安装Appium-Python-Client
client下载地址 :https://github.com/appium/python-client
通过命令: pip install Appium-Python-Client 进行安装。 安装后可以通过如下命令来检测是否安装成功。
输入命令“from appium import webdriver” 回车,如果控制台没有报错,则说明安装成功。
C:\Users\Shuqing>python
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from appium import webdriver
如果出现如下报错,则说明安装失败
ImportError: No module named 'appium'
ImportError: cannot import name “webdriver”
说明:装Appium-Python-Client安装后的路径一般为:
{Python 安装路径}\Lib\site-packages\appium
12. JDK安装配置
jdk下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
jdk环境变量配置
http://jingyan.baidu.com/article/624e74599e8ad834e8ba5a94.html
安装配置完成后,打开命令提示符窗口,然后输入如下面命令有对应提示说明安装配置成功。
C:\Users\Shuqing>java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
13. Andriod sdk 安装
下载地址: http://tools.android-studio.org/index.php/sdk
根据自己的PC平台下载对应版本即可。
安装完成后需要配置环境变量:ANDROID_HOME,
https://www.cnblogs.com/yxysuanfa/p/7251253.html
ANDROID_HOME=D:\adt-bundle\sdk
path=%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
adb/android环境变量配置成功后,cmd中分别输入adb。android list
14. 安装 appium-doctor
appium-doctor可以检测Appium整体依赖环境配置情况。
C:\Users\Shuqing>cnpm install appium-doctor -g
- 在控制台输入命令:appium-doctor 看到如下提示说明整体环境配置成功。
C:\Users\Shuqing>appium-doctor
info AppiumDoctor Appium Doctor v.1.4.3
info AppiumDoctor ### Diagnostic starting ###
info AppiumDoctor ✔ The Node.js binary was found at: D:\program files\nodejs\node.exe
info AppiumDoctor ✔ Node version is 6.11.3
info AppiumDoctor ✔ ANDROID_HOME is set to: E:\Andriod_sdk
info AppiumDoctor ✔ JAVA_HOME is set to: C:\Program Files\Java\jdk1.8.0_05
info AppiumDoctor ✔ adb exists at: E:\Andriod_sdk\platform-tools\adb.exe
info AppiumDoctor ✔ android exists at: E:\Andriod_sdk\tools\android.bat
info AppiumDoctor ✔ emulator exists at: E:\Andriod_sdk\tools\emulator.exe
info AppiumDoctor ✔ Bin directory of %JAVA_HOME% is set
info AppiumDoctor ### Diagnostic completed, no fix needed. ###
info AppiumDoctor
info AppiumDoctor Everything looks good, bye!
info AppiumDoctor
如果上面某一项显示为“X”则说明相关环境没有配置好,需要重新安装配置。
2 第一个Appium脚本:
01. 测试环境
- Win 10 64bit
- Python 3.5
- Appium 1.7.2
- Andriod 5.1.1 模拟器& Android 5.1 MX4
- 测试App:考研帮Android版 3.1.0
02. 测试场景
自动安装考研帮App(kaoyan3.1.0.apk),然后启动App
03. 测试步骤
- 获取待测试app的packageName和Activity
- 配置Capability
- 连接设备
- 编辑脚本并运行
- 查看结果
04. 运行前检查事项
- 检查设备是否连接
- 检查Appium server是否启动
- 检查Capability配置信息是否正确
05. 测试脚本
test_kyb.py
from appium import webdriver
desired_caps={}
desired_caps['platformName']='Android'
#模拟器设备
desired_caps['platformVersion']='5.1.1'
desired_caps['deviceName']='127.0.0.1:62025'
#mx4真机
# desired_caps['platformVersion']='5.1'
# desired_caps['deviceName']='MX4'
# desired_caps['udid']='750BBKL22GDN'
desired_caps['app']=r'C:\Users\Shuqing\Desktop\kaoyan3.1.0.apk'
desired_caps['appPackage']='com.tal.kaoyan'
desired_caps['appActivity']='com.tal.kaoyan.ui.activity.SplashActivity'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
06. pycharm常用快捷键
- 复制粘贴当前行 Ctrl+D
- 注释 Ctrl+/
- 运行当前脚本 Ctrl+shift+F10
- 折叠展开代码 Ctrl + Numpad + /-
- 方法定义跳转 Ctrl+B
1.首次启动Appium会在设备上安装2个守护app,Appium Settings和Unlock 部分设备系统由于权限的问题(如:三星S6 edge+)需要用户手动确认安装,否则不安装守护App会导致脚本运行失败,安装好后不要随意卸载这两个App。
- Unlock :用于解锁手机弹窗提示
- Appium Setting:Appium守护app
- from appium import webdriver 中的webdriber模块和selenium中的webdriver模块不一样!
webdriver模块源码路径:
{python安装路径}}\Lib\site-packages\appium\webdriver
07. Appium报错&解决方案——那些年我们踩过的坑
I Appium服务未启动
urllib.error.URLError: <urlopen error [WinError 10061] 由于目标计算机积极拒绝,无法连接。
【解决方案】点击启动Appium按钮后,出现[Appium] Welcome to Appium v1.7.2提示后再运行脚本
II 会话冲突
error: Failed to start an Appium session, err was: Error: Requested a new session but one was in progress
【报错分析】 之前的会话没有关闭,然后你又运行了测试实例,也没有设置覆盖.
【解决方案】 重新停止appium服务,开启Appium服务 在AdVance界面勾选Allow Session Override选项 ,重启Appium 测试结束在AfterClass加driver.quit()
III 未安装java环境
selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Original error: 'java -version' failed. Error: Command failed: C:\WINDOWS\system32\cmd.exe /s /c "java -version"
IV 设备未连接
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not find a connected Android device.
【解决方案】由于设备未连接,或者连接后未开启USB Debug。需要重新连接设备即可。
更换手机设备后如下对应的属性要记得更新,否则无法正常运行脚本。
desired_caps['platformVersion'] = 'XXX'
desired_caps['deviceName'] = 'Galaxy S6 edge+'
V launchable activity 值写错
Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity
【解决方案】
- launchable activity 写错更正即可。
- 如果是存在此activity,则一定是AndroidMainfest.xml.xml中,当前activity设置的属性exported=false,表示当前activity无法被外部程序唤醒。(appium无法唤醒此类)需要研发人员去修改参数。
VI 系统权限问题
Failure [INSTALL_FAILED_USER_RESTRICTED])
【解决方案】
- USB安装管理权限限制,关闭即可。
- 开启安装允许未知来源app选项
VII 服务异常
An unknown server-side error occurred while processing the command” while opening the App
【解决方案】重新启动Appium服务