python控制安卓APP
1. 先安装JDK 8(一开始安装了JDK 14,Appium无法连接,JDK版本不能太高,最好JDK 8),安装完成后设置环境变量,假如JDK安装到D:\Program Files\Java\jdk1.8.0_131。
添加系统变量JAVA_HOME=D:\Program Files\Java\jdk1.8.0_131
添加系统PATH路径:D:\Program Files\Java\jdk1.8.0_131\bin;D:\Program Files\Java\jdk1.8.0_131\jre\bin
2. 安装Android SDK 25,安装完后运行SDK Manager.exe,选择合适版本安装,Android SDK Build-tools和SDK Platform版本要和模拟安卓版本一致,Android 7对应版本25,其他参考《Android各版本对应的SDK版本》,版本不对应会报appium-Uiautomator2错误。
设置Android SDK环境变量,假如Android SDK目录为D:\android-sdk-24,设置系统环境变量ANDROID_HOME,在系统变量PATH中添加platform-toos和tools文件夹路径。
3. 安装Appium-desktop,这个里有个坑,我试了两个版本都有问题,Appium-desktop 1.17.1-1里的appium-uiautomator2-server-debug-androidTest.apk文件有问题,Appium-desktop 1.15.1里的appium-uiautomator2-server-v4.3.0.apk文件有问题,解决办法是①先装Appium-desktop 1.15.1,将安装目录下的resources\app\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk复制出来;②再安装Appium-desktop 1.17.1-1,将①的appium-uiautomator2-server-debug-androidTest.apk复制到resources\app\node_modules\appium\node_modules\appium-uiautomator2-server\apks下覆盖。
4. 安装Pthon3,我用的python 3.6。再安装Appium-Python-Client,可直接运行pip install Appium-Python-Client进行安装。
5. 安装安卓模拟器,我用的逍遥模拟器,Android版本使用7.1。
1. 启动安卓模拟器,使用拼多多APP进行测试,因此需安装拼多多APP。
2. 打开cmd,运行adb devices,测试adb能否连接到安卓模拟器
上面表示连接正常,地址是192.168.1.3:5555。有时候需要手动连接,不同模拟器使用的端口会不一样,逍遥模拟器用5555端口,可以运行adb connect 127.0.0.1:5555尝试连接,如果连接失败,更换成你的IP再试试,或者关闭模拟器重新打开。
3. 确认安卓系统版本,cmd运行adb shell getprop ro.build.version.release
显示安卓版本是7.1.2,注意安卓版本需要和SDK对应(不是版本号相同,对应关系可以看上面有说)。
4. 查看APP的包名称,Android SDK中有个工具可以查看,build-tools下的aapt.exe查看APK信息
红色部分就是APP的包名称。
5. 查看APP窗口名称。APP内每个窗口都有一个名称,要操作app需要知道窗口名。先在模拟器内运行APP
然后在cmd中运行adb shell dumpsys activity查看APP窗口信息。
信息非常多,找到mFocusedActivity开头的一行,可以按 Ctrl+F 搜索mFocusedActivity,如下
右边红色部分就是APP当前打开的窗口的窗口名。
6. 启动Appium服务器。先打开Appium
主机和端口可以使用默认的,点击启动服务器。
4. 编写python脚本
from appium import webdriver
import time
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7.1.2'
desired_caps['deviceName'] = '192.168.1.3:5555'
desired_caps['appPackage'] = 'com.xunmeng.pinduoduo'
desired_caps['appActivity'] = '.ui.activity.HomeActivity'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(5)
driver.quit()
platformVersion是上面查到的安卓系统版本号。
deviceName是上面查到的模拟器地址。
appPackage是APP包名称。
appActivity是APP窗口名。
http://127.0.0.1:4723/wd/hub是Appium服务地址,后面的/wd/hub是必须的。
运行python脚本则会在模拟器中打开APP并打开窗口名对应的窗口。如果运行时报错,可能是版本不对。