appium+夜神+python3 环境配置

时间:2022-07-05 17:15:39

先感慨一下真的心累啊,踩了好多坑,断断续续四天终于把环境彻底搭建完了,由于之前看的网上的帖子都不是很全而且还带坑,决定自己写一篇综述,作为笔记。

一,首先是安装需要的环境:

需要用到的软件:

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,弹出错误提示框

appium+夜神+python3 环境配置

很容易在网上查到错误原因,因为node.js需要.NETFramework框架的支持,所以在这里需要安装net framework4.5。当.net framework 4.5安装完成,再次启动Appium,

打开appium

appium+夜神+python3 环境配置

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

 
appium+夜神+python3 环境配置
图1
 
appium+夜神+python3 环境配置
图2

>验证问题描述情况:(验证之前需要先配置环境变量,将SDK下的adb所在目录(D:\Program Files\Android\adt-bundle-windows-x86\sdk\platform-tools)、以及夜神模拟器的adb所在目录(D:\Program Files (x86)\nox\bin)加入了系统的环境变量path中)

 
appium+夜神+python3 环境配置
图3

>解决办法:

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,看看是不是连接成功了?

 
appium+夜神+python3 环境配置
图3
 
appium+夜神+python3 环境配置
 
2.解决adb version 不兼容问题

遇到问题:
目前运行服务器端的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

appium+夜神+python3 环境配置

4.安装测试app
将测试app.apk安装包拖到夜神模拟器即可安装测试app。

5.运行与使用Appium
安装完成桌面会生成一个紫色的appium 图标,双击打开。
appium+夜神+python3 环境配置

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

https://blog.csdn.net/hhy_123963/article/details/77750534

其中|:driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)     #这个地址是怎么来的呢?,见appium设置项,如下图所示

 
appium+夜神+python3 环境配置
连接地址

6.2.打开appium并点击右上角三角符号,如下图所示

 
appium+夜神+python3 环境配置

6.3.运行pycharm代码,并查看结果,如下图所示(其实不会出错,图是网上找的):

 
appium+夜神+python3 环境配置
运行结果

遇到的坑1:在CMD指令中输入appium,提示如下图所示

 
appium+夜神+python3 环境配置
 
 解决方式:降低nodejs的版本

遇到的坑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

https://www.jianshu.com/p/50eb9a88f4e2

https://blog.csdn.net/jixiangrurui/article/details/79140756#1%E5%90%AF%E5%8A%A8%E5%A4%9C%E7%A5%9E%E6%A8%A1%E6%8B%9F%E5%99%A8