【问题标题】:WebDriverException: Message: quitWebDriverException:消息:退出
【发布时间】:2018-01-12 07:29:17
【问题描述】:

我有以下设置:

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

如何修复此异常错误?或者你建议我做什么?

谢谢

【问题讨论】:

  • webdriver.close()之后调用webdriver.quit()怎么样
  • @GaurangShah 发生同样的行为:我有异常并且进程没有被杀死。

标签: python linux selenium firefox geckodriver


【解决方案1】:

这对我很有效:

driver.close()

代替:

driver.quit()

我在 python3, selenium 3.4.3

【讨论】:

  • 是的,但是就像我说的那样,如果你这样做,geckodriver 进程仍然保持运行。这意味着端口保持打开状态。
【解决方案2】:

我不知道为什么 geckodriver 会这样做,但是异常捕获在我们的项目中可以完成这项工作:

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

浏览器和gecko驱动关闭,不报无用错误。

【讨论】:

    猜你喜欢
    • 2020-09-16
    • 2018-08-25
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 2019-09-06
    • 2019-05-07
    相关资源
    最近更新 更多