Python+Appium新手教程


Posted in Python onApril 17, 2021

准备

1.电脑系统:win10

2.手机:安卓(没钱买苹果)

3.需要的工具可以从官网下载

安装

  1. python
  2. jdk
  3. 编辑器PyCharm
  4. Appium-windows-x.x
  5. Appium_Python_Client
  6. Android SDK

安装,迈开腿的第一步

python(它可以用于桌面应用,游戏开发,网络爬虫)

勾选Add Python x.x to PATH(没有勾选的安装成功后可手动在环境变量里配置)

Install Now

Python+Appium新手教程

安装中…

Python+Appium新手教程

安装成功

Python+Appium新手教程

验证是否成功,终端输入‘python',出现以下内容就成功了

Python+Appium新手教程

暂时没遇到红海,有问题评论留言~

jdk

Java 语言的软件开发工具包

appium server好像只支持1.8的jdk,so有时候太优秀不一定能被认可(狗头保命)

Python+Appium新手教程

Python+Appium新手教程

Python+Appium新手教程

Python+Appium新手教程

安装成功,需要在环境变量里配置一下

Python+Appium新手教程

新建一个'JAVA_HOME'

Python+Appium新手教程

把‘JAVA_HOME'添加到path里,注意是添加不是替换,后果不堪设想

Python+Appium新手教程

确定确定确定,打开cmd运行测试一下是否安装成功,输入‘java -version',成功

Python+Appium新手教程

编辑器PyCharm

敲代码的

Python+Appium新手教程

Python+Appium新手教程

勾选64-bit launcher 64位启动器

.py那个随意,我这边勾选

Python+Appium新手教程

Python+Appium新手教程

成功

Python+Appium新手教程

安装过程暂时没发现什么错误

Appium-windows-x.x

运行脚本需要,可查看运行日志,可以获取app页面元素

Python+Appium新手教程

Python+Appium新手教程

第一次运行可能有点慢,耐心等待就好了

Python+Appium新手教程

Python+Appium新手教程

右上角的三个按钮分别是

  • “start inspector session(启动检查器会话)”
  • “Get Raw log(查看日志)"
  • “Stop Server(停止服务)”

通俗一点 “冲啊” “让我看看” “不想搞了”

下面一块是看日志的

Python+Appium新手教程

最喜欢的来了,菜单栏有个View—语言—中文(我的宝贝啊)

Python+Appium新手教程

Appium_Python_Client

调用客户端库和 Appium Server 进行通信

    pip install Appium-Python-Client

或者去Pypi下载

Python+Appium新手教程

下载后解压使用cmd进入Appium-Python-Client-x.x

输入

python setup.py install

运行 setup.py文件就好了

Python+Appium新手教程

Android SDK

手机baiandroid系统的开发发包,用来执行命令设置手机、传送文件、安装应用、查看手机界面等

找个风水宝地解压就好了

Python+Appium新手教程

所有需要的工具都安装成功了,来个表情包庆祝一下

连接手机

敲黑板,重点来了,做app自动化肯定要用到手机噻,拿usb连接电脑

(1) 拿出你的手机-----打开手机设置------找到关于手机-------一直点击版本号直到出现提示

Python+Appium新手教程

(2) 打开手机的开发者选项,该开的开,该关的关,特别是USB调试这里一定要打开

Python+Appium新手教程

还有USB设置需要改一下,暂时只发现这两个比较重要,有兴趣的可以研究一下开发人员选项

Python+Appium新手教程

(3) 测试是否连接成功,在终端输入‘adb devices -l',查看连接的设备,如果列表为空,检查一下是不是有以上原因(1)(2),有什么问题评论区留言

Python+Appium新手教程

使用python+appium打开手机app-B站

打开PyCharm and appium,直接Start Server Vx,xx,x

新建一个项目

Python+Appium新手教程

新建一个.py,输入以下代码(单纯打开app)

