【问题标题】:Get Active Chrome URL in Python在 Python 中获取活动的 Chrome URL
【发布时间】:2020-01-04 23:34:31
【问题描述】:

我试图使用 uiautomation 的 python 包装器来获取 chrome 窗口的活动 url。但是,此脚本仅获取某些网站(例如 youtube 或 google)而不获取其他网站(stackoverflow、reddit、github 等)

import win32gui as win
import time
import uiautomation as auto

while True:
    window = win.GetForegroundWindow()
    win_name = win.GetWindowText(window)
    if "Google Chrome" in win_name:
        chromeControl = auto.ControlFromHandle(window)
        edit = chromeControl.EditControl()
        print('https://' + edit.GetValuePattern().Value)

我几乎尝试了所有有关此问题的帖子,但均无济于事。显然 chrome 已经更改了它们的窗口类名称等。任何帮助将不胜感激。

【问题讨论】:

  • 您的整个程序打算做什么?可能还有另一个更适合该任务的库。
  • 我想获取活动应用程序,但如果应用程序是 chrome:获取 url 或基础网站。
  • 啊,那没关系。
  • 这能回答你的问题吗? Get Chrome tab URL in Python

标签: python google-chrome ui-automation win32gui


【解决方案1】:

这是一个简单的方法:

import uiautomation as auto


control = auto.GetFocusedControl()
controlList = []
while control:
    controlList.insert(0, control)
    control = control.GetParentControl()
    
control = controlList[0 if len(controlList) == 1 else 1]
    
address_control = auto.FindControl(control, lambda c, d: 
                                            isinstance(c, auto.EditControl))

print('Current URL:')
print(address_control.GetValuePattern().Value)

您还可以为 OmniBox 设置一些新值:

address_control.GetValuePattern().SetValue('http://some_url')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2019-03-11
    • 2011-08-07
    • 1970-01-01
    • 2015-03-23
    • 2018-08-10
    相关资源
    最近更新 更多