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使用scrapy采集数据时为每个请求随机分配user-agent的方法
Apr 08 Python
使用Python编写类UNIX系统的命令行工具的教程
Apr 15 Python
python 通过麦克风录音 生成wav文件的方法
Jan 09 Python
详解DeBug Python神级工具PySnooper
Jul 03 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
python装饰器原理与用法深入详解
Dec 19 Python
Python如何使用字符打印照片
Jan 03 Python
python的sys.path模块路径添加方式
Mar 09 Python
python 追踪except信息方式
Apr 25 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
Python可变与不可变数据和深拷贝与浅拷贝
Apr 06 Python
Python几种酷炫的进度条的方式
Apr 11 Python
Pytest之测试命名规则的使用
Apr 16 #Python
pycharm debug 断点调试心得分享
Python通过m3u8文件下载合并ts视频的操作
Python实现Telnet自动连接检测密码的示例
AI:如何训练机器学习的模型
python 用递归实现通用爬虫解析器
MATLAB 如何求取离散点的曲率最大值
You might like
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
支持中文字母数字、自定义字体php验证码代码
2012/02/27 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
javascript 表单的友好用户体现
2009/01/07 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
python re模块常见用法例举
2021/03/01 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
英文求职信结束语大全
2013/10/26 职场文书
内容编辑个人求职信
2013/12/10 职场文书
师生聚会感言
2014/01/26 职场文书
学校消防演习方案
2014/02/19 职场文书