Python, Chrome Task Manager — программный доступ к тексту Chrome Task Manager без ИСПОЛЬЗОВАНИЯ CHROMIUM

#python #google-chrome #taskmanager

#python #google-chrome #taskmanager

Вопрос:

Итак, поскольку многие сталкивались с тем, что использование памяти Chrome может быть изнурительным, я хочу ПРОГРАММНО получить доступ к «Chrome Task Manager» или чему-то эквивалентному, который отображает вкладки, их PID И вложенные фреймы (если это возможно), чтобы я мог создать скрипт для их уничтожения. После тонны чтения и множества ответов, предполагающих, что это может быть невозможно, а некоторые плакаты не отвечали на вопрос, я просто не уверен, что ответ на этот вопрос действительно окончательно дан.

Самое близкое, что я получил, — это использование «chrome: //system /» в омнибоксе, но когда вы разворачиваете «mem_usage», это вообще не дает вам полезных показателей использования памяти для каждой вкладки и лишено вложенных фреймов, но с помощью этого метода я планировал использовать заголовки вкладок, чтобы уничтожить вкладки, если бы я действительно мог получить их объем памяти.

Я попытался использовать метод FindWindowEx от win32gui для получения текста, но для этого требуется знать дочерний элемент отображаемого текста, поэтому я загрузил «Window Detective», чтобы увидеть название элемента (ов), отображаемого «Chrome Task Manager», PID и названия вкладок, но «Window Detective» вернулся только с «EmbeddedMenuWindowClass», который представляет собой все окно, не связанное к отображаемому тексту.

Я предпринял мимолетную попытку использовать Selenium, но, похоже, он просто не способен захватывать специальные меню внутри Chrome вместо простого захвата названий вкладок и элементов на веб-странице.

Я также пробовал «pywinauto», но документация этой штуки действительно, действительно плоха. Я пытался использовать метод «connect», «hwndwrapper» и т.д. Но понять, какие параметры использовать, как они передаются и чего ожидать, а также как затем использовать полученные выходные данные (например, список PID или дескрипторов), серьезно затруднено. Мне бы хотелось, чтобы документация включала выходные данные, чтобы я действительно мог видеть, что я должен получить, чтобы я не заканчивал тем, что копался только для того, чтобы узнать, что все, что я тестировал, не дает того, что я ищу. Извините, если это звучит плаксиво, но я часами читал PDF и официальные документы и был сильно разочарован.

Я также попытался запустить chrome через командную строку, следуя этому документу для ведения журнала (http://www.chromium.org/for-testers/enable-logging), но это может быть только в Chromium, но я не могу найти созданный документ журнала, и когда я перенаправляю его вывод в файл, я не получаю ничего полезного.

Но да, кто-нибудь знает, как программно получить доступ к тексту «Chrome Task Manager» или чему-то еще, что обеспечит аналогичный вывод? Спасибо.

Комментарии:

1. в pywinauto нет руководства для начинающих, но как насчет руководства по началу работы ? В нем есть выходные данные и примеры кода. Это действительно так плохо?

2. Также есть один трюк для включения специальных возможностей в Chrome: github.com/pywinauto/pywinauto/wiki /…

3. Спасибо, Василий. В качестве точки входа всякий раз, когда я «Показываю / копирую дерево доступности» через «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

Комментарии:

1. Да, мне нужно было больше, чем просто PID, мне нужны были названия вкладок. Я пытался избежать использования расширения, чтобы его можно было использовать локально из-за пределов Chrome для закрытия вкладок, потому что, когда Chrome зависает, я все равно не могу получить доступ к расширениями, насколько я знаю. Спасибо за предложение. Я действительно ценю это.