如何防止chromedriver.exe关闭中断信号上的套接字连接?

时间:2018-07-25 08:52:17

标签: python selenium selenium-chromedriver interrupt-handling

我在python脚本中使用硒与网页进行交互。的 脚本在Cygwin上运行。脚本看起来像这样:

browser = webdriver.Chrome()

def signal_handler(signum, frame):
    browser.quit()
    #close other things
    sys.exit()

def browser_function():
    #do something with browser

if __name__ == "__main__":
    signal.signal(signal.SIGTERM, signal_handler)
    signal.signal(signal.SIGINT, signal_handler)
    browser_function()
    browser.quit()

a)正常出口和b)中断出口在这里发生了两种不同的情况。在正常退出时,browser.quit()可以正常工作,并关闭驱动程序(chromedriver.exe)和浏览器(chrome.exe)进程。但是,当它通过signal_handler()退出时,仅驱动程序进程被关闭。我可以看到许多在cmd中运行的“ chrome.exe”进程。

如果我在browser.close()内使用signal_handler()(应该只关闭Chrome浏览器窗口),则会引发socket.error异常,说明socket.error: [Errno 104] Connection reset by peer。因此,我假设Ctrl + C信号将重置与浏览器的套接字连接。

我想要的是防止这种连接重置的发生,以便我可以干净地退出浏览器。

我不想在cmd中使用taskkill /im "chrome.exe",因为它还会杀死用户打开的正在运行的浏览器会话。怎么做,
1)防止中断信号关闭套接字连接?或者,
2)查找由chromedriver(而不是用户)打开的“ chrome.exe”进程的pid?

0 个答案:

没有答案