python - Python,Chrome 任务管理器 - 以编程方式访问 Chrome 任务管理器的文本而不使用 CHROMIUM
问题描述
因此,由于许多人遇到过 Chrome 的内存使用情况可能会令人衰弱,因此我想以编程方式访问“Chrome 的任务管理器”或显示选项卡、它们的 PID 和子帧(如果可能的话)的等效项,以便我可以创建一个脚本来杀死它们。经过大量阅读,以及很多答案表明这可能是不可能的,并且有些海报没有回答这个问题,我只是不确定这个问题的答案是否真的已经明确给出。
我得到的最接近的是在多功能框中使用“chrome://system/”,但是当您展开“mem_usage”时,它根本不会为每个选项卡提供有用的内存使用量,并且缺少子帧,但是使用这种方法如果我真的可以得到它们的内存占用,我计划使用标签标题来杀死标签。
我尝试使用win32gui 的 FindWindowEx方法来获取文本,但这需要您知道所显示文本的子元素,因此我下载了“Window Detective”以查看“Chrome 任务管理器”显示的元素名称, PID 和选项卡名称,但“Window Detective”只返回“EmbeddedMenuWindowClass”,它是整个窗口,与显示的文本无关。
我做了一个短暂的努力来使用Selenium,但它似乎只是不能在 Chrome 中抓取特殊菜单,而不是在网页中抓取标签名称和元素。
我也尝试过“pywinauto”,但那东西的文档真的非常非常糟糕。我尝试过使用“connect”方法、“hwndwrapper”等,但要掌握要使用的参数、它们的传递方式、期望的内容以及如何使用您获得的输出(例如 PID 列表或手柄)严重损坏。如果文档包含输出,我会很高兴,这样我就可以真正看到我应该得到的东西,这样我就不会最终发现我测试过的所有东西都没有提供我想要的东西寻找。抱歉,如果这听起来很烦人,但我花了几个小时阅读 PDF 和官方文档,非常沮丧。
我还尝试在此文档之后通过命令行启动 chrome 以进行日志记录( http://www.chromium.org/for-testers/enable-logging),但它可能只是 Chromium 的东西,但找不到日志文件创建并且当我将它的输出重定向到一个文件时,我没有得到任何有用的东西。
但是,是的,有谁知道如何以编程方式访问“Chrome 任务管理器”的文本,或者其他可以提供类似输出的东西?谢谢你。
解决方案
为什么要像这样使用 python os 模块:
import subprocess as sub
p = sub.Popen(['your command', 'arg1', 'arg2', ...],stdout=sub.PIPE,stderr=sub.PIPE)
output, errors = p.communicate()
print output
您可以使用命令 ps 列出在 chrome 中运行的所有进程,但是这只会给您 pid 而不是选项卡的名称,我认为唯一的方法是通过创建扩展直接从 chorme 获取数据。
推荐阅读
- c++ - 为什么不能返回对临时对象的引用
- r - 如何使用 BTYD 包预测预期销售额?
- node.js - 开玩笑 - awilix - node.js 内存泄漏
- javascript - 无法使用 React 客户端将图像上传到节点
- reactjs - 我如何在类方法中使用反应导航?
- xcode - XV6 信号与 macOS 信号冲突
- c# - 如何在 ScriptBundle for .NET MVC (4.7.2) 应用程序中包含 SRI 哈希?
- javascript - Vue 实例中的 V 模型
- reactjs - javascript (React) - 根据当前时间(不是用户的当前时间)做一个标志
- javascript - 如何在我的 react native 项目中启用一个特定 node_modules 包的热重载?