2013-08-26 17 views
5

Ich versuche, ein Skript zu schreiben, das Firefox für mich startet, öffnen Sie Google in einem neuen Tab, und in der Lage sein, eine Suche zu tun (zum Beispiel www.espn.com) . Momentan versuche ich dies mit dem Webbrowser-Modul zu erreichen, allerdings bekomme ich jedes Mal einen Fehler, wenn ich versuche, Firefox aus dem Skript zu starten. Außerdem ist Firefox nicht mein Standardbrowser.Starten Sie Firefox mit Python 3.x

import webbrowser 
webbrowser.get('firefox').open_new_tab('http://www.google.com') 

Jedes Mal, wenn ich diese laufen bekomme ich folgende Fehlermeldung:

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 

Ich bin mir nicht sicher, warum das Skript die firefox.exe zu lokalisieren kämpft ich auch haben Angabe versucht in 'firefox' die tatsächliche Lage von firefox.exe in c: aber ich bekomme immer noch den gleichen Fehler.

Ich bin sicher, dass es einen kleinen Fehler in meinem Code gibt, den ich derzeit nicht sehen kann, wenn jemand helfen könnte, aufzuzeigen, was ich falsch mache, würde ich es sehr schätzen!

+0

http://StackOverflow.com/a/4520261/594589 – dm03514

+0

Während dies ein guter Schritt zur Fehlerbehebung ist, wird Firefox oder ein bestimmter Browser für die Verwendung in 'webbrowser' nicht registriert. – SimonT

+0

Welches Betriebssystem verwenden Sie? –

Antwort

6

Ich habe Firefox auf meinem Windows-Rechner installiert und habe den gleichen Fehler.

Wenn Sie die folgenden zwei Zeilen in IDLE laufen:

import webbrowser 
print webbrowser._browsers # or print(webbrowser._browsers) for Python 3.x 

Dann werden Sie eine dict der verfügbaren Browser-Controller erhalten, wie sie in der source code sagte. Auf meinem System druckt:

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

Ich denke, es ist erwähnenswert, dass ich IE, Chrome und Firefox auf diesem Computer und es sieht aus wie nur „Standard“ und „Internet Explorer“ gibt es hier. Laut sollten die Tasten und 'mozilla' funktionieren, aber natürlich nicht.

Gehen wir zurück zum source code, in Zeile 539 bis 563, es sieht aus wie Python wird nur ein Browser registrieren, wenn seine entsprechende (hart codiert) Schlüssel (zB 'firefox' oder 'chrome') ist ein Befehls betrachtet (unter Verwendung von _iscommand(cmd) aus Leitung 121 .

I geschlossen IDLE und zu %path% und fand den Firefox Pfad dass IDLE nach dem Neustart, _iscommand('firefox') kehrt True und webbrowser.get('firefox) eine <webbrowser.BackgroundBrowser object at 0x01BDF7F0> zurück. Allerdings webbrowser._iscommand("chrome")False und webbrowser.get("chrome") noch gibt immer noch die oben genannte Ausnahme auslöst.

Meine Schlussfolgerung ist, dass, wenn das webbrowser Modul ändert sich nicht auf %path% (zumindest unter Windows), müssen Sie wahrscheinlich den Firefox-Pfad zuerst die %path% Variable hinzufügen, oder die Annahme, dass Firefox der Standard-Browser ist .

+0

Ich habe eigentlich nur das selbe ausgeführt wie du, um eine Liste der verfügbaren Browser zu bekommen und auch nur für IE.Ich habe in Python seit einigen Jahren nicht mehr codiert, daher bin ich mir nicht ganz sicher, wo ich den Firefox-Pfad hinzufügen kann. – Valrok

+1

Die Variable% path% bezieht sich auf das gesamte System, nicht nur auf Python. Sie finden eine Anleitung unter http://www.computerhope.com/issues/ch000549.htm. – SimonT

2

Stellen Sie sicher, dass sich die ausführbare Datei von Firefox auf dem Pfad befindet (%PATH% unter Windows, $PATH unter Linux).