Appium

配置一系列环境:

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.7.2,则选择的Node.js版本为6.11.3

安装完成后在按键Win+R输入cmd打开Windows 命令提示符,

输入如下命令:

C:\Users\Shuqing>node -v

v6.11.3

 

C:\Users\Shuqing>npm -v

3.10.10

说明:

  • 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中分别输入adbandroid 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”则说明相关环境没有配置好,需要重新安装配置。

第一个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. 运行前检查事项

  1. 检查设备是否连接
  2. 检查Appium server是否启动
  3. 检查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
  1. from appium import webdriver 中的webdriber模块和selenium中的webdriver模块不一样!

webdriver模块源码路径:

{python安装路径}}\Lib\site-packages\appium\webdriver

07. Appium报错&解决方案——那些年我们踩过的坑

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+‘

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])

【解决方案】

  1. USB安装管理权限限制,关闭即可。
  2. 开启安装允许未知来源app选项
VII 服务异常

An unknown server-side error occurred while processing the command” while opening the App

【解决方案】重新启动Appium服务

 

App自动化appium+python

Web自动化selenium+java

Web自动化selenium+python

Ptthom语言学习

接口测试与接口自动化

性能测试Jmeter&Loadrunner

 

Appium

上一篇:Thymeleaf 异常:Exception processing template "index": An error happened during template parsing (template: "class path resource [templates/index.html]")


下一篇:iOS逆向一个APP指令集