python+appium+雷电模拟器安卓自动化及踩坑
一、环境安装
环境:window11
1.1 安装Android SDK
AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载
这里面任选一个就可以,最终下载完主要要安装操作安卓的工具adb,安装这个步骤的前提是要安装jdk8,其他版本我试了不行,就使用jdk8即可,jdk8的安装不赘述:

通过sdk manager安装最新的安卓依赖

最终保证相关依赖正常安装,并配置环境变量:
ANDROID_HOME=D:\software\android-sdk-windows变量及值(SDK的安装目录)
把platform-tools及tools添加到系统环境变量,变量值(路径)之间使用分号隔开,两个变量值分别为:%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
1.2 安装appium:
https://github.com/appium/appium-desktop/releases
直接安装最新的appium的desktop版本,这个直接安装即可:
1.3 安装雷电模拟器:
直接安装最新的雷电模拟器即可,但此处需要把adb.exe替换雷电模拟器下的adb.exe,可以先把雷电模拟器下的重命名:


1.4 python3环境appium依赖
直接安装pip install appium-python-client 这个一般是最新版本的appium:
也可以指定低版本的appium
pip install appium-python-client==2.0,这里面坑来了,这个之后再补充,不同版本的appium使用不一样

二、启动环境:
2.1 启动雷电模拟器后:
查看是否可以正常连接

2.2 启动appium
安装完成后直接start即可,但这里面有个坑,也就是到时候运行python时会有,里面包含这种错误,这个就需要启动appium时以管理员身份启动,来解决这个问题,当然前提是配置了安卓的环境变量:
An unknown server-side error occurred while processing the command. Original error: Neither ANDROID_HOME nor ANDROID_SDK_ROOT environment variable was exported

