python自动化操作安卓app

由于个人的强迫症缘故,代码均没有做实际测试,由于公司电脑比较卡,自己电脑强迫症,相信各位知道大概都可以找解决方案,解决不了就找我私聊

一、准备工作

安装链接

出现了手机版本过高

解决方案

课程地址:链接

二、开始

1、首先查看手机版本信息

点开手机或者模拟机的本机信息

2、安装pip包

pip install appium-python-client

3、abd基本命令

# 链接服务器 
abd connect 127.0.0.1:62001
# 查看链接哪台服务器
abd devices

4、查看包名和启动页面

需要进入你安卓sdk安装目录的build-tools中找到你想用的版本的目录下进行cmd

# 注意下面不要带有中文路径
aapt dump badging xxx盘下面的apk安装包

在这里插入图片描述
往下滑找到启动页面
在这里插入图片描述

5、模拟器安装apk

只需要拖着app进入到模拟器即可

6、了解执行流程

在这里插入图片描述

三、py代码打开模拟器

1、实现app在模拟器上打开

from appium import webdriver
from appium.options.common import AppiumOptions

desired_caps = {
    "platformName":"Android", #操作系统
    "platformVersion":"5.1.1", #操作版本 根据查看手机版本信息获取
    "deviceName":"xiaomi", #设备名称 可以随便写 没有特殊限制
    "appPackage":"", #包名 根据命令获取
    "appActivity":"", #入口启动项目页面
    "noReset":True
}

# 这边看视频版本有些老了 就网上找到其他博主的代码复制了过来
option = AppiumOptions()
option.set_capability("platformName", "Android")
option.set_capability("platformVersion", "5.1.1")
option.set_capability("deviceName", "xiaomi")
option.set_capability("noReset", True)
option.set_capability("appPackage", "com.tencent.qqlite")
option.set_capability("appActivity", "com.tencent.mobileqq.activity.SplashActivity")

# 这边对应端口就看你安装appium对应的端口换掉就可以了
driver = webdriver.Remote('http://localhost:4723/wd/hub', options=option)

2、appium日志查看

在这里插入图片描述
在这里插入图片描述

查看对应的日志即可

  1. 蓝色:代表执行了对应安卓sdk的日志
  2. 黄色:代表警告可以不看
  3. 灰色:代表py代码通过命令执行对应appiumServer的操作

日志中显示的执行流程
在这里插入图片描述
随后一直重复执行http请求……等等

四、定位工具(注意每个都会在app模拟器中装入软件,需要卸载掉再换方式连接)

4.1安卓sdk自带的定位工具

1、使用工具定位

采用的是安卓sdk自带的定位工具在目录E:\app\android-sdk-windows\toolsuiautomatorviewer.bat

打开后点击这个即可 这个也可以做刷新操作,会刷新同步app的现在的页面
在这里插入图片描述
定位的话就找对应的点着屏幕去定位吧

2、uiautomatorviewer.bat常见的标签

  1. text
  2. resoureid
  3. class:元素标签
  4. content-desc:元素功能描述(一般语音播报等、比如淘宝)
  5. 再其次下面就是是否点击等事件(关注比较少)

4.2appium带的定位工具

1、启动

先启动,再点击放大镜

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、定位元素

在这里插入图片描述

点击到对应的选框
在这里插入图片描述

4.3weditor定位工具

1、安装

uiautomator2其实是python使用sdk写的第三方库,对appUi自动化测试框架

执行命令

  1. 命令1
pip install Uiautomator2
  1. 命令2推送一个包到模拟器上
python -m uiautomator2 init
  1. 命令3
pip install weditor
  1. 命令4确认安装
weditor --help

2、使用

要确定你的终端模拟器是连接的
在这里插入图片描述

# 打开
weditor

现在通过网页打开这个页面

在这里插入图片描述
绿色的小树苗就是连接成功的表示

旁边按钮是刷新页面

点击对应元素即可看到对应元素的信息
在这里插入图片描述

五、py定位元素

由于跟web差不多本人就不在往下学习了 遇到问题chatgpt让他写代码 你看了记录下学习就可以了

