基于Appium框架实现手机app RPA
一、基础环境搭建
关于相关软件的 百度网盘:https://pan.baidu.com/s/1uZBxE6e1RoBdQQDVOIrnqA?pwd=yang
-
安装client编程库
pip install appium-python-client
-
安装Appium Server
下载百度网盘连接中的:Appium-windows-1.15.1.exe
-
安装JDK
百度网盘链接:https://pan.baidu.com/s/1MEqywawXQ_tYf6k8h9by3A?pwd=yang
推荐使用jdk 1.8 版本,使用jdk 11.0可能会报错
JDK安装完成后需要配置环境变量 如:
JAVA_HOME d:\tools\java\jdk1.8.0_211
-
安装Android SDK
下载第一个百度网盘链接中的:androidsdk.zip
下载并解压完成后,添加系统环境变量
ANDROID_HOME
值为d:\tools\androidsdk
此外,将adb.exe所在目录加入PATH系统环境变量
d:\tools\androidsdk\platform-tools\
二、连接手机
- 在你运行程序的电脑上 用 USB线 连接上 你的安卓手机
- 进入
手机设置
->关于手机
,不断点击版本号
菜单(7次以上) - 退出到上级菜单,在开发者模式中,启动USB调试(不同的手机有不同的设置需求,可以自行百度,如OPPO手机需( 将选择USB配置设置为MIDI);开启 禁止权限监控)
三、命令
-
查看是否成功连接手机
adb devices -l -------#若出现一下结果则链接成功#------------ List of devices attached f5865013 device product:PDPM00 model:PDPM00 device:OP4A47 transport_id:5
-
查看从软件商城安装的(无apk安装包)的app的
appPackage
和appActivity
参数命令需要现在手机上启动程序,让程序页面处于最上层
adb shell dumpsys activity recents | find "intent={" -------#输出结果的第一行则是该app的相关数据#------------ intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=tv.danmaku.bili/.MainActivityV2} intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000300cmp=com.huawei.android.launcher/.unihome.UniHomeLauncher} intent={flg=0x10804000 cmp=com.android.systemui/.recents.RecentsActivity bnds=[48,1378][10322746]} intent={flg=0x10000000 cmp=com.tencent.mm/.ui.LauncherUI} #------------- cmp=tv.danmaku.bili/.MainActivityV2 appPackage = tv.danmaku.bili appActivity = .MainActivityV2
-
有apk安装包,查看app的
appPackage
和appActivity
参数-
查看
appPackage
在命令行窗口执行d:\tools\apk\bili.apk --> apk文件在电脑中的路径
d:\tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "package: name=" ------------- # 输出 package: name='tv.danmaku.bili' versionCode='5531000' versionName='5.53.1' platformBuildVersionName='5.53.1' compileSdkVersion='28' compileSdkVersionCodename='9' 则 appPackage = tv.danmaku.bili
- 查看
appActivity
在命令行窗口执行
d:\tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "launchable-activity" ----------- # 输出 launchable-activity: name='tv.danmaku.bili.MainActivityV2' label='' icon='' 则 appActivity = tv.danmaku.bili.MainActivityV2 或 appActivity = .MainActivityV2
-
四、测试
-
先通过
adb devices -l
检测电脑是否成功连接手机 -
在手机上启动某个app程序,这里以哔哩哔哩为例
-
在电脑命令行窗口输入命令查看启动的手机app的
appPackage
和appActivity
参数值-
无apk
adb shell dumpsys activity recents | find "intent={"
-
有apk
- appPackage参数值
d:\tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "package: name="
- appActivity参数值
d:\tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "launchable-activity"
-
-
打开安装好的Appium Server程序
点击编辑配置,按搭建环境是配置的
ANDROID_HOME
和JAVA_HOME
环境变量的值输入即可,并点击保存并重新启动点击启动服务器
-
编辑python自动化程序作为客户端
desired_caps
字典中的appPackage
及appActivity
输入通过上面说的方法查询到的值对应输入即可from appium import webdriver from selenium.webdriver.common.by import By desired_caps = { 'platformName': 'Android', # 被测手机-安卓 'platformVersion': '12', # Android版本 'deviceName': 'xxx', # 设备名称 'appPackage': 'tv.danmaku.bili', # 启动APP Package名称 'appActivity': '.MainActivityV2', # 启动Activity名称 # 'unicodeKeyboard': True, # 使用自带输入法,输入中文是填True,输入中文时需要 # 'resetKeyboard': True, # 执行完程序恢复原来的输入法,输入中文时需要 'noReset': True, # 不重置App,【重要】 'newCommandTimeout': 6000, 'automationName': 'UiAutomator2' } # 连接Appium Server,初始化自动化环境 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_capabilities=desired_caps) # 设置缺省等待时间 driver.implicitly_wait(10) driver.find_element(By.ID, 'expand_search').click() driver.find_element(By.ID, 'search_src_text').send_keys('yuanshen') driver.find_element(By.ID, 'action_search').click() eles = driver.find_elements(By.ID, 'title') for ele in eles: # 打印标题 print(ele.text) input('**** Press to quit..') # 根据id定位搜索框位置 driver.quit()
在启动程序后,手机会自动安装Appium Settings程序,需要手动通过安装一下,之后就不需要再动手机了
以上为学习白月黑羽大佬文档后的总结,原文链接:https://www.byhy.net/tut/auto/appium/01/
标签:实现,bili,appActivity,apk,intent,自动化,Android,tools,find From: https://www.cnblogs.com/yangxsby/p/17970473