使用Python 3.x启动Firefox

Val*_*rok 5 python scripting firefox python-3.x

我正在尝试编写一个脚本,它将为我启动firefox,在新标签中打开谷歌,并能够进行搜索(例如,www.espn.com).我目前正在尝试通过使用webbrowser模块实现这一点,但每次尝试从脚本启动Firefox时都会遇到错误.另外,firefox不是我的默认浏览器.

import webbrowser
webbrowser.get('firefox').open_new_tab('http://www.google.com')
Run Code Online (Sandbox Code Playgroud)

每当我运行这个时,我都会收到以下错误:

Traceback (most recent call last):
  File "C:/Python33/test Bing.py", line 6, in <module>
    webbrowser.get('firefox').open_new_tab('http://www.google.com')
  File "C:\Python33\lib\webbrowser.py", line 53, in get
    raise Error("could not locate runnable browser")
webbrowser.Error: could not locate runnable browser
Run Code Online (Sandbox Code Playgroud)

我不确定为什么脚本正在努力找到firefox.exe我也尝试'firefox'在c中的firefox.exe的实际位置中指定:但是我仍然得到相同的错误.

我确信我的代码中有一个小错误,我目前看不到,如果有人可以帮助指出我做错了什么我会非常感激!

Sim*_*onT 6

我也在我的Windows机器上安装了Firefox,并且有相同的错误.

如果在IDLE中运行以下两行:

import webbrowser
print webbrowser._browsers # or print(webbrowser._browsers) for Python 3.x
Run Code Online (Sandbox Code Playgroud)

然后你会得到一个dict可用的浏览器控制器,如源代码中所述.在我的系统上打印:

{'windows-default': [<class 'webbrowser.WindowsDefault'>, None], 
    'c:\\program files\\internet explorer\\iexplore.exe': [None, <webbrowser.BackgroundBrowser object at 0x01BAF6B0>]
}
Run Code Online (Sandbox Code Playgroud)

我认为值得注意的是,我在这台计算机上安装了IE,Chrome和Firefox,看起来只有"默认"和"Internet Explorer".根据文档,密钥'firefox''mozilla'应该工作,但当然他们没有.

回到源代码,在第539行到第563行中,如果相应的(硬编码的)密钥(例如'firefox'或者'chrome')被认为是命令(使用_iscommand(cmd)第121行),Python看起来只会注册浏览器.

我关闭了IDLE并添加了Firefox路径%path%,发现在重启IDLE后,_iscommand('firefox')返回Truewebbrowser.get('firefox)返回一个<webbrowser.BackgroundBrowser object at 0x01BDF7F0>.但是,webbrowser._iscommand("chrome")仍然返回Falsewebbrowser.get("chrome")仍然抛出上述异常.

我的结论是,除非webbrowser模块更改为不依赖%path%(至少在Windows上),否则您可能必须%path%先将Firefox路径添加到变量中,或者假设Firefox是默认浏览器.