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基于smtplib实现异步发送邮件服务
May 28 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
python3.5基于TCP实现文件传输
Mar 20 Python
详解Python发送email的三种方式
Oct 18 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
PyTorch的自适应池化Adaptive Pooling实例
Jan 03 Python
python从内存地址上加载python对象过程详解
Jan 08 Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 Python
Python接口测试数据库封装实现原理
May 09 Python
python 还原梯度下降算法实现一维线性回归
Oct 22 Python
Python3读写ini配置文件的示例
Nov 06 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 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
4.与数据库的连接
2006/10/09 PHP
实现dedecms全站URL静态化改造的代码
2007/03/29 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
2017/04/19 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
Python函数式编程指南(二):从函数开始
2015/06/24 Python
pyenv命令管理多个Python版本
2017/03/26 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
关于Python作用域自学总结
2019/06/10 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
python数字类型math库原理解析
2020/03/02 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
婚纱摄影师求职信范文
2014/04/17 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