2016-11-28 2 views
0

Ich habe Probleme mit dem folgenden Python-Skript auf dieser Linie mit:Selen Python WebDriver Fehler

driver = webdriver.Firefox(firefox_profile=profile, proxy=proxy). 

ich diese Störung erhalte:

Traceback (most recent call last): File "C:\Python27\example2.py", line 45, in driver = webdriver.Firefox(firefox_profile=profile, proxy=proxy) 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) WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

Ich habe für die Dokumentation sieht, was sein könnte verursacht das Problem, aber ich konnte nichts finden, das dieses Problem beheben würde. Irgendwelche Gedanken?

Gibt es auch eine Möglichkeit, IE anstelle von Firefox zu verwenden und wenn ja, welchen Code muss ich mit was wechseln?

Nach der vollständige Code ist:

import random, time, requests 
from selenium import webdriver 
from selenium.webdriver.common.proxy import * 
from bs4 import BeautifulSoup 

USER_AGENTS_FILE = './user_agents.txt' 
RUNNING = True 

def LoadUserAgents(uafile=USER_AGENTS_FILE) : 
uas = [] 
with open(uafile, 'rb') as uaf: 
    for ua in uaf.readlines(): 
     if ua: 
      uas.append(ua.strip()[1:-1-1]) 
random.shuffle(uas) 
return uas 

uas = LoadUserAgents() 

while RUNNING == True: 
address = [] 

response = requests.get('https://www.sslproxies.org') 
soup = BeautifulSoup (response.content, "html.parser") 

rows = soup.findAll ("tr") 

for row in rows: 
    if (len(row.findAll("td"))== 8): 
     address.append(row.contents[0].contents[0] + ':' + row.contents[1].contents[0]) 

random.shuffle(address) 

PROXY = random.choice(address) 
proxy = Proxy ({ 
    'proxyType': ProxyType.MANUAL, 
    'httpProxy': PROXY, 
    'ftpProxy': PROXY, 
    'sslProxy': PROXY, 
    'noProxy': '' 
    }) 

profile = webdriver.FirefoxProfile() 
profile.set_preference('general.useragent.override', random.choice(uas)) 
driver = webdriver.Firefox(firefox_profile=profile, proxy=proxy) 
driver.set_page_load_timeout(10) 
try: 
    driver.get("http://www.ipchicken.com/") 
    time.sleep(60) 
    driver.quit() 
except: 
    diver.quit() 
+0

Versuchen Sie, einen vollständigen Pfad der geckodriver ausführbaren Datei in Ihrer Umgebungsvariablen PATH hinzuzufügen. – Eddie

+0

Bitte stellen Sie sicher, dass geckodriver in PATH hinzugefügt wird. Und starte die IDE neu. – Prabhakar

+0

Haben Sie versucht, das einfachste Selen-Webdriver-Programm auszuführen? Funktioniert es gut? Es scheint mir, dass selbst einfacher Code in Ihrem Fall nicht funktioniert. Versuchen Sie, Anweisungen aus meiner Antwort hier zu folgen http://StackOverflow.com/Questions/40834238/how-to-properly-setup-windows7-to-use-selenium-with-firefox-tdd-with-python/40837887#40837887 –

Antwort

0

verschiedenen Browsern zu nutzen, müssen Sie nur den Treiber ausführbare Datei downloaden und es dann zu Ihrem Pfad hinzuzufügen. den Browser aufrufen ist ganz einfach:

from selenium import webdriver 
# ie 
ie_driver = webdriver.Ie() 
# chrome 
chrome_driver = webdriver.Chrome() 
# etc .. 

ich Chrome empfehlen würde, aber Selen unterstützt eine Vielzahl von Optionen

Gemeinsame Browser-Treiber (complete list):