2013-08-26 13 views
5

Próbuję napisać skrypt, który uruchomi dla mnie firefox, otworzy google w nowej karcie i będzie mógł przeprowadzić wyszukiwanie (np. Www.espn.com) . Obecnie próbuję to osiągnąć za pomocą modułu przeglądarki, jednak za każdym razem, gdy próbuję uruchomić Firefoksa ze skryptu, napotkam błąd. Ponadto, Firefox nie jest moją domyślną przeglądarką.Uruchom Firefoksa z Pythonem 3.x

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

Ilekroć uruchomić to pojawia się następujący błąd:

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 

jestem pewien dlaczego skrypt usiłuje zlokalizować firefox.exe Próbowałem również określając w 'firefox' faktycznej lokalizacji firefox.exe w c: jednak nadal mam ten sam błąd.

Jestem pewien, że w moim kodzie występuje niewielki błąd, którego obecnie nie widzę, jeśli ktoś mógłby wskazać, co robię źle, byłbym bardzo wdzięczny!

+0

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

+0

Mimo że jest to niezły krok rozwiązywania problemów, nie będzie on faktycznie rejestrował Firefoksa ani żadnej konkretnej przeglądarki do użycia w 'przeglądarce internetowej'. – SimonT

+0

jakiego systemu operacyjnego używasz. –

Odpowiedz

6

Mam również zainstalowany Firefox na moim komputerze z systemem Windows i mam ten sam błąd.

Jeżeli uruchomić następujące dwie linie w gotowości:

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

Wtedy dostaniesz dict dostępnych kontrolerów przeglądarki, jak powiedział w source code. W moim systemie drukuje:

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

myślę, warto zauważyć, że mam IE, Chrome i Firefox na tym komputerze i wygląda na to tylko „Domyślne” i „Internet Explorer” są podane tutaj. Zgodnie z the documentation, klucze 'firefox' i 'mozilla' powinny działać, ale oczywiście nie. klucz (np 'firefox' lub 'chrome')

Wracając do source code, w linii 539 do 563, wygląda na to, Python będzie rejestrował tylko przeglądarki, jeśli jej odpowiada (zakodowane) jest uważany za polecenie (używając _iscommand(cmd) z linii 121 .

że zamknięty jałowych i dodano ścieżkę Firefoksa %path% i stwierdzono, że po ponownym IDLE, _iscommand('firefox') powraca True i webbrowser.get('firefox) zwraca <webbrowser.BackgroundBrowser object at 0x01BDF7F0>. Jednakże webbrowser._iscommand("chrome") nadal powraca False i webbrowser.get("chrome") nadal generuje wspomniany wyjątek.

Mój wniosek jest taki, że jeśli moduł webbrowser nie zmieni się na %path% (przynajmniej w systemie Windows), najprawdopodobniej najpierw trzeba będzie dodać ścieżkę Firefox do zmiennej %path% lub założyć, że Firefox jest domyślną przeglądarką .

+0

Po prostu uruchomiłem to samo, co zrobiłeś, aby uzyskać listę dostępnych przeglądarek, a także tylko dla IE.Nie pisałem w Pythonie od kilku lat, więc nie jestem pewien, gdzie mogę dodać ścieżkę firefox. – Valrok

+1

Zmienna "% ścieżka%" dotyczy całego systemu, a nie tylko Pythona. Możesz znaleźć przewodnik na http://www.computerhope.com/issues/ch000549.htm. – SimonT

2

Upewnij się, że plik wykonywalny Firefox znajduje się na ścieżce (%PATH% w systemie Windows, $PATH w systemie Linux).