前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Appium自动化(七)通过脚本自动化获取apk的包名和对应启动activity

Appium自动化(七)通过脚本自动化获取apk的包名和对应启动activity

作者头像
雷子
发布2021-03-15 15:52:00
1K0
发布2021-03-15 15:52:00
举报
文章被收录于专栏:雷子说测试开发

Appium系列分享

Appium自动化(一)常用的API接口

Appium自动化(二)常用的API接口

Appium自动化(三)常用的API接口

Appium自动化(四)常用的API接口

Appium自动化(五)常用的API接口

Appium自动化(六)Appium启动app


前言

在前面我们是通过AAPT获取包的包名和启动的activity,那么能不能通过自动化方式去获取呢。本文就带你去揭秘其中的奥秘。

方式

我们可以使用androguard来获取。安装方式如下:

代码语言:javascript
复制
pip  install androguard

那么我们应该怎么使用呢

代码语言:javascript
复制
from androguard.core.bytecodes.apk import APK

先导入我们要使用的类。接着我们去获取下包名。

代码语言:javascript
复制
def get_apkname(apk):    a = APK(apk, False, "r")    return a.get_package()
代码语言:javascript
复制
if  __name__=="__main__":    apkname=get_apkname("/Users/lileilei/Downloads/com.tencent.mobileqq_8.5.0_1596.apk")    print(apkname)

结果如下

我们如何获取activity呢,也很简单

代码语言:javascript
复制
def get_apk_lautc(apk):    a = APK(apk, False, "r")    return a.get_main_activity()

接下来,我们去获取下。

代码语言:javascript
复制
 if  __name__=="__main__":    apkname=get_apk_lautc("/Users/lileilei/Downloads/com.tencent.mobileqq_8.5.0_1596.apk")    print(apkname)

结果如下:

代码展示

最后我们去把这里的自动化脚本直接打包到我们的上次分享的如何启动app。那么我们应该如何做呢,其实很简单

代码语言:javascript
复制
from appium import webdriverfrom androguard.core.bytecodes.apk import APKdef get_apkname(apk):    a = APK(apk, False, "r")    return a.get_package()def get_apk_lautc(apk):    a = APK(apk, False, "r")    return a.get_main_activity()desired_caps = {                'platformName': 'Android',                'deviceName': '59e14df4',#adb  deivces                'platformVersion': '10', #从设置中可以获取                'appPackage': get_apkname("/Users/lileilei/Downloads/com.tencent.mobileqq_8.5.0_1596.apk"),#包名                'appActivity': get_apk_lautc("/Users/lileilei/Downloads/com.tencent.mobileqq_8.5.0_1596.apk") ,# apk的launcherActivity                'skipServerInstallation':True                }driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

这样,我们就可以不用通过AAPT获取了,直接通过脚本获取即可。这样就更加自动化了。后续还会分享一些其他的内容。

很多人都可能会问,这个库是怎么实现的呢,其实我们看下方法即可。对应方法如下。

里面的获取是通过AndroidManifest.xml来获取的。

我们可以看下如何获取的。可以直接搜索下这个方法。

这里面代码是通过从AndroidManifest.xml获取。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档