Python,Chrome 任务管理器 - 以编程方式访问 Chrome 任务管理器的文本而不使用 CHROMIUM

Posted

技术标签:

【中文标题】Python,Chrome 任务管理器 - 以编程方式访问 Chrome 任务管理器的文本而不使用 CHROMIUM【英文标题】:Python, Chrome Task Manager - Programmatically Access Chrome Task Manager's Text WITHOUT USING CHROMIUM 【发布时间】:2019-03-03 22:26:39 【问题描述】:

所以,由于许多人都遇到过 Chrome 的内存使用情况可能会令人衰弱,所以我想以编程方式访问“Chrome 的任务管理器”或显示选项卡、它们的 PID 和子帧(如果可能的话)的等效项,所以我可以创建一个脚本来杀死他们。经过大量阅读,以及很多答案表明这可能是不可能的,并且有些海报没有回答这个问题,我只是不确定这个问题的答案是否真的已经明确给出了。

我得到的最接近的是在多功能框中使用 "chrome://system/",但是当您展开“mem_usage”时,它不会为您在每个选项卡上提供有用的内存使用数字all 并且缺少子帧,但是如果我能真正获得它们的内存占用量,我计划使用这种方法使用标签标题来杀死标签。

我尝试使用 win32gui 的 FindWindowEx 方法来获取文本,但这需要您知道所显示文本的子元素,所以我下载了 "Window Detective" 到查看“Chrome 任务管理器”显示的元素名称、PID 和选项卡名称,但“Window Detective”只返回 “EmbeddedMenuWindowClass”,即整个 Window ,与显示的文本无关。

我尝试使用 Selenium,但它似乎无法在 Chrome 中抓取特殊菜单,而不仅仅是抓取网页中的标签名称和元素。

我也尝试过“pywinauto”,但那东西的文档真的非常糟糕。我尝试过使用“connect”方法、“hwndwrapper”等,但要掌握要使用的参数、它们的传递方式、期望的内容以及如何使用您获得的输出(例如 PID 列表或手柄)严重损坏。如果文档包含输出,我会很高兴,这样我就可以真正看到我应该得到的东西,这样我就不会最终发现我测试过的所有东西都没有提供我想要的东西寻找。抱歉,如果这听起来很烦人,但我花了几个小时阅读 PDF 和官方文档并感到非常沮丧。

我还尝试通过命令行启动 chrome 在此文档之后进行日志记录 (http://www.chromium.org/for-testers/enable-logging),但它可能是 Chromium 唯一的东西,但找不到创建的日志记录文档,当我将其输出重定向到文件,我没有得到任何有用的信息。

但是,是的,有谁知道如何以编程方式访问“Chrome 任务管理器”的文本,或者其他可以提供类似输出的内容?谢谢。

【问题讨论】:

pywinauto 没有针对初学者的教程,但是 Getting Started Guide 怎么样?它有输出和代码示例。真的有那么糟糕吗? 还有一个技巧可以在 Chrome 中启用辅助功能:github.com/pywinauto/pywinauto/wiki/… 谢谢瓦西里。作为一个入口点,每当我通过“chrome://accessibility/”“显示/复制辅助功能树”时,Chrome 都会立即为我崩溃。但是通过 github 页面的链接,我被介绍给了 Qt,我将在接下来的几天里阅读并进行试验。 pywinauto 的入门指南要好一些,但是当我深入了解它时,我还是忍不住敲了敲。我猜这不是我的文档模式。但是,伙计,谢谢。我真的很想搞砸 Qt。 【参考方案1】:

为什么要像这样使用 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 获取数据.

https://developer.chrome.com/extensions/tabs

【讨论】:

是的,我需要的不仅仅是 PID,我还需要选项卡名称。我试图避免使用扩展程序,因此它可能是可以从 Chrome 外部本地使用来杀死标签的东西,因为当 Chrome 挂起时,据我所知,我什至无法访问扩展程序。感谢您的建议。我真的很感激。

以上是关于Python,Chrome 任务管理器 - 以编程方式访问 Chrome 任务管理器的文本而不使用 CHROMIUM的主要内容,如果未能解决你的问题,请参考以下文章

Selenium Chrome 浏览器实例在任务管理器中没有死机

Python爬虫编程思想(60): 通过浏览器获取CSS选择器代码

如何以与在 Windows 资源管理器中“发送给邮件收件人”相同的方式以编程方式发送电子邮件?

Chrome 网络驱动程序 - Python

DLL注入---任务管理器之进程保护--Python

python-多任务编程01-迭代器