2017-03-22 3 views
1

Ich versuche eine Firefox/Selenium-Instanz als rudimentäre Diashow für Bilder zu verwenden. Die Idee ist, dass ich eine webdriver und driver.get() Dateien aus einem lokalen Verzeichnis öffnen werde.Selen Lokale Dateien öffnen

Wenn ich die folgenden ausführen, erhalte ich eine Fehlermeldung: selenium.common.exceptions.WebDriverException: Message: Tried to run command without establishing a connection

Meine Vermutung ist, dass Selen die nächste driver.get() Anfrage zu testen versucht, und ermöglicht es nicht, eine lokale, nicht mit Web-Verbindung, Verbindung gibt es eine Möglichkeit, dieses Verhalten zu umgehen? Mein Codebeispiel erscheint unten:

from selenium import webdriver 
import time 
from os import listdir 
from selenium.common.exceptions import WebDriverException 

driver = webdriver.Firefox() 

image_source = '/home/pi/Desktop/slideshow/photo_frames/daniel/images/' 

for file in listdir(image_source): 
    if file.endswith('jpg'): 
     file_name = image_source + file 
     driver.get(file_name) 
     time.sleep(5) 

Wie immer würde jede Hilfe sehr geschätzt werden.

UPDATE: Ich sollte hinzufügen, dass die gleiche grundlegende Skriptstruktur für Websites funktioniert - ich kann mehrere Websites ohne Fehler durchlaufen.

Antwort

0

Ich denke, Sie müssen nur file:// zum Dateinamen hinzufügen. Das funktioniert bei mir:

from selenium import webdriver 
import time 
from os import listdir 
from selenium.common.exceptions import WebDriverException 

def main(): 
    image_source = '/home/pi/Desktop/slideshow/photo_frames/daniel/images/' 

    driver = webdriver.Firefox() 

    try: 
     for file in listdir(image_source): 
      if file.endswith('jpg'): 
       file_name = 'file://' + image_source + file 
       driver.get(file_name) 
       time.sleep(5) 
    finally: 
     driver.quit() 

if __name__ == "__main__": 
    main() 
+0

Danke - das funktioniert. Ich möchte glauben, dass ich versucht habe, "file: //" am Anfang der Adresse hinzuzufügen, aber Ihr Beispiel funktioniert definitiv in der gewünschten Weise. – Daniel

+1

Das obige funktioniert nicht für local html. Der Code bleibt hängen, wenn ich dies mit lokalem HTML versuche. –