python - 如何使用 python 中的 webbrowser 模块打开新标签页?

标签 python google-chrome

我目前正在尝试使用 python 中的 webbrowser 模块打开我的 chrome 默认新标签页。我已经让它可以打开随机 url,但是,当我尝试将 chrome://newtab 作为 url 时,我只收到一条消息,说“没有安装任何应用程序来打开这种类型的链接”。

这是相关的代码(不多):

import webbrowser
webbrowser.open_new_tab("chrome://newtab")

是的,chrome 是我的默认浏览器。感谢您的帮助!

最佳答案

请注意 documentation指出:

Note that on some platforms, trying to open a filename using this function, may work and start the operating system’s associated program. However, this is neither supported nor portable.

我已经有一段时间没看过这个了,但我记得至少在某些系统上,它的工作方式是将给定的 URI 传递给系统特定的内置命令,然后打开对于传入的任何类型的 URI,系统默认的 URI。换句话说,使用给定文件类型的默认应用程序。 URI 是否指向本地文件并不重要。因此,URI http://examplce.comn/somefile.pdf 将在系统默认 PDF 查看器(可能不是浏览器)上打开 PDF 文件。如文档所述,由于底层实现,这是偶然的。

但是,在不同的操作系统中,不存在这样的系统特定命令,所有的 URI 都将在网络浏览器中打开。

你没有提到你正在使用哪个操作系统(我忘记了哪个操作系统以哪种方式工作),但我怀疑你正在使用第一种类型的操作系统。您可能(再次取决于您拥有的系统)能够通过指定使用特定浏览器来覆盖默认行为。

您可以尝试将环境变量 BROWSER 设置为 os.pathsep - 按顺序尝试的分隔浏览器列表。检查 os.pathsep 的值(import os; print os.pathsep)以查看您的系统使用了哪个字符(通常是 ':' 对于 POSIX 或 ';' 对于 Windows),然后使用该字符分隔列表中的项目。当然,您可能只需要将一项分配给列表(chrome),在这种情况下您根本不需要使用分隔符。像这样(一定要为您的系统使用正确的路径):

SET BROWSER="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

或者,您可以尝试使用 webrowser.get()以编程方式选择您的浏览器。但是,直到 Python 3.3 才添加对 Chrome 的支持。 .如果您使用的是 Python 3.3+,请尝试:

import webbrowser
chrome = webbrowser.get('google-chrome') # or webbrowser.get('chrome')
chrome.open_new_tab('chrome://newtab')

注意:以上内容未经测试。我不知道您拥有哪个系统,因此无法复制您的特定设置。 YMMV.


更新:

据我所知,您现在使用的是 Python 3.3 之前的 Windows 机器,以下内容可能会有所帮助。您还可以注册一个浏览器,以便 Python 知道它:

pth = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
webbrowser.register('chrome', None, webbrowser.BackgroundBrowser(pth))
chrome = webbrowser.get('chrome')
chrome.open_new_tab('chrome://newtab')

关于python - 如何使用 python 中的 webbrowser 模块打开新标签页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29102961/

相关文章:

python - 同步访问 python 对象

html - "Free▼"在 Chrome 中被拆分成两个词

javascript - 在不同浏览器上测试从对象中删除值时遇到的问题

jquery - 从控制台使用 jQuery 获取所有 anchor 元素?

javascript - 如何清除Google Chrome浏览器地址栏?

python - 高效的字节浮点乘法

python - 将多张卡片发布到时间线并附加视频时超出了截止日期

python - 如何从文本文件中的 jpeg 图像文件列表中打开图像 - 变量形成

python - 如何在文件中以表格形式写入数据

google-chrome - 增加谷歌浏览器的超时限制