# 功能目的: python使用appium自动化操作android设备app 细节:python使用Appium Python Client模块操作appium server,而appium 是通过android sdk操作android设备的app # 一、安装android studio,通过studio安装android sdk https://developer.android.google.cn/studio/ 安装android studio,然后通过android studio下载android sdk 记住android sdk的路径C:\Users\George\AppData\Local\Android\Sdk,设置本机环境变量ANDROID_HOME=C:\Users\George\AppData\Local\Android\Sdk # 二、安装jdk、appium、python以及appium python client模块 appium除了需要android sdk,还需要用到java,所以下载安装jdk,并配置本机环境变量JAVA_HOME=C:\Program Files\java-1.8.0-openjdk-1.8.0.222-4.b10.redhat.windows.x86_64 下载安装appium:http://appium.io 下载安装python及所需模块 # 三、安装mumu模拟器(具体的android设备,其他模拟器也支持) 可以通过usb连接自己的手机(需要开启usb调试模式) 也可以本机安装安卓模拟器(需要开启usb调试模式,我用的mumu,感觉清爽点) # 四、具体实现 # 获取apk的appPackage和appActivity(重要元素) # 使用adb shell获取当前app的appPackage和appActivity 打开mumu,打开app,进入主页面 windows里进入C:\Users\George\AppData\Local\Android\Sdk\platform-tools,shift+右键,选择此处打开powershell 使用adb连接mumu模拟器,执行命令: PS C:\Users\George\AppData\Local\Android\Sdk\platform-tools> .\adb.exe connect 127.0.0.1:7555 * daemon not running; starting now at tcp:5037 * daemon started successfully connected to 127.0.0.1:7555 执行查询命令:PS C:\Users\George\AppData\Local\Android\Sdk\platform-tools> .\adb.exe shell root@MI 6 Plus:/ # dumpsys activity | grep mFocusedActivity mFocusedActivity: ActivityRecord{1ce9a23 u0 com.ss.android.ugc.aweme/.main.MainActivity t15} 此时"appPackage"="com.ss.android.ugc.aweme","appActivity"="com.ss.android.ugc.aweme.main.MainActivity" # 使用apktool # 下载apktool_2.4.0.jar https://ibotpeaches.github.io/Apktool/ # 利用apktool反编译需要操作的aweme_aweGW_v8.1.0_e487ea0.apk java -jar .\apktool_2.4.0.jar d .\aweme_aweGW_v8.1.0_e487ea0.apk 会在同级有一个名称为aweme_aweGW_v8.1.0_e487ea0的目录 然后用文本编辑器打开该目录下的AndroidManifest.xml,然后搜索关键字"<manifest",找其中包含的"package="; 搜索关键字"<activity"找其中包含"MainActivity" 得到"appPackage"="com.ss.android.ugc.aweme","appActivity"="com.ss.android.ugc.aweme.main.MainActivity" # 启动mumu模拟器 打开mumu,同时查看系统版本号 "platformVersion": "6.0.1" windows里进入C:\Users\George\AppData\Local\Android\Sdk\platform-tools,shift+右键,选择此处打开powershell 使用adb连接mumu模拟器,执行命令: PS C:\Users\George\AppData\Local\Android\Sdk\platform-tools> .\adb.exe connect 127.0.0.1:7555 * daemon not running; starting now at tcp:5037 * daemon started successfully connected to 127.0.0.1:7555 获取设备名称,执行命令(此时"deviceName":"127.0.0.1:7555"): PS C:\Users\George\AppData\Local\Android\Sdk\platform-tools> .\adb.exe devices List of devices attached 127.0.0.1:7555 device # 启动appium appium console会有相应的过程输出 # 编写python程序,交互appium #!/usr/bin/env python from appium import webdriver desired_caps = { "platformName": "Android", "platformVersion": "6.0.1", "deviceName": "127.0.0.1:7555", "appPackage": "com.ss.android.ugc.aweme", "appActivity": "com.ss.android.ugc.aweme.main.MainActivity" } # 连接appium server,告诉appium,代码要操作哪个设备上的哪个APP driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) # 执行上面的python代码,如果appium console最后有以下内容输出,则说明连接正确 [W3C (a7c28ff9)] Responding to client with driver.createSession() result: {"capabilities":{"platform":"LINUX","webStorageEnabled":false,"takesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":false,"warnings":{},"desired":{"platformName":"Android","platformVersion":"6.0.1","deviceName":"127.0.0.1:7555","appPackage":"com.ss.android.ugc.aweme","appActivity":"com.ss.android.ugc.aweme.main.MainActivity"},"platformName":"Android","platformVersion":"6.0.1","deviceName":"127.0.0.1:7555","appPackage":"com.ss.android.ugc.aweme","appActivity":"com.ss.android.ugc.aweme.main.MainActivity","deviceUDID":"127.0.0.1:7555","deviceScreenSize":"1440x810","deviceModel":"MI 6 Plus","deviceManufacturer":"Xiaomi"}} [HTTP] <-- POST /wd/hub/session 200 7611 ms - 761