异常会阻止Webdriver正确响应

时间:2019-01-07 06:16:58

标签: python selenium

在以下示例代码段中获得一些非常奇怪的行为:

from selenium import webdriver

try:
    driver = webdriver.Firefox(executable_path='./bin/geckodriver.exe')
    variable = input("Enter something or Ctrl+C: ")
    driver.get(variable)
except:
    pass
finally:
    driver.close()
    driver.quit()
  • 如果我输入有效的URL,则网络驱动程序将获取页面,然后关闭浏览器实例。
  • 如果我输入了无效的URL,则会抛出selenium.common.exceptions.InvalidArgumentException,但是代码会继续执行,并且浏览器仍处于关闭状态
  • 如果我在Ctrl + C语句中按SIGINT发送input,请执行以下操作:
    • 主要方法中的异常命中pass并进行到最后
      • 仅调用driver.quit()会返回None,并且Firefox实例保持打开状态
      • 调用driver.close()会导致urllib3.exceptions.MaxRetryError: ... Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it',并且该程序会在Firefox保持打开状态下终止

这是我能想到的最简单的示例,但是当WebDriverWait中断或看似无关的代码引发Exception时,我正在编写的某些代码中得到相同的行为。 webdriver实例突然没有响应。这是一个问题,因为它使无头的Firefox实例保持打开状态。使用Selenium时这是一个已知问题,还是我在做我不应该做的事情?

使用的Firefox版本是Quantum v64,而Geckodriver是v0.23.0;两者都应该是最新的。

编辑:使用pdb单步执行代码,创建驱动程序实例并打开firefox,提示输入,然后按Ctrl+C,{{1 }}已执行 ,代码先移至driver.get(variable),然后移至except,然后我收到finally 。如果我将MaxRetryError行替换为input(..),则浏览器将按预期关闭;我不确定为什么程序会对此行为做出响应raise KeyboardInterrupt()

编辑(2):报告为Selenium Github Repo上的错误。建议使用Python版本差异,但我在3.7.2(最新)下重试,但仍表现出相同的行为-Selenium / Firefox / Python / Geckodriver现在都尽可能保持最新,并且我仍然遇到这个问题-希望这个问题能够解决;看来,这与我编写的代码无关。

0 个答案:

没有答案