app自动化中定位应用的启动页面Activity的方法

问题: 在app自动化测试中,定位应用的启动页面常常遇到定位不准确的问题(可能导致的报错:Security exception: Permission Denial: starting Intent

解决:通过appium 日志来捕获应用启动的信息情况,从而获取应用的启动页面

步骤:

  1. 先手动杀死应用,清空日志,在cmd上输入 adb logcat -c
  2. 保存日志到D盘,在cmd输入 adb logcat -s ActivityManager > D:\log.txt
  3. 然后手动打开应用,按Ctrl + c 停止日志保存
  4. 打开D:\log.txt 文件,搜索包含 Start proc xxx activity {xxx} 日志,大括号里面的就是该应用的启动页 activity
  5. 在日志里可能会搜索到许多 start proc xx yyy {xxxx},但是yyy处可以区分,后面的都是service,就不用考虑了,然后一般来说第一个start是正确的,但是yyy可能不叫 activity, 比如企业微信就叫 top-activity 可以理解为每次start 都会启动服务,但是只有第一个是启动应用,即附带信息为activity,而后面都是服务交互所以附带信息是service

其他方法的尝试:adb shell dumpsys window |findstr mCurrentFocus

在启动应用时,终端不断输入命令adb shell dumpsys window |findstr mCurrentFocus用以监控程序,但是这个命令返回的结果不一定正确,因为我一开始便是使用此种方式获取地址,然后报错了。