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.
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:
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!
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%Tags und Links python google-chrome winapi