【问题标题】:python selenium driver.quit() inside except block除了块之外的python selenium driver.quit()
【发布时间】:2016-06-04 14:37:39
【问题描述】:

我的应用程序是这样的,如果它抛出异常,我希望驱动程序关闭,我尝试了以下代码,但它抛出异常。

我的代码: 其中 url 是我要打开的 url

driver=webdriver.Firefox()
try:
   driver.get(url)

except:

   driver.quit()

它正在关闭驱动程序但抛出异常。我应该如何解决这个问题?

这是我的堆栈跟踪

raceback (most recent call last):
  File "/folderpath", line 47, in <module>
    driver.close()
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 505, in close
    self.execute(Command.CLOSE)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 231, in execute
    response = self.command_executor.execute(driver_command, params)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/remote_connection.py", line 395, in execute
    return self._request(command_info[0], url, body=data)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/remote_connection.py", line 425, in _request
    self._conn.request(method, parsed_url.path, body, headers)
  File "/usr/lib/python2.7/httplib.py", line 973, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.7/httplib.py", line 1007, in _send_request
    self.endheaders(body)
  File "/usr/lib/python2.7/httplib.py", line 969, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python2.7/httplib.py", line 829, in _send_output
    self.send(msg)
  File "/usr/lib/python2.7/httplib.py", line 791, in send
    self.connect()
  File "/usr/lib/python2.7/httplib.py", line 772, in connect
    self.timeout, self.source_address)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
socket.error: [Errno 111] Connection refused

【问题讨论】:

  • 向我们展示您的堆栈跟踪

标签: python exception selenium-webdriver exception-handling


【解决方案1】:

经过多次请求webdriver 终于更新为实现context manager interface。自 2018 年 5 月起,您可以:

    with webdriver.Firefox() as driver:
        driver.get("https://www.selenium.dev")
        raise WebDriverException

上下文管理器将负责优雅地退出和清理。如果您遇到错误,请通过运行 pip install -U selenium 确保您拥有最新的 selenium 模块。

对应的拉取请求:https://github.com/SeleniumHQ/selenium/pull/5919

【讨论】:

    【解决方案2】:

    您可以尝试改用driver.close()。在下面的示例中,没有显示堆栈跟踪,异常被捕获并且驱动程序/firefox 窗口正常关闭。

    driver = webdriver.Firefox()
    try:
        raise WebDriverException
    except WebDriverException:
        driver.close()
    

    甚至更好的做法 - 在 finally 块中关闭您的驱动程序:

    driver = webdriver.Firefox()
    try:
        raise WebDriverException
    except WebDriverException:
        'Handle your exception here'
    finally:
        driver.close()
    

    【讨论】:

    猜你喜欢
    • 2015-08-31
    • 2020-08-17
    • 1970-01-01
    • 2018-01-24
    • 2016-02-22
    • 1970-01-01
    • 2017-03-31
    • 2022-01-24
    • 2012-12-07
    相关资源
    最近更新 更多