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"

相关推荐
北京耐用通信12 分钟前
水处理PH监测难题如何破?耐达讯自动化Profibus光纤链路模块来解答
人工智能·科技·物联网·网络协议·自动化·信息与通信
TOYOAUTOMATON12 分钟前
节卡机器人 2026:核心动态与全景解析
大数据·人工智能·目标检测·机器人·自动化
147API13 分钟前
用 clawdbot 做自动化:任务编排、触发器与可观测性
运维·自动化·clawdbot
2501_9419820517 分钟前
企微API自动化:外部群推送实现高效自动化
运维·自动化·企业微信
芒鸽20 分钟前
鸿蒙应用自动化资源同步:Kuikly框架资源复制解决方案
华为·kotlin·自动化·harmonyos·kuikly
2501_9419820532 分钟前
企微外部群自动化的最终章:多账号轮巡推送实战指南
运维·自动化·企业微信
weixin_4624462316 小时前
一键安装 MySQL 5.7(CentOS 7)自动化脚本详解
mysql·centos·自动化
keep the18 小时前
Windows启动IOS17/18的WDA
windows·ios·自动化
tritone20 小时前
学习Chef自动化配置管理工具,为了实践环境部署,我选择了**阿贝云**的**免费虚拟主机**和**免费云服务器**来搭建测试平台。
服务器·学习·自动化
我送炭你添花21 小时前
工业触摸屏:电阻式触摸屏控制器选型详解
单片机·嵌入式硬件·自动化