移动端自动化测试-Windows-Android-Appium环境搭建

第一步

安装JDK,本机如果带有1.7及以上版本的,则可忽略此安装步骤。

JDK的安装包,百度下载即可。安装完成后配置环境变量。

(1)新建->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_05"(即JDK的安装路径) 
(2)编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin” 
(3)新建->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”

 cmd下java -version检查环境变量是否配置成功。

 

第二步

安装Android SDK(安卓软件开发包),测试Android手机必然是要安装Android SDK。

下载地址:http://tools.android-studio.org/index.php/sdk/ (直接下载zip版本,解压至任意目录即可)

解压到任意文件夹中即可,解压后将文件夹添加到环境变量中,添加环境变量,必须创建一个名为ANDROID_HOME的变量。

双击SDK Manager,选装工具。必装:Tools文件夹下Android SDK Platform-tools和Android SDK Build-tools,Android SDK Tools可以选择是否更新,建议网速OK直接更新。镜像:随便选个版本,喜欢啥版本选啥版本(大师兄安装的是 Android 5.0.1)。GoogleFQ安装:Extras文件夹下所有的全部安装。(注:找个能FQ的地方下载,东西比较多会很慢。)

Path环境变量中添加ANDROID_HOME、tools、platform-tools、build-tools目录。保存修改。

windows10的环境变量是这样的

ANDROID_HOME------------------->E:\android-sdk-windows   你的sdk地址

 

 

 

%ANDROID_HOME%\tools

%ANDROID_HOME%\platform-tools

%ANDROID_HOME%\build-tools

然后cmd输入adb

 

 环境变量配置完成后,就需要找一个安卓手机了,连接安卓手机,并将Android手机的开发者选项-USB调试打开(注:每个型号的手机可能名称不同,大同小异,保证手机能连接上电脑即可。这里以三星手机为例。)

在CMD下执行,adb devices,出现下图样式则代表通过adb命令,获取到了连接在电脑上Android手机的UDID。

adb devices在获取连接的安卓手机时,一定会遇到很多坑,这里我们梳理下可能会遇到的坑。

1、手机USB调试一定要打开。

2、多找两根USB线,排除线的问题。

3、多换几个USB接口,排除USB个别接口不好使问题(如:3.0 与 2.0)

4、驱动程序,通过设备管理器查看是否安装驱动或驱动不是最新。(建议:下载驱动精灵,USB相关的驱动都更新下。部分安卓手机更新后会出现一个专门的adb Interface。)

5、更新adb_usb.ini文件,少数电脑不能识别Android手机时,可以将设备管理器下的Android手机的VID、PID增加到adb_usb.ini文件中。

将VID、PID中“_”后的4位数增加到adb_usb.ini下(注:adb_usb.ini默认在C盘当前用户家目录下的.android目录下)

理论上这些操作都操作一遍后,基本adb devices就可以找到Android手机了。

如果adb devices出现5037端口未被占用依旧显示获取失败,出现以下报错时。

解决方法:

第一步:

初一看应该是5037端口被占用了,一个比较常见的错误,执行命令查看5037端口被谁占用了:

netstat -ano | finder "5037"

但是神奇的事情发生了,结果是没有任何程序占用该端口。

第二步:

于是执行adb kill-server ,OK,再执行adb start-server,又提示相同的错误了,adb无法在5037端口启动。

第三步:

执行一下adb nodaemon server命令看看什么情况,这是一个比较有用的命令,一般情况下它会告诉我们哪里出问题了

adb nodaemon server

不幸的是仍然没有提示任何错误

第四步:

检查环境变量配置,没有错误

第五步:

基本排除adb本身的错误,开始定位CreateProcess failure, error 2 这个错误,查到了错误代码:

windows error code 2 means: 2 The system cannot find the file specified. ERROR_FILE_NOT_FOUND
and from the source code this is after a call to CreateProcess() and the file name is given by GetModuleFileName()

已经查证过不是环境配置的问题,所以定位为系统无法启动该文件。

第六步:

进入C:\WINDOWS\System32目录,检查adb相关文件。都是正确的。

第七步:

复制\System32目录下的adb.exe文件到C:\WINDOWS\SysWOW64 ,再次执行adb devices命令,提示缺失AdbWinApi.dll文件

再将\System32目录下的AdbWinApi.dll文件copy到C:\WINDOWS\SysWOW64,执行adb devices命令成功。

第三步

安装node.js,由于Appium的server端是node.js编写的所以需要先安装node.js。安装node.js后,可以直接通过npm安装Appium。(注:npm类似于Python的pip,一个非官方包管理器)

官方下载地址:https://nodejs.org/en/download/

根据自己的操作系统下载不同版本的node.js