from appium import webdriver
from appium.options.common import AppiumOptions
from appium.webdriver.common.appiumby import AppiumBy

desired_caps = {
    "platformName":"Android", #操作系统
    "platformVersion":"5.1.1", #操作版本 根据查看手机版本信息获取
    "deviceName":"xiaomi", #设备名称 可以随便写 没有特殊限制
    "appPackage":"", #包名 根据命令获取
    "appActivity":"", #入口启动项目页面
    "noReset":True
}

# 这边看视频版本有些老了 就网上找到其他博主的代码复制了过来
option = AppiumOptions()
option.set_capability("platformName", "Android")
option.set_capability("platformVersion", "5.1.1")
option.set_capability("deviceName", "xiaomi")
option.set_capability("noReset", True)
option.set_capability("appPackage", "com.tencent.qqlite")
option.set_capability("appActivity", "com.tencent.mobileqq.activity.SplashActivity")

# 这边对应端口就看你安装appium对应的端口换掉就可以了
driver = webdriver.Remote('http://localhost:4723/wd/hub', options=option)

# 通过resourceid属性定位
element_input = driver.find_element(AppiumBy.ID, "xxxxx")
# 输入
element_input.send_keys("xxxxxx")
# 单个定位
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("相机")')
# 组合定位
element_btn = driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("相机").resourceId("xxxx")')
# 点击事件
element_btn.click()

六、滑动

在这里插入图片描述

七、测试框架学习

链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/340032.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

选择排序(二)——堆排序(性能)与直接选择排序

目录 一.前言 二.选择排序 2.1 堆排序 2.2选择排序 2.2.1 基本思想 2.2.2直接选择排序 三.结语 一.前言 本文给大家带来的是选择排序,其中选择排序中的堆排序在之前我们已经有过详解所以本次主要是对比排序性能,感兴趣的友友可移步观看堆排&#…

代码随想录二刷 | 回溯| 电话号码的字母组合

代码随想录二刷 | 回溯| 电话号码的字母组合 题目描述解题思路数字和字母如何映射回溯法来解决n个for循环的问题 代码实现 题目描述 17,电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出…

蓝桥杯官网填空题(奇怪的分式)

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:1/4乘以8/5 小明居然把分子拼接在一起,分母拼接在一起&…

mybatis的缓存机制

视频教程_免费高速下载|百度网盘-分享无限制 (baidu.com) MyBatis 有一套灵活而强大的缓存机制,主要分为两级缓存:一级缓存(本地缓存)和二级缓存(全局缓存)。 一级缓存(本地缓存)&a…

赛氪受邀参加安徽省翻译协会2023年年会

安徽省翻译协会于近日在合肥成功举办2023年年会暨学术研讨会。本次会议旨在服务党和国家工作大局,广泛汇聚翻译界力量,推动翻译行业高质量发展,同时总结一年来我省翻译界成果,谋划明年工作。 安徽省翻译协会2023年年会暨学术研讨会…

学会一些品酒词汇显得有文化

日常聚会饮用葡萄酒或者参加品鉴酒会时,我们经常可以听到人们使用非常专业的词汇如“单宁顺滑”、“紧涩”或者“酸度活泼”等等。品酒词不仅可以帮助我们更好地去认识了解一款葡萄酒,也能更好地表达我们对一款葡萄酒的感受和看法。学会一些专业品酒词汇…

deepin20.9设置root登录

首先设置root 账户密码 sudo passwd root创建 /etc/lightdm/lightdm-deepin-greeter.conf,输入以下内容 sudo touch /etc/lightdm/lightdm-deepin-greeter.conf sudo deepin-editor /etc/lightdm/lightdm-deepin-greeter.conf [General] loginPromptInputtrue别忘…

unity 单例模式(实例详解)

文章目录 在Unity中,单例模式是一种常用的编程设计模式,用于确保在整个应用程序生命周期中,只有一个类的实例存在。这样可以保证数据的全局唯一性和共享性,例如游戏场景中的资源管理器、游戏控制器、事件管理器等。 以下是一个简单…

海外抖音TikTok、正在内测 AI 生成歌曲功能,依靠大语言模型 Bloom 进行文本生成歌曲

