Python webbrowser.open() - 设置 new=0 在同一浏览器窗口打开无效

5 投票
2 回答
10638 浏览
提问于 2025-04-15 17:36

给定这段Python代码:

import webbrowser
webbrowser.open("http://slashdot.org",new=0)
webbrowser.open("http://cnn.com",new=0)

我本以为浏览器会打开,先加载第一个网站,然后在同一个窗口中加载第二个网站。然而,它却在一个新窗口(或者新标签页,具体取决于我用的浏览器)中打开。

我在Mac OSX上用Safari、Firefox和Chrome测试过,也在Ubuntu上用Firefox试过。我觉得new=0这个设置没有起作用。我是不是漏掉了什么?

谢谢!

2 个回答

0

我在连续调用 webbrowser.open() 之间加了一个延迟。这样每次打开的链接就会在新的标签页里,而不是在单独的窗口中(我用的是Windows 10电脑)。

import time
...
time.sleep(0.5)
6

请注意,文档中特别提到在语言方面不保证一定能做到,尽量避免这种情况:http://docs.python.org/library/webbrowser.html#webbrowser.open

大多数浏览器的设置默认会规定标签页的行为,并且不允许Python去更改这些设置。我以前在使用Firefox时遇到过这种情况,也在Chrome上试过你的例子,结果也是一样。

在Windows系统上,根本无法指定标签页的行为,正如我下面的评论所提到的。打开网址的代码会忽略new这个选项:

if sys.platform[:3] == "win":
    class WindowsDefault(BaseBrowser):
        def open(self, url, new=0, autoraise=True):
            try:
                os.startfile(url)

撰写回答