使用Firefox的Mac上的webbrowser.get(“firefox”)“无法找到可运行的浏览器”

时间:2009-10-12 15:39:33

标签: python macos firefox browser

我认为我需要知道运行哪个神奇的命令行或OSA脚本程序来启动现有Firefox浏览器中的URL(如果正在运行),或者如果不运行则启动Firefox 。在Mac上。

我正在测试一个Python程序(Crunchy Python),它设置一个Web服务器,然后使用Firefox作为前端。它使用以下内容启动Web应用程序:

try:
    client = webbrowser.get("firefox")
    client.open(url)
    return
except:
    try:
        client = webbrowser.get()
        client.open(url)
        return
    except:
        print('Please open %s in Firefox.' % url)

我的Mac上安装了Safari作为默认设置,但我也安装并运行了Firefox。上面的代码在Safari中启动了新的URL(在localhost上)。 Crunchy在Safari中效果不佳。我想在Firefox中看到它,因为我有Firefox。在Python 2.5,2.6和2.7(来自版本控制)下,我得到了这个:

>>> import webbrowser
>>> webbrowser.get("firefox")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/webbrowser.py", line 46, in get
    raise Error("could not locate runnable browser")
webbrowser.Error: could not locate runnable browser

Firefox就在那里。我尝试使用webbrowser.get(“/ Applications / Firefox.app / Contents / MacOS / firefox%s”)启动一个新的Firefox实例,然后抱怨另一个Firefox实例已经在运行。

我真的希望webbrowser在Firefox的现有标签/窗口中打开URL,如果它已经在运行,或者在新的Firefox中尚未运行。

我查看了webbrowser.py,看起来MacOSX没有'firefox'支持。没关系,我可以补充一点。但我不知道如何以我想要的方式在Firefox中打开URL。

想法?现在,我可以强制Crunchy给我一个URL,我可以手动粘贴到Firefox中。

2 个答案:

答案 0 :(得分:2)

您应该使用Launch Services打开URL。您可以使用LaunchServices模块,Apple的open实用程序或我的launch实用程序(here)执行此操作:

open可能最简单:

% open -b org.mozilla.firefox http://www.stackoverflow.com/

(或者,当然,Python中与subprocess或类似的相同)应该做你想要的。

答案 1 :(得分:1)

Apple使用启动服务来查找应用程序。 open命令可以使用应用程序 - Apple developer man page for open

你想要的python命令是

client = webbrowser.get("open -a /Applications/Firefox.app %s")

根据Nicholas Riley的评论

如果Firefox位于应用程序列表中,那么您可以使用open -a Firefox.app%s