2017-08-04 59 views
2

我有以下设置:WebDriverException:消息:退出

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

我运行一个简单的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() 

但是,当我到达driver.quit(),我有以下的错误:

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 

如果我运行driver.close()代替driver.quit(),我都无辰恐怖消息,但另一方面,我发现geckodriver进程没有被杀死,这对我来说是一个问题。

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

我该如何解决这个异常错误?或者你建议我做什么?

感谢

+0

如何调用'webdriver.quit()'在'webdriver.close()' –

+0

@GaurangShah之后会出现相同的行为:我有异常并且进程没有被终止。 – davidlimpo

回答

-1

我不知道为什么geckodriver做到这一点,但异常俘获确实对我们的项目工作:

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

浏览器和壁虎驱动器被关闭,报告没有无用的错误。

1

这个工作很适合我:的

driver.close() 

代替:

driver.quit() 

我在python3,硒3.4.3

+0

是的,但正如我所说,如果你这样做,geckodriver进程仍然在运行。这意味着港口保持开放。 – davidlimpo