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使用minidom读写xml的方法
Jun 03 Python
Python中的默认参数详解
Jun 24 Python
Python之父谈Python的未来形式
Jul 01 Python
Python操作MongoDB详解及实例
May 18 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
python+opencv实现动态物体识别
Jan 09 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
在Django中自定义filter并在template中的使用详解
May 19 Python
python 下载文件的几种方法汇总
Jan 06 Python
Python Pandas知识点之缺失值处理详解
May 11 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
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
Python如何将模块打包并发布
2020/08/30 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
请说出几个常用的异常类
2013/01/08 面试题
主持人演讲稿
2014/05/13 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
公司借条范本
2015/05/25 职场文书
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
Python面试不修改数组找出重复的数字
2022/05/20 Python