Python subprocess 使用(二)

本篇继续介绍subprocess的使用.

这里主要添加两个自己在工作过程中常用的两个小命令.

1: 获取顶层activity

import subprocess

def get_top_activity():
# 使用adb命令获取顶层activity
cmd = 'adb shell dumpsys window |grep "mCurrentFocus=Window"'
# 解析输出结果,提取顶层activity
result = subprocess.check_output(cmd, shell=True).decode('utf-8').strip()
return result # 调用函数获取顶层activity
print("Top activity:", get_top_activity())

2: 获取top activity 某个view 的id

import subprocess
import sys,os
name = sys.argv[0]
arg =sys.argv[1] def get_control_id():
# 使用adb命令获取当前activity某个组件id
cmd = 'adb shell dumpsys activity top |grep "app:id/'+arg+'"'
print(cmd)
result = subprocess.check_output(cmd, shell=True).decode('utf-8').strip() return result # 调用函数获取顶层activity
print("id/"+arg+":", get_control_id())

参数传入目标view的id name:

python3 topActivity.py item_icon

输出如下:

Top activity: mCurrentFocus=Window{bbad0c0 u0 com.test.signapk/com.test.signapk.MainActivity}
adb shell dumpsys activity top |grep "app:id/item_icon"
id/item_icon: androidx.appcompat.widget.AppCompatImageView{c12b536 V.ED..... ........ 35,35-315,315 #7f08008c app:id/item_icon}
androidx.appcompat.widget.AppCompatImageView{1f96f09 V.ED..... ........ 35,35-315,315 #7f08008c app:id/item_icon}
androidx.appcompat.widget.AppCompatImageView{9342b4b V.ED..... ........ 35,35-315,315 #7f08008c app:id/item_icon}
androidx.appcompat.widget.AppCompatImageView{607b57d V.ED..... ........ 35,35-315,315 #7f08008c app:id/item_icon}
androidx.appcompat.widget.AppCompatImageView{e8c756c V.ED..... ........ 35,35-315,315 #7f08008c app:id/item_icon}
androidx.appcompat.widget.AppCompatImageView{8f2f622 V.ED..... ........ 35,35-315,315 #7f08008c app:id/item_icon}
androidx.appcompat.widget.AppCompatImageView{c4337a5 V.ED..... ........ 35,35-315,315 #7f08008c app:id/item_icon}

Python subprocess 使用(二)的更多相关文章

  1. Python常用模块二

    一.time & datetime #_*_coding:utf-8_*_ import time # print(time.clock()) #返回处理器时间,3.3开始已废弃 , 改成了t ...

  2. python排序之二冒泡排序法

    python排序之二冒泡排序法 如果你理解之前的插入排序法那冒泡排序法就很容易理解,冒泡排序是两个两个以向后位移的方式比较大小在互换的过程好了不多了先上代码吧如下: 首先还是一个无序列表lis,老规矩 ...

  3. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  4. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

    Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...

  5. 初学 Python(十二)——高阶函数

    初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...

  6. python/MySQL练习题(二)

    python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...

  7. Python/MySQL(二、表操作以及连接)

    Python/MySQL(二.表操作以及连接) mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. 外键 :可以进行联合外键,操作. mysql> create table y ...

  8. python下实现二叉堆以及堆排序

    python下实现二叉堆以及堆排序 堆是一种特殊的树形结构, 堆中的数据存储满足一定的堆序.堆排序是一种选择排序, 其算法复杂度, 时间复杂度相对于其他的排序算法都有很大的优势. 堆分为大头堆和小头堆 ...

  9. python函数(二)

    python函数(二) 变量的作用域 1.局部变量与全局变量 在函数内创建的变量被称为局部变量,这类变量的生命周期与函数相同,当函数执行完毕时,变量也就随之消失. 此类变量只能在函数内部调用,函数外不 ...

  10. Python爬虫利器二之Beautiful Soup的用法

    上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则表达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫Be ...

随机推荐

  1. docker搭建CMS靶场

    项目地址:https://github.com/Betsy0/CMSVulSource 该项目是为了方便在对CMS漏洞进行复现的时候花费大量的时间在网上搜索漏洞源码,从而有了此项目.此项目仅为安全研究 ...

  2. IOS苹果应用IPA重签名软件手机版(苹果重签名,企业签名,安卓苹果平台,时间控制)

    软件简介 IOS苹果应用IPA重签名软件手机版,可以在安卓或者苹果手机上,苹果应用IPA文件重新签名,无需MAC苹果电脑和配置XCODE开发环境,便可以直接对IPA文件进行签名,签名在本地进行,不消耗 ...

  3. Vue 中的 Ajax

    1.1 使用代理服务器 1.1.1 方式一 在 vue.config.js 中添加如下配置: devServer:{ proxy:"http://localhost:5000" } ...

  4. 蓝桥杯真题——第十三届蓝桥杯大赛软件赛省赛 Python 大学 B 组

  5. MySQL PXC集群大事务提交超限

    研发人员在测试大事务提交时遇见了错误: Got error 5 - 'Transaction size exceed set threshold' during COMMIT 测试了几次都是1200S ...

  6. python接口自动化之request请求,如何使用 Python调用 API?

    Python实战 | 如何使用 Python 调用 API 一.HTTP 请求HTTP 请求是在 HTTP 协议下的一种数据格式,用于向服务器发送请求,其通常由请求行.请求头和请求体三部分构成,请求头 ...

  7. frida动态插桩初探

    前言 近期碰到了分析app的需求,就学习了一下 frida的动态插桩技术.frida是一款轻量级HOOK框架,可用于多平台上,例如android.windows.ios等.frida分为两部分,服务端 ...

  8. Java 基础学习第一弹

    1. equels和==的区别 equals方法用于比较对象的内容是否相等,可以根据自定义的逻辑来定义相等的条件,而==操作符用于比较对象的引用是否相等,即它们是否指向同一块内存地址.equals方法 ...

  9. List 切割成小 list 分批处理数据

    使用 Google Guava 库中的方法对 bmList 进行分割. Lists.partition() 方法用于将一个列表按指定大小进行分割,返回一个包含分割后子列表的新列表. 在这个例子中,bm ...

  10. windows下使用Mingw执行make编译

    目录 windows下使用Mingw执行make编译 下载安装 Mingw 设置环境变量 验证环境 gcc mingw32-make 编译 一.准备好相关代码 二.执行Makefile 运行 优化 整 ...