近日,据外媒The Verge报道,TikTok正在测试一项新功能,利用大语言模型Bloom的AI能力,允许用户上传歌词文本,并使用AI为其添加声音。这一创新旨在为用户提供更多创作音乐的工具和选项。 Bloom 是由AI初创公司Hugging Fac…

vue3相比vue2的效率提升

1、静态提升 2、预字符串化 3、缓存事件处理函数 4、Block Tree 5、PatchFlag 一、静态提升 在vue3中的app.vue文件如下: 在服务器中,template中的内容会变异成render渲染函数。 最终编译后的文件: 1.静态节点优化 那么这里为什么是两部分…

2024年图像处理与大数据信息应用国际会议(ICIPCDIA 2024)

2024年图像处理与大数据信息应用国际会议(ICIPCDIA 2024) 2024 International Conference on Image Processing and Big Data Information Applications(ICIPCDIA 2024) 数据库:EI,CPCI,CNKI,Google Scholar等检索 一、【会议简介】 ​2024年图像处理与大数据信息应…

Qt网络通信

1. UDP通信 1.1 udp通信的基本流程 创建套接字 绑定套接字 进行通信 关闭套接字 涉及到的类和信号 QUdpSocket:Udp套接字类,类对象就是一个udp套接字对象 QHostAddress:ip地址类 void readyRead():信号,当有数据到达可…

曲线生成 | 图解三次样条曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 什么是样条?2 三次样条曲线原理2.1 曲线插值2.2 边界条件2.3 系数反解 3 算法仿真3.1 ROS C仿真3.2 Python仿真3.3 Matlab仿真 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细…

vue3-图片懒加载指令实现

图片懒加载:有些网站页面比较长,用户不一定访问到页面靠下面的图片,这类图片通过懒加载优化手段可以做到只有进入视口区域才发送图片请求 指令用法 //在图片img身上绑定指令,该图片只有正式进入到视口区域时才会发送图片网络请求…

腾讯云tsf平台-部署微服务项目

腾讯云tsf平台-部署微服务项目 一、腾讯云tsf平台简介二、部署准备0(数据库、中间件等部署)三、部署准备1(创建集群和命名空间)1、准备部署资源--集群2、使用容器部署微服务步骤 1:创建容器集群步骤 2:创建…

Linux服务部署,遇到的各种问题之一(测试篇)

最近服务器需要搬迁,所有的服务都需要迁移,从初始化数据盘,到服务部署的各种细节,下面我们一一来说 初始化数据盘就不用说了,大概率,作为测试接触不到。 今天来说是ubuntu显示的中文文件乱码问题如何解决…

Spring 事务原理一

从本篇博客开始,我们将梳理Spring事务相关的知识点。在开始前,想先给自己定一个目标:通过此次梳理要完全理解事务的基本概念及Spring实现事务的基本原理。为实现这个目标我想按以下几个步骤进行: 讲解事务中的一些基本概念使用Sp…

NTFS 磁盘管理器---NTFS Disk by Omi NTFS中文

NTFS Disk by Omi NTFS是一款专为Mac用户设计的NTFS磁盘管理工具。它可以帮助用户方便地访问和管理NTFS格式的硬盘、U盘、移动硬盘以及其他存储设备,并提供高效稳定的NTFS卷管理功能。该软件具有简单的用户界面,使用户能够快速访问和管理NTFS磁盘上的文件…

1.2 数据模型

数据模型是对现实世界数据特征的抽象,是现实世界的模拟 数据模型是用来描述数据、组织数据和对数据进行操作的 数据模型应满足三方面要求: 1 能比较真实地模拟现实世界 2 容易为人所理解 3 便于在计算机上实现 数据模型…

python算法与数据结构(搜索算法和拓扑排序算法)---深度优先搜索

课程目标 了解树/图的深度遍历,宽度遍历基本原理;会使用python语言编写深度遍历,广度遍历代码;掌握拓扑排序算法 搜索算法的意义和作用 搜索引擎 提到搜索两个子,大家都应该会想到搜索引擎,搜索引擎的基…