2016-06-11 22 views
36

Uso Selenium WebDriver su Ubuntu Desktop 16.04 e non riesco ad aprire il browser. Ottengo il seguente errore dopo l'aggiornamento di Firefox (prima di questo, tutto ha funzionato):Impossibile aprire il browser con Selenium dopo l'aggiornamento di Firefox

Traceback (most recent call last): 
    File "test.py", line 6, in <module> 
    driver = webdriver.Firefox() 
    File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/webdriver.py", line 81, in __init__ 
    self.binary, timeout) 
    File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 51, in __init__ 
    self.binary.launch_browser(self.profile, timeout=timeout) 
    File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 68, in launch_browser 
    self._wait_until_connectable(timeout=timeout) 
    File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 98, in _wait_until_connectable 
    raise WebDriverException("The browser appears to have exited " 
selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details. 

risposta

11

FISSO: soluzione in questo momento è di declassare Firefox! esegui questo comando per ottenere un elenco delle versioni di Firefox disponibili.

apt-cache show firefox | grep Version 

Il mio risultato:

Version: 47.0+build3-0ubuntu0.16.04.1 
Version: 45.0.2+build1-0ubuntu1 

Installare:

sudo apt-get install firefox=45.0.2+build1-0ubuntu1 

Per mantenere questa versione e disabilitare gli aggiornamenti:

sudo apt-mark hold firefox 

Se volete unhold versione Firefox e permettono aggiornamenti:

sudo apt-mark unhold firefox 
sudo apt-get upgrade 
+0

Informazioni sulla versione 45, viene visualizzato l'errore: 'E: versione '45 .0.2 + build1-0ubuntu1 'per' firefox 'non è stato trovato alcun suggerimento? – silviomoreto

+0

Prova ad aggiungere il repository di Firefox prima: 'sudo add-apt-repository ppa: ubuntu-mozilla-daily/ppa' –

+0

Ho provato questo, riavviato Firefox dopo di allora quando eseguivo grep Version di nuovo mi diceva ancora che ero sul ultima versione (49) ma poi quando eseguo di nuovo la parte di installazione mi dice che 45 è già installato. Ho un conflitto ora? –

59

Come di Firefox versione 47.0 (che è venuto fuori un po 'di tempo a go), un nuovo driver deve essere utilizzato (creato da Mozilla invece di selenio) per la connessione a Firefox, a causa di un bug introduce in questa versione . A partire dalla versione 48.0 di Firefox il vecchio driver sarà completamente deprecato e solo Marionette può essere utilizzato, quindi è meglio passare ora. Vedi: Marionette Webdriver for Firefox

Scarica il driver (in OSX basta usare brew install geckodriver), rinominare il file eseguibile per wires.exe su Windows, o wires su sistemi * nix, e assicurarsi che l'eseguibile è presente nel percorso di sistema, quindi utilizzare questo conducente il vostro programma al posto del vecchio driver utilizzando la seguente:

Quando si utilizza un WebDriver locale:

Python:

firefox_capabilities = DesiredCapabilities.FIREFOX 
firefox_capabilities['marionette'] = True 

driver = webdriver.Firefox(capabilities=firefox_capabilities) 

Rubino:

driver = Selenium::WebDriver.for :firefox, marionette: true 

Javascript:

var capabilities = Capabilities.firefox(); 
capabilities.set('marionette', true); 

var driver = new webdriver.Builder().withCapabilities(capabilities).build(); 

Java:

DesiredCapabilities capabilities = DesiredCapabilities.firefox(); 
capabilities.setCapability("marionette", true); 
Webdriver driver = new FirefoxDriver(capabilities); 

C#:

var driver = new FirefoxDriver(new FirefoxOptions()); 

Quando si utilizza sel griglia enium:

Quando si utilizza una griglia di selenio, il driver deve essere presente nel percorso per tutte le macchine nella griglia.

Python:

firefox_capabilities = DesiredCapabilities.FIREFOX 
firefox_capabilities['marionette'] = True 
driver = webdriver.Firefox(capabilities=firefox_capabilities) 

Rubino:

caps = Selenium::WebDriver::Remote::Capabilities.firefox marionette: true 
driver = Selenium::WebDriver.for :firefox, desired_capabilities: caps 

Java:

DesiredCapabilities capabilities = DesiredCapabilities.firefox(); 
// Set Marionette on so the Grid will use this instead of normal FirefoxDriver 
capabilities.setCapability("marionette", true); 

WebDriver driver = new RemoteWebDriver(capabilities); 

C#:

DesiredCapabilities capabilities = DesiredCapabilities.Firefox(); 
// Set Marionette on so the Grid will use this instead of normal FirefoxDriver 
capabilities.SetCapability("marionette", true); 

var driver = new RemoteWebDriver(capabilities); 
+0

Una volta scaricato l'autista, dove dovremmo metterlo? –

+0

Metti dove vuoi, quindi imposta la posizione sul driver nel tuo percorso di sistema. – Mobrockers

+0

Secondo la documentazione di 'MarionetteDriver' nella versione Java di Selenium è deprecato (https: // github.com/SeleniumHQ/selenio/blob/master/java/client/src/org/openqa/selenio/firefox/MarionetteDriver.java). 'Dovrebbe essere invece usato' FirefoxDriver' e 'marionette' dovrebbe essere abilitato in' DesiredCapabilities' (come nell'esempio 'RemoteWebDriver'.) – RemcoW

4

Alcune persone hanno il problema che alcune caselle button s o select non possono essere selezionate nel modo marionette.

Un'alternativa sta usando più vecchia versione di Firefox:

È possibile scaricare il binario here e usarlo qui:

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

binary = FirefoxBinary('path/to/binary') 
driver = webdriver.Firefox(firefox_binary=binary) 
3

SOLUZIONE downgrade a 45 Versione:

firefox --version 
    Mozilla Firefox 47.0 
apt-get remove firefox 
wget https://ftp.mozilla.org/pub/firefox/releases/45.0/linux-x86_64/en-US/firefox-45.0.tar.bz2 
tar -xjf firefox-45.0.tar.bz2 
mv firefox /opt/firefox45 
ln -s /opt/firefox45/firefox /usr/bin/firefox 
firefox --version 
    Mozilla Firefox 45.0 
+0

Funziona anche se si aggiorna manualmente a 47.0.1 – Alex

1

1) Scarica geckodriver 0.6.2, decomprimere, rinominare a "fili", non "wires.exe" https://github.com/mozilla/geckodriver/releases

2) Aggiungi i fili posizione eseguibile per PATH (Lo metto nella mia cartella python C: Program Files \ Python ...) Seleziona Start, seleziona Pannello di controllo. fare doppio clic su Sistema e selezionare la scheda Avanzate. Fare clic su Variabili d'ambiente. ... Nella finestra Modifica variabile di sistema (o Nuova variabile di sistema), specificare il valore della variabile di ambiente PATH. ... (Usa ';' a percorsi separati cioè [C: Users \ Reuben; C: Program Files \ Python]

3) il downgrade a Firefox 45 https://ftp.mozilla.org/pub/firefox/releases/45.0.2/win64/en-US/

1

Non c'è bisogno di downgrade Firefox. Ho riscontrato problemi con la versione Windows e Firefox 49. Stavo usando la versione geckodrvier a 64 bit. L'ho cambiato in geckodrvier versione a 32 bit e ha risolto il problema. Ora il browser si sta aprendo correttamente senza alcun problema.

Problemi correlati