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 提取文件的小程序
Jul 29 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
详解duck typing鸭子类型程序设计与Python的实现示例
Jun 03 Python
微信跳一跳自动运行python脚本
Jan 08 Python
python 移动图片到另外一个文件夹的实例
Jan 10 Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
python 字符串追加实例
Jul 20 Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
Django model重写save方法及update踩坑详解
Jul 27 Python
Python Opencv实现单目标检测的示例代码
Sep 08 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
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
php解压文件代码实现php在线解压
2014/02/13 PHP
php中session使用示例
2014/03/29 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
繁简字转换功能
2006/07/19 Javascript
Bookmarklet实现启动jQuery(模仿 云输入法)
2010/09/15 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
Angular4 反向代理Details实践
2018/05/30 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
Python中的面向对象编程详解(上)
2015/04/13 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
电子信息工程专业推荐信
2014/02/14 职场文书
升国旗仪式主持词
2014/03/19 职场文书
二手房买卖协议书
2014/04/10 职场文书
学生安全责任书范本
2014/07/24 职场文书
员工工作自我评价
2014/09/26 职场文书
个人整改措施书面材料
2014/10/24 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
Redis基本数据类型List常用操作命令
2022/06/01 Redis