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 12 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
python matplotlib包图像配色方案分享
Mar 14 Python
使用OpenCV实现道路车辆计数的使用方法
Jul 15 Python
Python使用socket模块实现简单tcp通信
Aug 18 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 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简单提示框alert封装函数
2010/08/08 PHP
PHP数据库调用类调用实例(详细注释)
2012/07/12 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
Python中的闭包总结
2014/09/18 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
上班早退检讨书
2014/01/09 职场文书
手机银行营销方案
2014/03/14 职场文书
分层教学实施方案
2014/03/19 职场文书
公证委托书模板
2014/04/03 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python