2016-11-07 4 views
2

Ich habe Firefox und Selenium auf Centos installiert. Ich verwende Xvfb und pyvirtualdisplay, um den Browser zu öffnen.Berechtigung verweigert: 'Geckodriver.log' während Selen Webtreiber in Python

Wenn ich versuche, Selen WebDriver zu laufen, ich bin in der Lage eine neue Anzeige zu öffnen, aber sobald ich

browser = webdriver.Firefox()

ich den Fehler:

File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 134, in __init__ 
    self.service = Service(executable_path, log_path=log_path) 
    File "/usr/lib/python2.7/site-packages/selenium/webdriver/firefox/service.py", line 45, in __init__ 
    log_file = open(log_path, "a+") 
IOError: [Errno 13] Permission denied: 'geckodriver.log' 

Irgendwelche Hinweise Was läuft hier falsch?

EDIT: Nach der Erlaubnis Fehler zu überwinden, ich bin immer

Message: 'geckodriver' executable needs to be in PATH

+1

hat der Benutzer, der das Skript ausführt, die Berechtigung zum Erstellen einer Datei "geckodriver.log" im Pfad des Skripts? –

+0

Nun, Sie sollten natürlich nicht in diese Protokolldatei schreiben, da sie bereits von einem anderen Prozess auf Ihrem PC geöffnet wurde (erlauben Sie mir zu erraten, dass es Ihr eigenes Python-Programm ist, während Sie Selen verwenden). –

+0

@IvanChaer: Nun, ich bin als Super User angemeldet und ich habe Selenium auch mit "sudo" installiert. Ich führe die Befehle in der Python-Shell und die Skripte, die um Erlaubnis fragen, wie diejenigen von Webdriver. –

Antwort

2

Offenbar dies von einer Inkompatibilität zwischen Firefox und Ihren Selen kommen kann. Versuchen Sie pip install --upgrade selenium, und wenn der Fehler immer noch vorhanden ist, versuchen Sie downloading a different version of Firefox oder gecko driver.

ff_profile_dir = "/usr/local/selenium/webdriver/firefox" 
ff_profile = selenium.webdriver.FirefoxProfile(profile_directory=ff_profile_dir) 
driver = selenium.webdriver.Firefox(ff_profile) 

Oder nach this answer, könnten Sie laufen, auf Unix-Systemen auf einem:

In Bezug auf die Nachricht: auf dem Skript

'geckodriver' executable needs to be in PATH 

Sie den Pfad des Fahrers einstellen könnte schlag-kompatible Schale:

export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step 

On Windows you will need to update the Path system variable to add the full directory path to the executable geckodriver manually or command line(don't forget to restart your system after adding executable geckodriver into system PATH to take effect). The principle is the same as on Unix.

+0

Danke. Ich habe geckodriver in PATH wie erwähnt hinzugefügt. Danach, wie ich 'browser = webdriver.Firefox()', bekomme ich 'selen.common.exceptions.WebDriverException: Nachricht: Verbindung abgelehnt' –

+0

Geckodriver nach/usr/local/bin bewegt hat den Trick. Danke vielmals! –

1

Ich hatte das gleiche Problem. Ich habe versucht, Ivan Chaers Antwort zu verwenden, aber es hat nicht funktioniert. Ich habe eine ganze Reihe anderer Dinge ausprobiert, bis ich schließlich auf eine funktionierende Lösung stieß. Die ganze Zeit, in der ich versucht hatte, Selenium zu betreiben, hatte ich die interaktive Shell benutzt. Als ich versuchte, den Code in ein Skript zu schreiben und ihn dann auszuführen, funktionierte alles einwandfrei.

Ich bemerkte dann, dass eine Datei namens "geckodriver.log" im selben Verzeichnis wie das Skript erstellt wurde. Das hat mir eine Idee gegeben. Ich habe eine "geckodriver.log" -Datei in C: \ Programme \ Python36 erstellt und dann mit Selenium mit Firefox keine Fehler mehr geworfen.

0

Die folgende Lösung funktionierte für mich. In meinem Fall habe ich mein Python-Skript aus der Windows-Anwendung Notepad++ gestartet. Meine geckodriver.exe war in der PATH und zufällig in meinem Ordner C:\Python 27 befindet. Ein vollständiger Pfad zu Firefox wurde ebenfalls bereitgestellt. Selenium, Geckodriver und Firefox waren alle auf den neuesten Versionen.

es sich herausstellen, dass die geckodriver.log Datei hier erstellt wurde:

C:\Program Files (x86)\Notepad++\geckodriver.log 

fand ich dies durch Notepad++ als Administrator ausgeführt wird. Es war dann in der Lage, die Datei dort zu erstellen, wo sie wollte. Ich habe dann die Datei gefunden und die Dateiberechtigungen so geändert, dass sie für das normale Benutzerkonto unter Windows vollständig zugänglich sind (es wurde festgelegt, dass es schreibgeschützt ist).

Danach konnte ich Notepad ++ normal laufen und der Fehler war weg.