Appium appium 简明教程 (9)——如何获取 android app 的 Activity

乙醇 · 2014年06月30日 · 最后由 fayer1986 回复于 2019年12月04日 · 3316 次阅读

有时候在 appium 的 Desired Capabilities 中需要指定被测 app 的 appActivity,下面的方法可能会对你有所帮助。

方法一

如有你有待测项目的源码,那么直接查看源码就好。如果没有,那么请联系有源码的同学,这是推荐方法。

本文版权归乙醇所有,欢迎转载,但请注明作者与出处,严禁用于任何商业用途

方法二

如果你没有代码,那么可以反编译该 app。

这里将用到 2 个工具,分别是 dex2jar 和 jd-gui。你可以在这里下载目前为止的最新版本以及示例 apk。

我们以工具包里的ContactManager.apk为例,简单介绍一下反编译的流程。

  • 1,重命名 ContactManager.apk 为 ContactManager.zip 并解压得到文件 classes.dex;
  • 2,解压 dex2jar-0.0.9.15.zip,并从命令行进入该文件夹;
  • 3,运行命令 d2j-dex2jar.bat path_to\classes.dex 在当前文件夹下得到classes-dex2jar.jar
  • 4,解压 jd-gui-0.3.6.windows.zip 得到文件 jd-gui.exe;
  • 5,使用 jd-gui.exe 打开 classes-dex2jar.jar;

嗯,好了,可以尽情欣赏了。上图。
jd-gui效果

上图所示的 ContactManager 就是待测 app 的 main activity。

方法三

参考 testerhome 的这个帖子

使用 log 查看大法 (嗯,windows 上没 grep 不幸福,好在有 powershell 的 Select-String,可以拿来勉强一用),直接搬砖。

  • a、启动待测 apk
  • b、开启日志输出:adb logcat>D:/log.txt
  • c、关闭日志输出:ctrl+c
  • d、查看日志 找寻:
Displayed com.mm.android.hsy/.ui.LoginActivity: +3s859ms
appPackage = com.mm.android.hsy
appActivity = .ui.LoginActivity

好了,准备活动做的差不多了。下一节乙醇带大家进行控件定位之旅。

本文版权归乙醇所有,欢迎转载,但请注明作者与出处,严禁用于任何商业用途

共收到 8 条回复 时间 点赞

还是反编译来的靠谱一些。。。

其实 hierarchyviewer 可以直接获得 package 的 value 还有 acvitity 的 value。个人感觉这是最方便的获取方法,只是不能复制粘贴,需要自己手动输入。

还有一种方法,也不错
adb shell
cd system/app
ls | grep 'apk'
这样可以看到系统自带的所有 apk,然后
aapt dump badging
可以查看对应 apk 的 package 和 activity

cmd 中直接执行 aapt dump badging app 的绝对路径,查找屏显信息中的 launchable-activity: name=,name=后面就是所要的 activity 信息了

#3 楼 @ianxiaohanxu 打开一个 APP。使用这个命令 adb shell dumpsys activity |find "mFocusedActivity"
这个就是获取当前打开 app 的 activity.

#5 楼 @jay2uu 我也是使用的这个方法 然后我会去截取输出的信息,使包名/activity 直接就显示出来

乙醇 [该话题已被删除] 中提及了此贴 08月26日 15:25
乙醇 Appium 简明教程 (持续更新) 中提及了此贴 12月01日 09:57

windows 上可以输入 adb logcat | findstr START

这个方法好

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册