2016-02-04 15 views
6

Impossibile avviare Chromedriver con Selenium.Il selenio non riesce ad avviare Chromedriver

from selenium import webdriver 

browser = webdriver.Chrome() 
browser.get('http://www.google.com') 

che non viene mai abrowser.get('http://www.google.com') ma fallisce con:

raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally 
    (Driver info: chromedriver=2.21.371461 (633e689b520b25f3e264a2ede6b74ccc23cb636a),platform=Linux 3.13.0-76-generic x86_64) 

Sono in Ubuntu 14.04 (64b) utilizzando Python 2.7.6 (virtualenv installazione) e selenium==2.50.1.

[email protected]:~$ which chromedriver 
/usr/local/bin/chromedriver 

[email protected]:~$ ll /usr/local/bin/chromedriver 
lrwxrwxrwx 1 root root 24 feb 4 22:13 /usr/local/bin/chromedriver -> /opt/google/chromedriver* 

EDIT

[email protected]:~$ google-chrome --version 
Google Chrome 48.0.2564.97 

declassato a Chromedriver 2.20:

wget http://chromedriver.storage.googleapis.com/2.20/chromedriver_linux64.zip 
unzip chromedriver_linux64.zip 
chmod 777 chromedriver 
sudo mv -f chromedriver /opt/google/chromedriver 

ma, purtroppo, ancora lo stesso risultato.

Qualche idea sul perché sta succedendo?

+0

Interessante, non è stato possibile riprodurlo su MacOSx, provato con Python 2.7 e 3.5. Quale versione di Chrome hai installato? – alecxe

+0

@alecxe modificato. – dm295

+0

Cosa succede se si esegue il downgrade a chromedriver 2.20? – alecxe

risposta

5

Ok, quindi la soluzione è un bit strano.

ho spostato il Chromedriver binario da /opt/google/ (dove Google Chrome si è installato) per /opt/, aggiornato il link simbolico e sta lavorando ora!

Rispetto alla domanda stessa, queste due righe di codice risolvere il problema:

sudo mv /opt/google/chromedriver /opt/ 
sudo ln -fs /opt/chromedriver /usr/local/bin/chromedriver 

e ora sono in grado di eseguire il seguente codice Python:

from selenium import webdriver 

browser = webdriver.Chrome() 
browser.get('http://www.google.com') 

Chrome inizia e tutto.

La seguente riga sulla old Selenium docs page mi ha ispirato per controllare ed eventualmente modificare la posizione Chromedriver:

Per i sistemi Linux, il ChromeDriver si aspetta/usr/bin/google-cromo per essere un link simbolico al binario Chrome effettivo.

0

Non so se questo è l'unico problema riscontrato ma chromedriver non piace "www.google.com", tuttavia è bene con "http://www.google.com"

+0

Copiato dalla domanda: Non arriva mai a 'browser.get ('www.google.com')' ... Ma altrimenti sì, buon punto – dm295