2017-01-22 4 views
0

Ich versuche Selen Webdriver zum ersten Mal. Ich habe ein Update auf Python 3.6 und ich habe auch Selen neu installiert. Der Versuch, eine einfache Webseite zu öffnen, ist bereits gescheitert. Hier ist der Code:Selenium Webdriver für Python Traceback Fehler

from selenium import webdriver 
driver = webdriver.Firefox() 
driver.get("http://www.python.org") 

Es ist sehr einfach, aber es funktioniert immer noch nicht. Es wirft ein paar Fehler auf, die jenseits meiner Fähigkeit zu interpretieren sind. Natürlich habe ich versucht, das Thema zu googeln und nichts schien mir zu helfen. Ich würde mich über jede Eingabe freuen. Dies sind die Fehler:

Traceback (most recent call last): 
    File "C:\Python36\lib\site-packages\selenium\webdriver\common\service.py", line 74, in start 
    stdout=self.log_file, stderr=self.log_file) 
    File "C:\Python36\lib\subprocess.py", line 707, in __init__restore_signals, start_new_session) 
    File "C:\Python36\lib\subprocess.py", line 990, in _execute_child 
startupinfo) 
FileNotFoundError: [WinError 2] The system cannot find the file specified 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "C:/Users/Will Pickard/PycharmProjects/Basics/Webdriver.py", line 3, in <module> 
    driver = webdriver.Firefox() 
    File "C:\Python36\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 140, in __init__ 
self.service.start() 
    File "C:\Python36\lib\site-packages\selenium\webdriver\common\service.py", line 81, in start 
os.path.basename(self.path), self.start_error_message) 
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x03801170>> 
Traceback (most recent call last): 
    File "C:\Python36\lib\site-packages\selenium\webdriver\common\service.py", line 173, in __del__ 
self.stop() 
    File "C:\Python36\lib\site-packages\selenium\webdriver\common\service.py", line 145, in stop 
    if self.process is None: 
AttributeError: 'Service' object has no attribute 'process' 

Antwort

1

Seit ein paar Versionen vor, Selenium Bereitstellung gestoppt native Unterstützung für Firefox, und jetzt verlässt sich auf mit einem externen Browser-Treiber zur Steuerung. Laden Sie die verfügbaren gecko webdriver und verwenden Sie folgenden Code:

from selenium import webdriver 
ff = "/path/to/geckodriver" 
driver = webdriver.Firefox(executable_path=ff) 
0

Sie müssten geckodriver installieren (für Gecko-Browser wie Firefox nach v47) oder chromedriver (für Chrome-Browser). Einmal installiert, sollten Sie in der Lage sein, Code mit der unten genannten Konfiguration auszuführen.

Sie können DesiredCapabilities als FIREFOX festlegen und auf Treiber-Binärdatei zeigen. Sie sollten den Treiber mit diesen Funktionen konfigurieren und die gewünschte Seite abrufen können.

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

firefox_capabilities = DesiredCapabilities.FIREFOX 
firefox_capabilities['marionette'] = True 
firefox_capabilities['binary'] = '/usr/local/bin/geckodriver' 

driver = webdriver.Firefox(capabilities=firefox_capabilities) 
driver.get("http://www.python.org") 

Alternativ, wenn Sie nicht sicher sind, dass neuere Version von Firefox verwendet wird, dann können Sie so etwas wie dies ohne Einstellung DesiredCapabilities tun:

from selenium import webdriver 
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 

driver = webdriver.Firefox(firefox_binary=FirefoxBinary('/usr/local/bin/geckodriver')) 
driver.get("http://www.python.org")