node.js的安装一路傻瓜式next就可以了,注意一点,将路径改下,安装成功后会自动添加环境变量。也就是在cmd下任意目录都可以使用npm命令。

安装成功后,检测下npm是否可用,虽然安装过程中会直接将环境变量添加到PATH中,但是万一不好使呢。SO 养成检查环境的习惯。

 

第四步

安装appium服务端,可通过cmd 下输入 npm install -g appium 进行安装。(安装过程较慢,请耐心等待)

如果npm install -g appium特别慢,无法下载时,可以用国内的镜像npm --registry http://registry.cnpmjs.org install -g appium

安装如果失败可以尝试通过cnpm安装appium

通过npm命令安装cnpm

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

通过cnpm安装appium

cnpm install -g appium --no-cache

安装成功后,通过appium -v 查看当前appium版本,直接输入appium则启动appium server端。

卸载appium:

npm uninstall appium -g

如需安装指定 appium 版本可在 appium后加@版本号,如安装1.7.2版本:

npm install appium@1.7.2 -g

 

安装 appium

打开 CMD:

设置 npm 淘宝镜像

npm config set registry https://registry.npm.taobao.org

设置 vsbuild 版本,之前下载的 Visual C++ Build Tools 是多少版本的是多少就设置多少
npm config set msvs_version 2015

npm 全局安装 appium,使用命令(默认安装最新版本):

npm install appium -g --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver

如需安装指定 appium 版本可在 appium后加@版本号,如安装1.7.2版本:

npm install appium@1.7.2 -g

由于 chromedriver 下载易不成功,故指向淘宝 cdn 下载。

安装 appium 完成后,继续安装 appium-doctor

npm install appium-doctor -g

使用 appium-doctor 检查所有配置均已正确即表示安装成功

 -----------------------------------------------------------------------

npm install -g cnpm --registry https://registry.npm.taobao.org

cnpm 

cnpm install -g appium 

 

appium -p 4700 -bp 4723 -U  127.0.0.1:21503

 

 

-------------------------------------------------------------------------

第五步

安装appium客户端,用于抓取app上定位信息。

appium下载地址:https://testerhome.com/topics/680

 

地址:https://github.com/appium/appium-desktop/releases/tag/v1.2.1

双击安装,安装成功后左面会有一个appium的快捷方式。

在pycharm没有找到对应的包  解决方法如下

 

#coding = utf-from appium import webdriver


#coding = utf-8
from appium import webdriver

'''
1、手机类型
2、版本
3、手机的唯一标识 deviceName
4、app 包名appPackage
5、app 入口 appActivity
'''
# 手机初始化信息是一个字典 key value的向里面存储 key是固定的
desc = {}
# 手机类型
desc['platformName']='Android'
# 手机版本
desc['platformVersion']='5.1.1'
# 手机唯一标识
desc['deviceName'] = 'emulator-5554'
# 包名
desc['appPackage'] = 'com.tencent.mobileqq'
# 入口
desc['appActivity'] = 'com.tencent.mobileqq.activity.SplashActivity'
#True 重置
desc['noReset']=True
#重置输入法
desc['unicodeKeyboard']=True
#appium的输入法
desc['resetKeyboard']=True
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desc)

--------------------------------------------------------------------------------------------------
adb提示不是内部命令
E:\android-sdk-windows\platform-tools 加入path
抓取手机的包名:
adb logcat |findstr START或者adb shell "logcat | busybox grep START"又或者aapt dump badging xxx.apk  包的路径直接拖进去

 


-----------------------------------------------------------------------------

 

 
获取文字信息
  1. from selenium.webdriver.support.ui import WebDriverWait
  2. from selenium.webdriver.support import expected_conditions as EC
tost_element = ("xpath","//*[contains(@text,'请输入密码')]")

WebDriverWait(driver,10,0.1).until(EC.presence_of_element_located(tost_element))
------------------------------------------------------------------------------------------------------------------------------------------------------------------
 今天用新手机,运行appium 1.6.3 测试,发现日志打印如下错误:

[debug] [ADB] Creating ADB subprocess with args: ["-P",5037,"-s","xxxxxxxxxxx","shell","uiautomator","runtest","AppiumBootstrap.jar","-c","io.appium.android.bootstrap.Bootstrap","-e","pkg","com.tencent.mm","-e","disableAndroidWatchers",false,"-e","acceptSslCerts",false]
[UiAutomator] UiAutomator exited unexpectedly with code 0, signal null
仔细看日志发现,发现/data/local/tmp缺少AppiumBootstrap.jar
然后在appium的node_module目录下面的appium-android-bootstrap\bootstrap\bin找到AppiumBootstrap.jar,然后复制到/data/local/tmp就可以,然后再运行,测试OK


posted @ 2018-09-25 09:19  taotao12  阅读(548)  评论(0编辑  收藏  举报