Wie erhalte ich die URL der aktiven Google Chrome-Registerkarte in Windows?

8

Wie kann mein Python-Skript die URL des derzeit aktiven Google Chrome-Tabs in Windows abrufen? Dies muss ohne Unterbrechung des Benutzers erfolgen, daher ist das Senden von Tastenanschlägen zum Kopieren / Einfügen keine Option.

    
Christian Davén 25.07.2012, 07:56
quelle

2 Antworten

14

Zuerst müssen Sie pywin32 herunterladen und installieren. Importieren Sie diese Module in Ihr Skript:

%Vor%

Wenn Google Chrome das derzeit aktive Fenster ist, rufen Sie das Fensterhandle zuerst durch:

%Vor%

(Andernfalls finden Sie das Google Chrome-Fensterhandle mithilfe von win32gui.FindWindow . Windows Detective ist praktisch, wenn man Klassennamen für Windows findet.)

Es scheint, dass die einzige Möglichkeit, die URL zu erhalten, darin besteht, den Text in "Omnibox" (Adressleiste) . Dies ist normalerweise die URL der Registerkarte, kann aber auch eine Teil-URL oder eine Suchzeichenfolge sein, die der Benutzer gerade eingibt.

Außerdem enthält die URL in der Omnibox das Präfix "http: //" nur, wenn der Benutzer sie explizit eingegeben hat (und noch nicht die Eingabetaste gedrückt hat), aber tatsächlich "https: //" oder "ftp: //" wenn diese Protokolle verwendet werden.

So finden wir das Omnibox-Child-Fenster im aktuellen Chrome-Fenster:

%Vor%

Dies wird natürlich nicht funktionieren, wenn das Google Chrome-Team seine Windows-Klassen umbenennen möchte.

Und dann erhalten wir den "Fenstertext" der Omnibox, der anscheinend nicht mit funktioniert win32gui.GetWindowText für mich. Gut, dass es eine Alternative gibt, die funktioniert:

%Vor%

Diese kleine Funktion sendet die WM_GETTEXT Nachricht an das Fenster und gibt den Fenstertext zurück (in diesem Fall der Text in der Omnibox).

Da gehen Sie!

    
Christian Davén 25.07.2012, 07:56
quelle
2

Die Antwort von Christian hat bei mir nicht funktioniert, da sich die interne Struktur von Chrome komplett geändert hat und Sie mit win32gui nicht mehr wirklich auf Elemente des Chrome-Fensters zugreifen können.

Der einzige mögliche Weg, den ich gefunden habe, war die UI-Automation-API, die diesen Python-Wrapper enthält mit einigen Anwendungsbeispielen

Führen Sie dies aus und wechseln Sie zum Chrome-Fenster, von dem Sie die Adresse abrufen möchten:

%Vor%     
proggeo 04.06.2017 09:06
quelle

Tags und Links