“Appium+Android SDK+安卓模拟器+python3”以及它的坑

python控制安卓APP

环境

  1.  JDK 8,下载地址http://dl-t1.wmzhe.com/30/30118/jdk_8.0.1310.11_64.exe
  2. Android SDK 25,下载地址http://down-ww3.7down.net/pcdown/soft/A/android-sdk-windows.zip
  3.  Appium-desktop 1.17.1-1,下载地址https://github.com/appium/appium-desktop/releases/download/v1.17.1-1/Appium-windows-1.17.1-1.exe
  4. 逍遥安卓模拟器,安卓7.1.2系统
  5. python3 和 Appium-Python-Client

安装

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“Appium+Android SDK+安卓模拟器+python3”以及它的坑_第1张图片

“Appium+Android SDK+安卓模拟器+python3”以及它的坑_第2张图片

 

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文件夹路径。

“Appium+Android SDK+安卓模拟器+python3”以及它的坑_第3张图片

 

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

“Appium+Android SDK+安卓模拟器+python3”以及它的坑_第4张图片

然后在cmd中运行adb shell dumpsys activity查看APP窗口信息。

“Appium+Android SDK+安卓模拟器+python3”以及它的坑_第5张图片

信息非常多,找到mFocusedActivity开头的一行,可以按 Ctrl+F 搜索mFocusedActivity,如下

右边红色部分就是APP当前打开的窗口的窗口名。

6. 启动Appium服务器。先打开Appium

“Appium+Android SDK+安卓模拟器+python3”以及它的坑_第6张图片

主机和端口可以使用默认的,点击启动服务器。

“Appium+Android SDK+安卓模拟器+python3”以及它的坑_第7张图片

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并打开窗口名对应的窗口。如果运行时报错,可能是版本不对。

你可能感兴趣的:(编程)