我正在尝试编写一个脚本,它将为我启动firefox,在新标签中打开谷歌,并能够进行搜索(例如,www.espn.com)。我目前正在尝试通过使用webbrowser模块实现这一点,但每次尝试从脚本启动Firefox时都会遇到错误。另外,firefox不是我的默认浏览器。
import webbrowser
webbrowser.get('firefox').open_new_tab('http://www.google.com')
每当我运行此操作时,我都会收到以下错误:
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
我不确定为什么脚本很难找到firefox.exe我也尝试在'firefox'
中指定c中firefox.exe的实际位置:但是我仍然得到同样的错误。
我确信我的代码中有一个小错误,我目前看不到,如果有人可以帮助指出我做错了什么我会非常感激!
答案 0 :(得分:6)
我的Windows机器上也安装了Firefox,并且出现了同样的错误。
如果在IDLE中运行以下两行:
import webbrowser
print webbrowser._browsers # or print(webbrowser._browsers) for Python 3.x
然后您将获得dict
可用的浏览器控制器,如source code中所述。在我的系统上打印:
{'windows-default': [<class 'webbrowser.WindowsDefault'>, None],
'c:\\program files\\internet explorer\\iexplore.exe': [None, <webbrowser.BackgroundBrowser object at 0x01BAF6B0>]
}
我认为值得注意的是,我在这台计算机上安装了IE,Chrome和Firefox,看起来只有“默认”和“Internet Explorer”。根据{{3}},密钥'firefox'
和'mozilla'
应该有效,但当然不会。
回到the documentation,在第539行到第563行,看起来Python只会注册浏览器,如果它的相应(硬编码)密钥(例如'firefox'
或'chrome'
)被认为是命令(使用第121行的_iscommand(cmd)
。
我关闭了IDLE,并将Firefox路径添加到%path%
,发现重新启动IDLE后,_iscommand('firefox')
返回True
,webbrowser.get('firefox)
返回<webbrowser.BackgroundBrowser object at 0x01BDF7F0>
。但是,webbrowser._iscommand("chrome")
仍会返回False
,而webbrowser.get("chrome")
仍然会引发上述异常。
我的结论是,除非webbrowser
模块更改为不依赖%path%
(至少在Windows上),否则您可能必须将Firefox路径添加到%path%
变量首先,或假设Firefox是默认浏览器。
答案 1 :(得分:2)
确保Firefox可执行文件位于路径上(Windows上的%PATH%
,Linux上的$PATH
)。