一、环境安装
环境: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:
直接安装最新的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"