Python3+Appium安装及Appium模拟微信登录方法详解


Posted in Python onFebruary 16, 2021

一、Appium安装

我们知道selenium是桌面浏览器自动化操作工具(Web Browser Automation)

appium是继承selenium自动化思想旨在使手机app操作也能自动化的工具(Mobile App Automation Made Awesome)。

appium可以通过Desktop App和npm两种方式安装。Desktop App类似于selenium IDE提供一个图形界面式操作工具;npm类似于selenium就只能使用命令行。

如果对appium还不太熟悉,推荐使用Desktop App安装,这样一些操作我们可以使用Desktop App来输出代码,写代码时就有个参考。

1.1 安装Android SDK

要想操作安卓手机需要Android SDK,所以在安装appium之前先安装Android SDK。

推荐直接安装Android  Studio然后使用Android Studio安装SDK(太慢可通过图中HTTP Proxy设置代理)。

菜单----Tools----SDK Manager,钩选自己要安装的版本点击Apply进行下载即可。

Python3+Appium安装及Appium模拟微信登录方法详解

Android SDK安装完成后,新建ANDROID_HOME环境变量,值为上图Android SDK Location的目录(我这里是“D:\Language\ASDK”)

Python3+Appium安装及Appium模拟微信登录方法详解

1.2 通过Desktop App安装(推荐)

下载地址:https://github.com/appium/appium-desktop/releases

选择操作系统对应版本下载,Windows直接双击安装即可。 

Python3+Appium安装及Appium模拟微信登录方法详解

1.3 通过npm安装

1.3.1 安装nodejs

appium本质是一个nodejs库所以要先安装nodejs,然后使用npm安装。

nodejs下载地址:https://nodejs.org/zh-cn/download/

下载zip包解压到自己想放的目录,然后把该目录加入Path环境变量即可。

1.3.2 安装appium

npm install -g appium

 安装appium的过程中安装chromedriver时会连接google网站上去(报错RequestError: Error: connect ETIMEDOUT 216.58.220.208:443),所以可能你需要参考以下命令设置一下npm代理

# 设置代理
npm config set proxy http://127.0.0.1:1080
npm config set https-proxy http://127.0.0.1:1080

# 如果代理需要用户名密码
npm config set proxy http://username:password@127.0.0.1:1080
npm config set https-proxy http://username:password@127.0.0.1:1080

# 注册npm仓库
npm config set registry https://registry.npmjs.org
# 查看当前配置项npm config getnpm config get proxy
# 删除代理配置
npm config delete proxy
npm config delete https-proxy

配置本质上会存放到“C:\Users\你的用户名\.npmrc”内,所以也可以直接修改该文件。

1.3.3 使用appinum-doctor确认环境配置无误

npm install -g appium-doctor
appium-doctor --android

Python3+Appium安装及Appium模拟微信登录方法详解

 二、手机连接appium

2.1 启动appium服务

如果是通过npm安装,appium会被安装到nodejs目录下,直接使用appium命令启动即可

Python3+Appium安装及Appium模拟微信登录方法详解

我这里使用Desktop App方式安装,安装完成后双击桌面上的图标界面如下:

Python3+Appium安装及Appium模拟微信登录方法详解

我们使用默认配置都不修改,直接点击“Start Server”按钮启动 

Python3+Appium安装及Appium模拟微信登录方法详解

2.2 手机使用数据线连接电脑

使用数据线把手机连接到开启appium的电脑,开启usb调试功能。可使用adb命令列出设备确保连接成功

adb devices -l

Python3+Appium安装及Appium模拟微信登录方法详解

三、 使用示例

下边以python3+appium打开微信并登录进行演示。python操作appium是通过向appnium的监听端口发报文实现的,所以python不用安装什么appium库。

3.1 Desktop App打开微信并登录

Python3+Appium安装及Appium模拟微信登录方法详解

添加以下四项值,完后点击“Start Session”。

platformName---设备平台。填Android或IOS

deviceName----设备名。按上边adb查出的设备名填写即可

appPackage----要启动的app的包名。微信是"com.tencent.mm"

appActivity----要启动的界面。微信启动界面是".ui.LauncherUI"

{
 "platformName": "Android",
 "deviceName": "HWEVA",
 "appPackage": "com.tencent.mm",
 "appActivity": ".ui.LauncherUI"
}

Python3+Appium安装及Appium模拟微信登录方法详解

选择xml控件,对应部份就会高亮显示。

Python3+Appium安装及Appium模拟微信登录方法详解

点击开始录制,然后在该appium界面上操作(注意不是自己直接在手机上操作),操作过程就会被记录下来然后可输出该过程对应的python代码

Python3+Appium安装及Appium模拟微信登录方法详解

操作过程就会被记录下来,在Recorder下拉选择语言即可输出操作对应的代码

Python3+Appium安装及Appium模拟微信登录方法详解

3.2 全代码自动化登录实现

Desktop App已给出界面内操作的代码,全代码自动化主要的其实只是打开该界面的代码。

首先我们先安装两个依赖库

pip install Appium-Python-Client Selenium

代码补全如下,Appium-Python-Client继承自Selenium所以使用方法和selenium是很类似的,更多api操作见:https://github.com/appium/python-client

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

# appium服务监听地址
server='http://localhost:4723/wd/hub'
# app启动参数
desired_caps={
 "platformName": "Android",
 "deviceName": "HWEVA",
 "appPackage": "com.tencent.mm",
 "appActivity": ".ui.LauncherUI"
}

# 驱动
driver = webdriver.Remote(server,desired_caps)
wait = WebDriverWait(driver,30)
# 获取登录按钮
login_btn = wait.until(EC.presence_of_element_located((By.ID,"com.tencent.mm:id/drp")))
# 点击登录按钮
login_btn.click()
# 获取手机号文本框
phone_text = wait.until(EC.presence_of_element_located((By.ID,"com.tencent.mm:id/ji")))
# 填写手机号文本框
phone_text.send_keys("18888888888")

更多关于Appium的使用方法请查看下面的相关链接

Python 相关文章推荐
python采集百度百科的方法
Jun 05 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 Python
python使用minimax算法实现五子棋
Jul 29 Python
通过实例解析Python return运行原理
Mar 04 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 Python
Python实现老照片修复之上色小技巧
Oct 16 Python
Python3使用Selenium获取session和token方法详解
Feb 16 #Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 16 #Python
PyCharm+Miniconda3安装配置教程详解
Feb 16 #Python
Python3+Django get/post请求实现教程详解
Feb 16 #Python
Python3+Flask安装使用教程详解
Feb 16 #Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 #Python
Python LMDB库的使用示例
Feb 14 #Python
You might like
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
ext for eclipse插件安装方法
2008/04/27 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
学习Vue组件实例
2018/04/28 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
Python socket实现简单聊天室
2018/04/01 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
Python 函数list&read&seek详解
2019/08/28 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
蛋白质世界:Protein World
2017/11/23 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
JAVA程序员面试题
2012/10/03 面试题
《蒲公英》教学反思
2014/02/28 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
CSS3常见动画的实现方式
2021/04/14 HTML / CSS
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB