Appium+python自动化(六)- 连接模拟器并启动淘宝APP(超详解)

简介

上一篇讲解完模拟器的安装、配置好以后,就好比我们手机已经买好,并且系统已经做好了,就差我们用数据线和电脑连接开始实战了,这篇宏哥就带着小伙伴们和童鞋们趁热打铁,讲解和分享一下如何连接模拟器(电脑版的虚拟手机),然后再安装一款APP-淘宝为例。

一、appium+pycharm+连接夜神模拟器并启动淘宝APP(推荐)

1、首先打开pycharm并写好代码,这里以淘宝APK作为测试Demo,淘宝APK我是放在电脑桌面(或者放置同代码同个目录下)。如下图所示

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

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

3、打开夜神模拟器,如下图所示

4、打开CMD,进入夜神模拟器的安装路径下:D:\software\nox\Nox\bin,运行指令:nox_adb.exe connect 127.0.0.1:62001和指令adb devices查看设备名,如下图所示

5、运行pycharm代码,并查看结果,如下图所示(暂时不理会出错问题,后续会讲解)但是在模拟器看到新增了两个小机器人,就表示已经成功了:

6、参考代码

python 复制代码
# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-6-17
@author: 北京-宏哥   QQ交流群:707699217
Project:学习和使用python代码appium+pycharm+连接夜神模拟器
'''
# 3.导入模块
from appium import webdriver
import time
desired_caps = {}
desired_caps['platformName'] = 'Android'   #android的apk还是IOS的ipa
desired_caps['platformVersion'] = '4.4.2'  #android系统的版本号
desired_caps['deviceName'] = '127.0.0.1:62001'    #手机设备名称,通过adb devices  查看
desired_caps['appPackage'] = 'com.taobao.taobao'  #apk的包名
desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome'  #apk的launcherActivity
# desired_caps['unicodeKeyboard'] = True  # 使用unicodeKeyboard的编码方式来发送字符串
# desired_caps['resetKeyboard'] = True     # # 将键盘给隐藏起来
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)  ##启动服务器地址,后面跟的是手机信息

二、appium+pycharm+连接AVD模拟器(不推荐)

1、第一、二步和连接夜神模拟器一样。

2、启动AVD模拟器(这个上一篇(传送门)都给小伙伴们演示过了,不清楚的返回头复习一下,即可。相当简单的)

3、 我们在进行测试的时候,我们肯定需要查看设备连接是否成功,设备的信息是否能够获取。adb devices 就可以实现,直接在命令行控制台中输入" adb devices ",我们就可以看见如图连接成功:

4、修改代码,将一些模拟器的信息修给了即可

5、未运行代码前的Google自带的AVD模拟器

6、运行代码后的运行结果

(1)AVD模拟器:

稍等一会,淘宝APP自动启动了:

同意协议,淘宝APP就可以在AVD模拟器上,启动起来进入主页

(2)代码运行结果:

(3)appium运行结果:

(7)参考代码:

python 复制代码
 1 # coding=utf-8
 2 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
 3 
 4 # 2.注释:包括记录创建时间,创建人,项目名称。
 5 '''
 6 Created on 2019-6-17
 7 @author: 北京-宏哥   QQ交流群:707699217
 8 Project:学习和使用python代码appium+pycharm+连接夜神模拟器
 9 '''
10 # 3.导入模块
11 from appium import webdriver
12 import time
13 desired_caps = {}
14 desired_caps['platformName'] = 'Android'   #android的apk还是IOS的ipa
15 desired_caps['platformVersion'] = '8.0'  #android系统的版本号
16 desired_caps['deviceName'] = 'emulator-5554'    #手机设备名称,通过adb devices  查看
17 desired_caps['appPackage'] = 'com.taobao.taobao'  #apk的包名
18 desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome'  #apk的launcherActivity
19 # desired_caps['unicodeKeyboard'] = True   #使用unicodeKeyboard的编码方式来发送字符串
20 # desired_caps['resetKeyboard'] = True   #将键盘给隐藏起来
21 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) #启动服务器地址,后面跟的是手机信息

好了,到此夜神模拟器和AVD模拟器启动淘宝APP,已经全部演示完成,大功告成,降龙十八掌已全部打完,打完收回来。额。。。。。还差一掌才十七掌(亢龙有悔)

三、小结(亢龙有悔)

亢龙有悔,将前边十七掌合起来总结一下:

1、介绍一下,标记的信息,如何填写和查找

deviceName: 这个是设备名称,可以选择模拟器设置的属性中的IMEI填入,或者手机名称

udid: 这里填写上边让你记住的东西,如果使用其他模拟器或者真机等连接,同样的位置,记下就行

appPackage和appActivity,教大家一个相对简单的方法来获取,当然也可以采取反编译(app压缩成rar或者zip,然后打开看xml文件)的手段,总之,方法很多!

进入sdk\build-tools\版本号 的目录下(配置系统变量后就尅不用进入了),cmd命令:

aapt dump badging C:\apps\xxxxx.apk (路径\app包名,也就是安装包在你电脑的位置)

看下,上边标记的就是我们要的两个值!

至于下边的URL是固定格式,不要研究为什么(千年的王八的蛋,万年龟的屁股------喝一口水淡(蛋)定一下,这是规定(龟腚))!

开始运行报错了,最后通过上边的方法查看是因为appActivity错误了,修改版本号和appActivity后还是继续报错,说:安装包不存在,然后在appium中配置

配置好以后,按上边的步骤运行代码,可以看到appium日志没有报错、运行代码没有报错、成功的将淘宝的安装包安装在夜神模拟器上了

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

解决方式:降低nodejs的版本,参考链接cmd中提示appium错误

3、遇到的坑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(强制结束该进程以及所有子进程)。

不知道端口占用的小伙伴们可以看宏哥的这篇查看端口占用的博文:传送门

4、宏哥可能会问为什么推荐夜神模拟器而不推荐AVD模拟器了,是不是宏哥被夜神收买了,实际不是这样的,因为国内现状就是绝大多数给QA人员配置的电脑不是很高,而那个AVD有需要高配置,否则卡的一比,所以就给小伙伴们推荐夜神了,而不是Google自带的模拟器。当然了如果你的电脑配置高那就按照你的喜好和口味选择适合自己的才是硬道理。

5、好了,就给小伙伴们介绍这两种就够用了,如用其他的可以参考这一篇文章。都是万变不离其宗。

相关推荐
寻星探路4 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
崔庆才丨静觅5 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60616 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了6 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅6 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
ValhallaCoder6 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
崔庆才丨静觅7 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
猫头虎7 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
崔庆才丨静觅7 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment7 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端