2016-11-06 2 views
1

Ich habe folgende Selenium Webdriver Skript mit Python. Aber ich habe Fehler:Firefox-Treiber kann nicht starten für Selenium 3.0.1 mit FF49 und Python

from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 

caps = DesiredCapabilities.FIREFOX 
caps["marionette"] = True 
driver = webdriver.Firefox(capabilities=caps) 

driver.get("http://www.mahsumakbas.net") 

print driver.title 

driver.close() 

Fehler ist:

Traceback (most recent call last): File "C:\Mahsum\DevelopmentWorkSpace\Eclipse\Java\selenium_proj\src\hello.py", line 6, in driver = webdriver.Firefox(capabilities=caps) File "C:\Python27\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 135, in init self.service.start() File "C:\Python27\lib\site-packages\selenium\webdriver\common\service.py", line 71, in start os.path.basename(self.path), self.start_error_message) selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

Exception AttributeError: "'Service' object has no attribute 'process'" in > ignored

Selen WebDriver Version ist: 3.0.1
Firefox: 49.0.2
geckodriver: v0.11.1- win64

Ich Geckodriver Pfad zu Windows PATH Var hinzugefügt iable.

wo ist das Problem?

+2

hinzufügen Sieht ein Duplikat von [dieser] zu sein (http://stackoverflow.com/questions/40208051/selenium-using-python-geckodriver-executable-needs-to -be-in-Pfad). – MikeJRamsey56

+0

Haben Sie versucht, den Computer neu zu starten und das Skript auszuführen? –

+0

Sie können versuchen, den Pfad self.path in der Zeile "os.path.basename (self.path)" in service.py zu drucken und zu überprüfen, wo der Python nach der ausführbaren Datei (geckodriver.exe) sucht? –

Antwort

2

Sie können die 'geckodriver' .exe in den Basispfad von Python einfügen und es wird funktionieren.

Alternativ müssen Sie bei der Initialisierung den Pfad zu geckodriver deklarieren, wenn Sie einen sauberen Python-Ordner bevorzugen. Führen Sie es bei jedem Ausführen Ihres Skripts oder mit PATH aus, wie Sie es bereits getan haben. Wie Naveen vorschlägt, ist ein Neustart erforderlich, bevor ein PATH korrekt gespeichert wird. Sie könnten auch versuchen, diese in der Windows-Befehlszeile auszuführen:

setx path "%path%;c:\path\to\geckodriver-folder" 
+0

Ziehen Sie Ihre Python-Installation nicht durch, indem Sie geckodriver im Basisverzeichnis speichern. –

0

endgültiger Code ist wie folgen und Arbeiten:

binary = FirefoxBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe") 
driver = webdriver.Firefox(firefox_binary=binary) 

set path of geckodriver.exe ohne Dateinamen (nur Ordner, dass es platziert) zu PATH vairable.

dieses Mal, ich habe ein anderes Problem:

driver.close() schließt nicht firefox.
wenn Veränderungen als driver.quit() es schließt aber auf der Konsole erscheinen folgende Zeile:

'NoneType' object has no attribute 'path'

gibt es keine Anzeige, es zu zeigen warnt oder Fehler. Einfach selbst ausrichten.

+0

Könnten Sie bitte Ihren Code teilen? Es scheint, dass Sie ein Objekt ohne Wert haben, d. H. 'NoneType'. Auch, wenn meine Antwort Ihnen geholfen hat, dann markieren Sie es als Akzeptiert und erstellen Sie eine neue Frage für Ihr neues Problem. So funktioniert Stack – MSJ

+2

Versuchen Sie, Firefox-Profil hinzuzufügen profile = webdriver.FirefoxProfile() webdriver.Firefox (capabilities = caps, firefox_profile = profile) – patricmj

+0

Du solltest deinen Kommentar als Antwort schreiben, @patricmj, da es auf diese Weise besser sichtbar wäre - und du würdest Ansehenspunkte bekommen, weil es die tatsächliche Lösung ist. – boardrider

0

Try firefox Profil

profile = webdriver.FirefoxProfile() 
webdriver.Firefox(capabilities=caps,firefox_profile=profile) 
Verwandte Themen