# 导入webdriver
from appium import webdriver
# 初始化参数
desired_caps = {
    'platformName': 'Android',  # 被测手机是安卓
    'platformVersion': '10',  # 手机安卓版本
    'deviceName': 'xxx',  # 设备名,安卓手机可以随意填写
    'appPackage': 'tv.danmaku.bili',  # 启动APP Package名称
    'appActivity': '.ui.splash.SplashActivity',  # 启动Activity名称
    'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True
    'resetKeyboard': True,  # 执行完程序恢复原来输入法
    'noReset': True,  # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
    'newCommandTimeout': 6000,
    'automationName': 'UiAutomator2'
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 退出程序,记得之前没敲这段报了一个错误 Error: socket hang up 啥啥啥的忘记了,有兴趣可以try one try
driver.quit()

不同的手机有不同的版本,自己找一下大概就是这个意思

手机安卓版本platformVersion:

Python+Appium新手教程

每一个app都有appPackage、appActivity,那应该在哪里查看呢

打开终端输入(手机需要连接电脑)

adb shell dumpsys activity recents | find “intent={”

Python+Appium新手教程

cmp=tv.danmaku.bili/.ui.splash.SplashActivity就是我们需要的appPackage、appActivity了

appPackage = tv.danmaku.bili

appActivity = .ui.splash.SplashActivity

此时我的手机后台是个这样的

Python+Appium新手教程

打开成功,运行的时候会在手机上安装东西,需要手动同意安装,或者在开发选项中开权限,听懂鞭炮

获取app元素信息

得到元素才能操控它

两种方法

(1)使用appium

(2)使用uiautomatorviewer(Android SDK自带的元素定位工具)

这两个不可以同时使用,以我现在的技术来看我个人推荐使用appium

-----------------------------这是一条分割线------------------------------------

appium:打开appium,点击Start Inspector Session

Python+Appium新手教程

输入对应的内容(之前那段代码把参数和值填进去就好了)

Python+Appium新手教程

打开后我们可以看见这样一个界面,鼠标悬浮在手机界面上可以看到元素,点击可在右侧查看到需要的元素

Python+Appium新手教程

uiautomatorviewer(Android SDK自带的元素定位工具)

之前下载过的Android SDK,打开路径:androidsdk\tools\bin就可以找到uiautomatorviewer了,double click打开它

Python+Appium新手教程

会得到这样的一个界面

Python+Appium新手教程

在点击左上角的device Screenshot(uiautomator dump)获取手机上的屏幕,如果是不同的页面需要重新点击

Python+Appium新手教程

鼠标悬浮点击可以看到这个元素的信息

Python+Appium新手教程

有一些人点击uiautomatorviewer.bat会闪退,试试下面这个办法,如果不行百度去吧

开玩笑的啦,我也是百度找方法的,找了好久没啥子用,还是评论区留言一起解决吧(一起百度)

打开环境变量,新建一个 ANDROID_SWT

我的swt是在D:\app\androidsdk\tools\lib\x86_64,输入正确路径即可

Python+Appium新手教程

确定确定确定,在重新试试double click它

知道元素后就可以操作它了

使用python+appium操作app-B站

目标:使用B站搜索‘泰坦尼克号'

常用的获取元素方法有

find_element_by_id()

find_elements_by_class_name()

find_element_by_xpath()

find_element_by_css_selector()

# 导入webdriver
from appium import webdriver
# 初始化参数
desired_caps = {
    'platformName': 'Android',  # 被测手机是安卓
    'platformVersion': '10',  # 手机安卓版本
    'deviceName': 'xxx',  # 设备名,安卓手机可以随意填写
    'appPackage': 'tv.danmaku.bili',  # 启动APP Package名称
    'appActivity': '.ui.splash.SplashActivity',  # 启动Activity名称
    'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True
    'resetKeyboard': True,  # 执行完程序恢复原来输入法
    'noReset': True,  # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
    'newCommandTimeout': 6000,
    'automationName': 'UiAutomator2'
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 设置等待时间,如果不给时间的话可能会找不到元素
driver.implicitly_wait(5)
# 点击搜索框
driver.find_element_by_id("expand_search").click()
# 输入“泰坦尼克号”
driver.find_element_by_id("search_src_text").send_keys("泰坦尼克号")
# 键盘回车
driver.keyevent(66)
# 因为它搜索完后就直接退出app了,看不到搜索结果页,所以我给了一个让他停下的方法
input('**********')
# 退出程序,记得之前没敲这段报了一个错误 Error: socket hang up 啥啥啥的忘记了,有兴趣可以try one try
driver.quit()

最后就是这样子的

Python+Appium新手教程

到此这篇Python+Appium新手教程的文章就介绍到这了,更多相关Python+Appium教程内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

Python 相关文章推荐
利用Python演示数型数据结构的教程
Apr 03 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
Python超越函数积分运算以及绘图实现代码
Nov 20 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
python基于event实现线程间通信控制
Jan 13 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 Python
git查看、创建、删除、本地、远程分支方法详解
Feb 18 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 Python
能让Python提速超40倍的神器Cython详解
Jun 24 Python
Pytest之测试命名规则的使用
Apr 16 #Python
pycharm debug 断点调试心得分享
Python通过m3u8文件下载合并ts视频的操作
Python实现Telnet自动连接检测密码的示例
AI:如何训练机器学习的模型
python 用递归实现通用爬虫解析器
MATLAB 如何求取离散点的曲率最大值
You might like
php session 写入数据库
2016/02/13 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
2020/09/08 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
在python中的socket模块使用代理实例
2014/05/29 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
python实现感知机模型的示例
2020/09/30 Python
string = null 和string = ''的区别
2013/04/28 面试题
加薪通知
2015/04/25 职场文书