先感慨一下真的心累啊,踩了好多坑,断断续续四天终于把环境彻底搭建完了,由于之前看的网上的帖子都不是很全而且还带坑,决定自己写一篇综述,作为笔记。
一,首先是安装需要的环境:
需要用到的软件:
1. jdk-8u121-window(32位的就下载32位的,64位的就下载64位的)。
2.Android-sdk_r24.3.4-windows(下载这个adt-bundle-windows-x86-20140624)
3.Python:(V3.6也可以)
4.Node.js:node-v4.4.7-x64
5. appium:1.4.13.1
6.Appium-python-Client
7.pycharm
其中1-5是可以先下载的,6则需要在完成前面的五个步骤后才进行,7为可选Ide工具
1.1 JDK
jdk版本很重要,自己其实就是版本有问题才踩了很多坑,如果遇到报错带java的建议降低版本为1.7 有奇效。
千万不要按1.9 版本。其次一定要按照链接的方式陪 :
https://jingyan.baidu.com/article/d45ad148ba5ab169552b80d3.html
按快捷键win+r,在运行内输入cmd,并输入Java,回车,如果出来的是些用法中文,那说明这是正确的,在接下来输入javac,回车,如果出现些用法中文,说明是环境变量配好了。
1.2 下载SDK
下载这个adt-bundle-windows-x86-20140624(64位)
下载地址:
https://blog.csdn.net/gtkknd/article/details/39336825
安装方法:
下载好后并进行解压,然后开始配置三个变量:
1.解压adt集成包到合适的路径下面,比如D:\adt\
2.设置安卓环境变量
配置环境变量,
设置ANDROID_HOME系统变量为你的android SDK路径,并把tools和platform-tools两个目录加入到系统的Path路径里。
eg:添加变量名:ANDROID_HOME 变量值: D:\adt\sdk
并把这句添加到 %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools记得要加上";"
配置完环境后,可以在运行cmd后输入 adb(能看到当前版本号),再输入android-h(tools目录下的,如果出来一堆文字则是可以的)
1.3 安装python
进入官网或百度下载python下载好后安装到所需安装路径,如在D盘中新建一个python文件夹,如d:\python34
安装完成后将D:\python和D:\python\Scripts,添加到环境变量path下
打开cmd输入python,出现版本号,然后输入print("helloworld!")这样python就是安装好了。
1.4 安装node.js
进入官网地址并下载:https://nodejs.org/en/download/
下载后一路傻瓜式安装,安装完成后,运行cmd,输入node –v查看版本号,然后输入npm
这里同样注意版本 node-v4.4.7-x64
1.5 安装appium服务端
node 版本不对建议直接卸载重新安装
方法一:进入官网地址并下载
https://bitbucket.org/appium/appium.app/downloads/
完整安装带UI的appium,可以从官网直接下载dmg(mac)或者zip(Windows),运行里面的app即可。
appium安装好后:
找到这个文件安装目录D:\appium\node_modules\.bin
将上面的地址添加到环境变量path下;
方法二:node.js包管理安装
npm install -g appium
appium –v
npm install -g appium-doctor
appium-doctor
命令安装的appium是控制台程序,没有UI界面。可到github搜索appium的appiumDesktop项目中下载最新版本
但是由于GFW关系,此方法会在安装过程中卡住或是直接报错,解决办法:挂VPN代理FQ;为了满足国内开发人员的需要,淘宝npm镜像cnpmjs.org可替代官方版本。打开输入:
npm install -g appium --registry=https://registry.npm.taobao.org
方法三:百度pan
直接下载appium的GUI界面安装包,下载地址:https://pan.baidu.com/s/1jGvAISu#list/path=%2F,Windows最新版本是AppiumForWindows_1.4.16.1.zip,MacOS最新版本是appium-1.5.3.dmg。笔者以windows为例,下载的AppiumForWindows_1.4.16.1.zip 进行解压安装,启动appium,弹出错误提示框
很容易在网上查到错误原因,因为node.js需要.NETFramework框架的支持,所以在这里需要安装net framework4.5。当.net framework 4.5安装完成,再次启动Appium,
打开appium
appium安装好后:
找到这个文件安装目录D:\appium\node_modules\.bin
将上面的地址添加到环境变量path下;
Tips:检查appium的所有需求环境
npm install -g appium-doctor
appium-doctor
打开cmd,输入appium-doctor,检查环境是否OK,出现allchecks were successful,说明环境OK;
1.6 appium-python-client
进入cmd 输入:pip install Appium-Python-Client。通过Python安装等待安装完成。
如果从官方的资源库下载Appium-Python-Client失败,请自行更换下载源重新下载。在命令行输入"pip install Appium-Python-Client -ihttp://pypi.douban.com/simple"重试
Tips:检查selenium版本3.3.3
安装 Appium-Python-Client 的同时会安装一个selenium模块.试着进入python3交互命令行,然后执行下面命令:
import selenium
selenium.__version__
如果你显示的 selenium 版本是当前最新版本3.3.3的话,那么最好使用下面命令将版本装成3.0.2,网传某些Api的话会报错。
pip3 install -I selenium==3.0.2
1.7 pycharm
安装流程参考:http://www.jianshu.com/p/042324342bf4
需要激活可以购买正版或网上搜索激活码。
二,实战:
如果没有遇到问题直接跳过1,2两步,先打开夜神模拟器
1.夜神模拟器配置
>配置系统环境:在Path中添加C:\Programfile\Nox\bin; (夜神模拟器安装的bin目录)
然后进入这个目录下,启动cmd,输入nox_adb.exe connect 127.0.0.1:62001(为了adb连接模拟器),可能会出现以下的情况,那就是因为你的adb版本和模拟器中的adb版本不同,而且环境变量配置有问题,所以保证环境变量按照上边写的配置好以后,看下边图1和图2
>验证问题描述情况:(验证之前需要先配置环境变量,将SDK下的adb所在目录(D:\Program Files\Android\adt-bundle-windows-x86\sdk\platform-tools)、以及夜神模拟器的adb所在目录(D:\Program Files (x86)\nox\bin)加入了系统的环境变量path中)
>解决办法:
a、关掉夜神模拟器。同时去任务管理器里看下,adb.exe以及nox_adb.exe这2个进程有没有在运行?有的话就结束掉。
b、找到SDK的目录和夜神模拟器的目录,将SDK目录下的adb.exe文件,复制到夜神模拟器的目录下,因为夜神模拟器目录下原本的adb文件名字叫做nox_adb.exe,因此复制过去之后也得改名为nox_adb.exe。
再次进入这个目录下,启动cmd,输入 nox_adb.exe connect 127.0.0.1:62001,再继续,输入adb devices,看看是不是连接成功了?
遇到问题:
目前运行服务器端的adb版本(也就是夜神模拟器的adb版本)比客户端的版本(也就是SDK目录下的adb版本)低。
报错信息如下:
adb server version(31) doesn’t match this client (36);killing…
解决办法:
a、关掉夜神模拟器。同时去任务管理器里看下,adb.exe以及nox_adb.exe这2个进程有没有在运行?有的话就结束掉。
b、找到SDK的目录和夜神模拟器的目录,将SDK目录(C:\Program Files (x86)\Android\android-sdk\platform-tools)下的adb.exe文件,复制到夜神模拟器的目录(C:\Program Files (x86)\Nox\bin)下,将夜神模拟器目录下原本的adb.exe和nox_adb.exe修改文件名为adb_bak.exe和nox_adb_bak.exe,将从SDK目录复制过来的adb.exe放在夜神目录下,同时复制一份改名为nox_adb.exe。
3.启动夜神模拟器
打开cmd命令行,进入夜神安装目录,执行如下命令:
cd D:\Program Files (x86)\nox\bin
nox_adb.exe connect 127.0.0.1:
nox_adb是第二步修改的,没有第二步可以直接执行adb.exe connect 127.0.0.1:62001
在cmd命令行中,输入:adb devices查看
存在:127.0.0.1:62001 device
即为成功!
adb devices
4.安装测试app
将测试app.apk安装包拖到夜神模拟器即可安装测试app。
5.运行与使用Appium
安装完成桌面会生成一个紫色的appium 图标,双击打开。
6.编写appium自动化测试脚本
6.1.首先打开pycharm并写好代码,这里以淘宝APK作为测试Demo,淘宝APK我是放在电脑桌面(或者放置同代码同个目录下)。如下所示
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time desired_caps = {}
desired_caps['platformName'] = "Android" # 声明是ios还是Android系统
desired_caps['platformVersion'] = '4.4.2' # Android内核版本号,可以在夜神模拟器设置中查看
desired_caps['deviceName'] = '127.0.0.1:62001' # 连接的设备名称
desired_caps['appPackage'] = 'com.ss.android.ugc.aweme' # apk的包名
desired_caps['appActivity'] = 'com.ss.android.ugc.aweme.splash.SplashActivity' # apk的launcherActivity
# desired_caps['appWaitActivity'] = 'com.ss.android.ugc.aweme.splash.SplashActivity'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 建立 session time.sleep(5)
print('+++++++')
# 通过xpyth定位:find_element_by_xpath(“//android.widget.TextView[10]”) xpath下标从1开始,使用完整的classname
# 通过text name:find_element_by_name(name对应uiautomator扫描后text的内容)
# 通过id:find_element_by_id(id对应resource-id)
# 通过classname定位:find_element_by_class_name(class_name对应class)
# 通过accessibility id:find_element_by_accessibility_id(accessibility_id对应content-desc)
# 定位到某个文本框,并输入内容:
# driver.find_element_by_id(“xxxxx”) .send_keys(“123456”)
# 滑动屏幕:
# 获取屏幕尺寸 width=self.driver.get_window_size()[‘width’] height=self.driver.get_window_size()[‘height’]
# 滑动屏幕 driver.swipe(width*9/10, height*1/2, width*1/10, height*1/2, 1000) # driver.find_element_by_id("************").click() # 点击元素
#
# driver.find_element_by_xpath("************").click() # 点击元素
#
# driver.find_element_by_xpath("************").send_keys(u'123456') # 发送键值 driver.quit() # 退出 session
其中查询apk
其中|:driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) #这个地址是怎么来的呢?,见appium设置项,如下图所示
6.2.打开appium并点击右上角三角符号,如下图所示
6.3.运行pycharm代码,并查看结果,如下图所示(其实不会出错,图是网上找的):
遇到的坑1:在CMD指令中输入appium,提示如下图所示
遇到的坑2:运行appium提示error: Couldn't start Appium REST http interface listener. Requested port is already in use. Please make sure there's no other instance of Appium running already.
解决方式:因为端口被node占用,可以用如下退出node,找出PID命令::netstat -ano|findstr "7922" (这个4723是被占用的端口,我们需要先找该占用该端口程序的PID)。停止PID命令:taskkill /pid[进程码] -t(结束该进程) -f(强制结束该进程以及所有子进程)。
坑3
https://blog.csdn.net/qq_14913483/article/details/81141314
三.综述
官网:
https://github.com/appium/python-client
appium日志解析:
https://blog.csdn.net/qq_24126893/article/details/80314776
参考的网址:
https://blog.csdn.net/qq_16206535/article/details/79586818