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


Posted in Python onJune 17, 2019

简介

这篇宏哥就带着小伙伴们分享一下如何连接模拟器(电脑版的虚拟手机),然后再安装一款APP-淘宝为例。

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

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

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

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

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

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

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

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

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

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

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

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

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

6、参考代码

# 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模拟器(这个上一篇(传送门)都给小伙伴们演示过了,不清楚的返回头复习一下,即可。相当简单的)

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

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

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

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

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

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

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

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

(1)AVD模拟器:

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

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

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

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

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

(2)代码运行结果:

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

(3)appium运行结果:

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

(7)参考代码:

# 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'] = '8.0' #android系统的版本号
 desired_caps['deviceName'] = 'emulator-5554' #手机设备名称,通过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) #启动服务器地址,后面跟的是手机信息

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

三、小结(亢龙有悔)

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

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

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

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

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

进入sdk\build-tools\版本号 的目录下(配置系统变量后就?〔挥媒?肓耍??md命令:

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

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

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

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

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

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

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

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

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

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

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

解决方式:降低nodejs的版本,参考链接:https://3water.com/article/163240.htm

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(强制结束该进程以及所有子进程)。

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

总结

以上所述是小编给大家介绍的Appium+python自动化之连接模拟器并启动淘宝APP(超详解),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python实现简单点对点(p2p)聊天
Sep 13 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
Python面向对象之继承和组合用法实例分析
Aug 27 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 Python
python3使用print打印带颜色的字符串代码实例
Aug 22 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
Python实现队列的方法示例小结【数组,链表】
Feb 22 Python
Python Websocket服务端通信的使用示例
Feb 25 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
Python如何定义有默认参数的函数
Aug 10 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 Python
浅谈Python协程asyncio
Jun 20 Python
python3+PyQt5 数据库编程--增删改实例
Jun 17 #Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
Jun 17 #Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
Jun 17 #Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
Jun 17 #Python
对PyQt5中树结构的实现方法详解
Jun 17 #Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 #Python
使用python接入微信聊天机器人
Mar 31 #Python
You might like
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
php实现的漂亮分页方法
2014/04/17 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
thinkphp3.x中cookie方法的用法分析
2016/05/19 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
任意位置显示html菜单
2007/02/01 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
微信小程序(订阅消息)功能
2019/10/25 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
pymssql ntext字段调用问题解决方法
2008/12/17 Python
python交互式图形编程实例(一)
2017/11/17 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
Python实现的特征提取操作示例
2018/12/03 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
《要下雨了》教学反思
2014/02/17 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
导游词之南京中山陵
2019/11/27 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android