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"

相关推荐
机核研创社2 小时前
服装自动化观察:接橡筋机的超声波熔切与冷刀,差别到底在哪
运维·自动化
欣欣之王来了2 小时前
AI合规专项:AI自动化决策的合规管控要点
运维·人工智能·自动化
海宇AI2 小时前
零信任架构实战:基于海宇车辆估值构建自动化二手车收车测算网关
运维·人工智能·架构·自动化
科技研学社2 小时前
2026外贸新规+订单重构:内衣内裤工厂,自动化如何应对供应链洗牌
运维·重构·自动化
海宇服务2 小时前
零信任架构实战:基于海宇车辆估值构建自动化车队残值重估网关
运维·人工智能·架构·自动化
代码方舟13 小时前
数据科学风控实战:基于天远全能消金报告构建自动化信用评估网关
运维·人工智能·自动化
duanshu_14 小时前
官网表单与下载异常怎么排查?五个环节定位故障
前端·自动化·flyweight
福建佰胜张工14 小时前
A5E00839230西门子工业核心配件详解:参数、安装调试与故障运维全攻略
运维·网络·安全·自动化
ii_best14 小时前
按键精灵手机端开发安卓版实战:手写一个可最小化、可拖动的「运行日志悬浮窗」(附完整 源码 + 踩坑记录)
android·ios·智能手机·自动化·ai编程·按键精灵
天远Date Lab14 小时前
零信任架构实战:基于天远全能消金报告(标准版)构建自动化骑手资信评估网关
运维·人工智能·架构·自动化