使用Python网络浏览器访问内部Chrome页面

时间:2019-06-10 00:54:44

标签: python python-webbrowser

我有一个程序,使用Python的webbrowser模块打开浏览器并自动导航到页面。我的代码基本上如下所示:

import webbrowser

chrome_path = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s"
url = "stackoverflow.com"

webbrowser.get(chrome_path).open(url)

在普通站点上运行时,它完全可以按预期运行。但是,当我改为用chrome://<page>格式(例如chrome://dinochrome://version)的内部Chrome站点代替url时,Chrome会按预期打开,但它不会在任何地方导航,而是而是停留在我的新标签页上。

为什么正常的url(甚至是诸如“ hello world”之类的字符串)能按预期运行,但仅适用于Chrome的页面无法正常运行?有什么办法可以解决这个问题?

(顺便说一下,这是在Windows 10和Python 3.6.8上)。

1 个答案:

答案 0 :(得分:1)

这确实行不通,但这不是webbrowser的错。

深入研究代码表明,webbrowser最终只是调用subprocess.Popen(args),其中args最终成为

'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe <url>'

如果您只是打开一个终端窗口并执行

"C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" chrome://dino

您将获得完全相同的行为:Chrome打开并停留在主页上,因此问题出在Chrome的代码中(错误或设计选择)。

它可以与selenium一起使用,因为我认为它使用的是黑色OS魔术(即进程间通信),因此它不依赖于Chrome的代码。它只是模仿用户。