在以下示例代码段中获得一些非常奇怪的行为:
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()
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现在都尽可能保持最新,并且我仍然遇到这个问题-希望这个问题能够解决;看来,这与我编写的代码无关。