三、python代码调用目标包
3.1 低版本启动方式
也就是appium-python-client==2.0版本,如果你装的是最新版本而使用下面的调用方式,就会报 AttributeError: 'NoneType' object has no attribute 'to_capabilities' 这种错误,也就是调用方式存在问题:
from appium import webdriver
desired_caps = {"platformName": "Android","platformVersion": "10","deviceName": "Q5X7N19605002672","appPackage": "tv.danmaku.bili","appActivity": ".MainActivityV2","unicodeKeyboard": True,"resetKeyboard":True,'noReset': True,"appium:newCommandTimeout": 6000,"appium:automationName": "UiAutomator2"
}if desired_caps is not None:driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
else:raise ValueError("desired_caps must not be None")
3.2 最新版本调用方式:
如果你使用的是appium-python-client==4.0版本以上
from appium import webdriver
from appium.options.android import UiAutomator2Options# Appium Desired Capabilities
desired_caps = {"platformName": "Android","platformVersion": "10","deviceName": "emulator-5554","appPackage": "com.android.contacts","appActivity": ".activities.PeopleActivity","unicodeKeyboard": True,"resetKeyboard": True,'noReset': True,"appium:newCommandTimeout": 6000,"appium:automationName": "UiAutomator2"
}if desired_caps is not None:driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',options=UiAutomator2Options().load_capabilities(desired_caps))
else:raise ValueError("desired_caps must not be None")
运行则会直接打开对应的服务,当然这里面还有个坑,运行报:
Unable to find an active device or emulator with OS 10. The following are available: emulator-5554 (9)
这个其实是参数使用的os版本设置不对"platformVersion": "9",只需要改这段代码即可,到此可以正常运行:
3.3 更改查看apk包命令
通过下面命令查看当前运行的服务包,替换代码中的实际包即可,到此环境整体流程结束:
adb shell dumpsys activity | findstr "mResume"
adb shell dumpsys activity | findstr "mFocus"
相关文章:
python+appium+雷电模拟器安卓自动化及踩坑
一、环境安装 环境:window11 1.1 安装Android SDK AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 这里面任选一个就可以,最终下载完主要要安装操作安卓的工具adb,安装这个步骤的前提是要…...
Python第七八次作业
1.输入一个大于0的正整数n,如果n 1 ,则返回1, 如果n是偶数,则返回 n // 2 ,如果n是奇数,则返回 3n 1,将所有的返回值存放到一个列表中,注意:n是第一个元素,其他的元素根…...
Leetcode——数组:螺旋矩阵59.螺旋矩阵
题目 思路 对于每层,从左上方开始以顺时针的顺序填入所有元素。假设当前层的左上角位于 (top,left),右下角位于 (bottom,right),按照如下顺序填入当前层的元素。 从左到右填入上侧元素,依次为 (top,left) 到 (top,right)。 从上到…...
C++类与对象-继承和多态(超全整理)
前言 前面讲类与对象上中下时,所讲的都是在单个类中相关的语法(初始化列表、this指针、静态成员、常函数和常对象......)或者使两个不同的类产生联系的语法(友元)。而本文虽然也是类与对象的内容,但和之前的…...
3.3 Thymeleaf语法
文章目录 引言Thymeleaf标签显示标签链接地址标签条件判断标签元素遍历标签 Thymeleaf表达式变量表达式选择变量表达式消息表达式链接表达式 Thymeleaf内置对象上下文对象上下文变量上下文区域请求对象响应对象会话对象日期对象 实战演练创建控制器创建模板页面 结语 引言 Thy…...
使用Dlib库实现人脸检测和关键点定位
目录 前言 一、安装Dlib库 二、人脸检测 三、人脸关键点定位 前言 Dlib是一个现代化的 C 工具包,提供了一些机器学习算法和工具,特别是在面部识别和人脸关键点检测方面非常流行。它具有易于使用的 Python 接口,并被广泛应用于计算机视觉项…...
DNS隧道流量分析
DNS隧道 DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量…...
HCIP-HarmonyOS Application Developer 习题(十一)
(填空)1、某开发者在使用HarmonyOs的分布式力时,分布式_____能力是其他分布式能力的基础。 答案:软总线 分析:分布式软总线是手机、平板、智能穿戴、智慧屏、车机等分布式设备的通信基座,为设备之间的互联互…...
使用Ollama测试OpenAI的Swarm多智能体编排框架
Ollama https://ollama.com/ ollama run qwen2.5Install Requires Python 3.10 pip install githttps://github.com/openai/swarm.git代码V1 # 导入Swarm和Agent类 from swarm import Swarm, Agent from openai import OpenAI # 实例化Swarm客户端 openai_client OpenAI…...
C# 完美操作 Active Directory 详细总结,轻松玩转域管理
前言 嗨,大家好! 在这个数据信息飞速发展的 21 世纪,数据安全成为了每个企业关注的焦点,保护企业数据安全日益成为企业工作中的重中之重。 域服务器,尤其是微软的 Active Directory(AD)&…...
PCL 点云配准 KD-ICP算法(精配准)
目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 加载点云函数 2.1.2 构建KD树函数 2.1.3 KD-ICP配准函数 2.1.4 点云可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法…...
uniapp打包安卓apk步骤
然后安装在手机上就可以啦...
Springboot 整合 Java DL4J 实现安防监控系统
🧑 博主简介:历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,…...
【数据结构与算法】第1课—算法复杂度
文章目录 1. 数据结构2. 算法3. 算法效率4. 算法复杂度5. 算法时间复杂度5.1 大O的渐进表示法5.2 时间复杂度示例 6. 空间复杂度6.1 练习16.2 练习26.3 练习3 1. 数据结构 数据结构是计算机存储、组织数据的方式,指相互之间存在一种和多种特定关系的数据元素的集合&…...
利用高德API获取整个城市的公交路线并可视化(五)
如果说我比别人看得更远些,那是因为我站在了巨人的肩上。——牛顿 参考:使用高德API获取公交线路数据,无需代码_实时公交api-CSDN博客 记录于2024年10月,因数据获取受网站更新策略等影响可能会失效,故记录写作时间,同时拾人牙慧,优化了后半部分数据直接导出为csv和shp…...
DNS:互联网域名系统的核心
什么是 DNS? DNS(Domain Name System,域名系统)是互联网的一项基础服务,它负责将人类容易记忆的域名(如 www.example.com)转换成计算机可以识别的 IP 地址(如 192.0.2.1)…...
小猿口算炸鱼脚本
目录 写在前面: 一、关于小猿口算: 二、代码逻辑 1.数字识别 2.答题部分 三、代码分享: 补充:软件包下载 写在前面: 最近小猿口算已经被不少大学生攻占,小学生直呼有挂。原本是以为大学生都打着本…...
浅谈云原生--微服务、CICD、Serverless、服务网格
往期推荐 浅学React和JSX-CSDN博客 一文搞懂大数据流式计算引擎Flink【万字详解,史上最全】-CSDN博客 一文入门大数据准流式计算引擎Spark【万字详解,全网最新】_大数据 spark-CSDN博客 目录 1. 云原生概念和特点 2. 常见云模式 3. 云对外提供服务的…...
android app执行shell命令视频课程补充android 10/11适配-千里马android
(https://blog.csdn.net/learnframework/article/details/120103471) https://blog.csdn.net/learnframework/article/details/120103471 hi,有学员在学习跨进程通信专题课程时候,在实战app执行一个shell命令的项目时候,对课程本身的android …...
C++笔记-UTF8和UTF8-dom的区别
在文件格式上,UTF-8 和 UTF-8-BOM 是两种不同的编码方式,其中 UTF-8-BOM 包含字节顺序标记(BOM),而 UTF-8 则不包含。 UTF-8: UTF-8 是一种以字节为单位的可变长度字符编码,常用于以字节为单位…...
[具身智能-237]:OpenCV - 图像的坐标轴
OpenCV 的图像坐标系与我们在数学课上学到的标准笛卡尔坐标系有显著不同,这是初学者最容易混淆的地方。简单来说,它的核心规则是:原点在左上角,X 轴向右,Y 轴向下。下面为你详细拆解这个坐标系的构成,以及在…...
番茄小说下载器:终极开源工具,让数字阅读更简单高效
番茄小说下载器:终极开源工具,让数字阅读更简单高效 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否曾经遇到过这样的困境:正在追更的…...
Go Channel 死锁排查经验
Go Channel 死锁排查经验 在Go语言中,Channel是协程间通信的重要工具,但使用不当容易引发死锁。死锁问题往往难以定位,尤其是高并发场景下,排查起来更加棘手。本文将分享几个实用的死锁排查经验,帮助开发者快速定位并…...
FreeRADIUS配置踩坑记:当LDAP用户遇上Google Authenticator,如何解决PAM模块的那些‘坑’?
FreeRADIUS与LDAP集成Google Authenticator的实战避坑指南 当企业安全团队决定为远程访问系统部署双因素认证时,FreeRADIUS与LDAP集成Google Authenticator的方案常被列为优选。但真正实施时,技术细节中的"魔鬼"往往让工程师们夜不能寐。本文将…...
《算法题讲解指南:动态规划算法--子序列问题(附总结)》--32.最长的斐波那契子序列的长度,33.最长等差数列,34.等差数列划分II-子序列
🔥小叶-duck:个人主页 ❄️个人专栏:《Data-Structure-Learning》《C入门到进阶&自我学习过程记录》 《算法题讲解指南》--优选算法 《算法题讲解指南》--递归、搜索与回溯算法 《算法题讲解指南》--动态规划算法 ✨未择之路࿰…...
LingBot-Depth应用案例:智能机器人视觉感知的深度修复实战
LingBot-Depth应用案例:智能机器人视觉感知的深度修复实战 1. 引言:当机器人遇到"视觉障碍" 想象一下,你家的扫地机器人正在客厅工作,突然在玻璃茶几前停了下来——因为它"看"不到透明的玻璃表面。或者一个…...
SynapseML计算机视觉实战:OpenCV与深度学习模型结合的终极指南
SynapseML计算机视觉实战:OpenCV与深度学习模型结合的终极指南 【免费下载链接】SynapseML Simple and Distributed Machine Learning 项目地址: https://gitcode.com/gh_mirrors/sy/SynapseML SynapseML是一个强大的分布式机器学习框架,它将Open…...
[Python3高阶编程] - Gunicorn 介绍与使用指南
Gunicorn 是什么Gunicorn(Green Unicorn)是一个 Python WSGI HTTP 服务器,用于运行 Python Web 应用。它是生产环境中最流行的 Python 应用服务器之一,特点是简单、轻量、高性能。客户端 → Gunicorn(处理 HTTP、管理 …...
linux入门第六章,cp复制、mv移动,rm删除
我把centOS安装上了,后续就用centOS来讲课,他和kali都是linux,效果一样的cp指令小伙伴们不要一看到cp两个字就说cpdd,这里的cp是复制的意思,英语是copy,语法是: cp [-r] 原文件,目标…...
智慧机场三维空间智能中枢系统白皮书——构建“全域感知 × 空间认知 × 智能调度”的下一代机场操作平台
智慧机场三维空间智能中枢系统白皮书——构建“全域感知 空间认知 智能调度”的下一代机场操作平台(镜像视界(浙江)科技有限公司空间计算技术体系支撑)一、项目背景:机场正在进入“复杂系统时代”现代机场已从单一交…...
