Appium操控安卓模拟器快速上手 (python)
非系统性学习,只是为了快速开始用,我自己用途主要是写脚本操控模拟器(当然安卓真机也可以)干一些事情,所以对于跑测试用例的可能用处不大(虽然本来应该的用途是跑测试用例)。适用于接触过selenium的人,或者至少知道怎么阅读html代码…
写了一段时间这个了,想记录一下。也会加入一些写了一段时间脚本的小小经验,包括什么双应用切换啊之类的。
环境搭建
我当初是看的这个教程,写的非常好了,跟着一步步做就能把环境搭好了。
总结起来需要的就是:
- Appium客户端(desktop或者控制台版本应该都行,不过为了要分析html结构还是得下个desktop的,控制台版本我自己用的不多,貌似没desktop那么占资源)
- Java SDK (需要配JAVA_HOME环境变量)
- Android Studio,并且在里面的SDK Manager安装Android SDK
- 如果用模拟器那么需要安装模拟器,我比较喜欢雷电,因为adb很好连
- 调试adb(如果是雷电的话,启动模拟器之后
adb devices
一下应该就可以看到设备了)(建议可以把adb也配进环境变量,以后控制台直接adb xxxcommand会方便一些)
环境上基本就这么多,然后就是面向具体app的问题了。adb之前我也接触过一点,我遇到过的问题列在下面:
- 模拟器和电脑adb版本不一致:把模拟器的adb替换成之前Android Studio里下载好的就行(在platfrom tools之类名字的文件夹里),链接里的教程也有提到。不过雷电的话我没遇到过这个问题。
- 无法检测到真机:要打开USB调试权限,反正能开的相关权限都开开
- 无法检测到模拟器:链接里的教程也提到了一点,
adb devices
检测不到的话需要adb connect 127.0.0.1:portNumber
,具体的端口号可以上网查查,包括多开的端口号也都是有规律的,写脚本没有问题。
Appium Desktop调试
我这里用酷我音乐演示,app版本不同可能html结构会有一些差异。
这部分链接里的教程也写清楚了的,准备一个apk,然后去模拟器的安装根目录,里面有aapt.exe,然后执行.\aapt.exe dump badging xxx.apk
,找到package name和lunchable activity name,复制下来。
像这样在appium里填上session各参数。
{
"platformName": "Android",
"platformVersion": "5.1.1", // 填模拟器或者真机的安卓版本,设置里能看见
"deviceName": "emulator", // 安卓的话这个参数没有用,随便填都可以
"appPackage": "cn.kuwo.player", // 上面找到的package name
"appActivity": "cn.kuwo.player.activities.EntryActivity" // 上面找到的lunchable activity name
}
appium里这样填就可以了,注意appium里最后一条后面不可以打逗号(py里随意)
然后appium里就能像浏览器里F12检查源代码一样看见html代码,也可以做一些操作,也有操作录制什么的。
小例子
这里用我之前写过的脚本的一小部分来看看吧,我们控制模拟器在里面检索一个关键词,就这么简单一件小事情。
在appium里可以很容易看到搜索框的信息,一步步跟过去(可以用操作录制)能轻易获取各元素的id或者xpath等信息,于是我们可以开始写代码了。
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver