2017-08-04 1 views
2

Je la configuration suivante:WebDriverException: Message: quitter

Linux 
Python 2.7.6 
Mozilla Firefox 52.2.0 
geckodriver 0.18.0 
selenium Version: 3.4.3 

Je suis en cours d'exécution d'un simple script python:

import time 
from selenium import webdriver 

profile = webdriver.FirefoxProfile() 
profile.set_preference('browser.download.folderList', 2) # custom location 
profile.set_preference('browser.download.manager.showWhenStarting', False) 
profile.set_preference('browser.download.dir', '/tmp') 
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'image/png') 

driver = webdriver.Firefox(firefox_profile=profile) 
driver.get("file:////home/temp-plot.html") 
export_button = driver.find_element_by_xpath("//a[@data-title='Download plot as a png']") 
export_button.click() 
time.sleep(10) 
driver.quit() 

Mais quand je tends la driver.quit(), je l'erreur suivante :

Traceback (most recent call last): 
    File "conversor.py", line 17, in <module> 
    driver.quit() 
    File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 181, in quit 
    RemoteWebDriver.quit(self) 
    File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 551, in quit 
    self.execute(Command.QUIT) 
    File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute 
    self.error_handler.check_response(response) 
    File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: quit 

Si je lance driver.close() au lieu de driver.quit(), je ne e message d'erreur, mais d'autre part, je trouve que le processus geckodriver n'est pas tué, ce qui est un problème pour moi.

root  14572  1 0 11:56 pts/0 00:00:00 geckodriver --port 39203 

Comment réparer cette erreur d'exception? Ou que me suggérez-vous de faire?

Merci

+0

3.4.3 Que diriez-vous d'appeler 'webdriver.quit()' après 'webdriver.close()' –

+0

@GaurangShah le même comportement se produit: j'ai l'exception et le processus n'est pas tué. – davidlimpo

Répondre

-1

Je ne sais pas pourquoi geckodriver fait cela, mais prises d'exception fait le travail sur notre projet:

try: 
    self.driver.quit() 
except WebDriverException: 
    pass 

navigateur et pilote de gecko sont fermés et aucune erreur inutiles sont signalées.

1

Cela a bien fonctionné pour moi:

driver.close() 

au lieu de:

driver.quit() 

Je suis sur python3, le sélénium

+0

Oui, mais comme je l'ai dit, si vous faites cela, le processus geckodriver reste toujours en cours d'exécution. Ce qui signifie que le port reste ouvert. – davidlimpo