Python3+Appium安装使用教程


Posted in Python onJuly 05, 2019

一、安装

我们知道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安装使用教程

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

Python3+Appium安装使用教程

1.2 通过Desktop App安装(推荐)

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

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

Python3+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 delete proxy
npm config delete https-proxy

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

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

Python3+Appium安装使用教程

二、手机连接appium

2.1 启动appium服务

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

Python3+Appium安装使用教程

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

Python3+Appium安装使用教程

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

Python3+Appium安装使用教程

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

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

adb devices -l

Python3+Appium安装使用教程

三、 使用示例

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

3.1 Desktop App打开微信并登录

Python3+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安装使用教程

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

Python3+Appium安装使用教程

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

Python3+Appium安装使用教程

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

Python3+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")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的面向对象编程详解(上)
Apr 13 Python
浅谈django中的认证与登录
Oct 31 Python
详谈在flask中使用jsonify和json.dumps的区别
Mar 26 Python
python3.6生成器yield用法实例分析
Aug 23 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 Python
python实现文件分片上传的接口自动化
Nov 19 Python
pandas 实现将NaN转换为None
May 14 Python
python字符串的多行输出的实例详解
Jun 08 Python
使用python创建股票的时间序列可视化分析
Mar 03 Python
Python叠加两幅栅格图像的实现方法
Jul 05 #Python
用vue.js组件模拟v-model指令实例方法
Jul 05 #Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 #Python
Python 计算任意两向量之间的夹角方法
Jul 05 #Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 #Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 #Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 #Python
You might like
php+mysql事务rollback&commit示例
2010/02/08 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
php发送post请求函数分享
2014/03/06 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
PHP中串行化用法示例
2016/11/16 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
Angular2.js实现表单验证详解
2017/06/23 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
ajaxfileupload.js实现上传文件功能
2019/04/19 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
wxpython 学习笔记 第一天
2009/02/09 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
python使用tkinter实现简单计算器
2018/01/30 Python
Python中装饰器学习总结
2018/02/10 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
高中毕业生自我鉴定范文
2013/09/26 职场文书
电话销售经理岗位职责
2013/12/07 职场文书
客户接待方案
2014/02/26 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android
python 镜像环境搭建总结
2022/09/23 Python