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爬虫入门教程之糗百图片爬虫代码分享
Sep 02 Python
python过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
python处理Excel xlrd的简单使用
Sep 12 Python
python+django加载静态网页模板解析
Dec 12 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
Django单元测试工具test client使用详解
Aug 02 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
Python3 中作为一等对象的函数解析
Dec 11 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 Python
Python Opencv实现单目标检测的示例代码
Sep 08 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/01 无线电
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
PHP自动生成月历代码
2006/10/09 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
javascript 常用关键字列表集合
2007/12/04 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
Vue入门之数据绑定(小结)
2018/01/08 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
Python学习笔记_数据排序方法
2014/05/22 Python
简单介绍Python中的JSON模块
2015/04/08 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
简单了解python PEP的一些知识
2019/07/13 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
python 安装impala包步骤
2020/03/28 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
匡威德国官网:Converse德国
2019/01/26 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
法人代表证明书格式
2014/10/01 职场文书
房屋所有权证明
2014/10/20 职场文书
应收账款管理制度
2015/08/06 职场文书
外出培训学习心得体会
2016/01/18 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书