Python Selenium 中的 driver 在处理了 KeyboardInterrupt 异常后无法退出

2017-08-26 20:03:57 +08:00
 cdwyd

代码如下,加上异常处理后就不能退出了,没有的话可以正常退出。网上没搜到相关的解释

import time
from selenium import webdriver

driver = webdriver.Firefox()

while True:
    try:
        print(time.time())
        time.sleep(1)
    except KeyboardInterrupt as e:
        break

print('Stopping...')
driver.quit()
print('Stopped!')
2626 次点击
所在节点    问与答
15 条回复
cdwyd
2017-08-26 20:38:16 +08:00
大佬们都去周末度假了?还是因为节点发的不对?
arnofeng
2017-08-26 20:40:14 +08:00
你代码逻辑写错了 逃
jugelizi
2017-08-26 21:00:32 +08:00
haha
这代码谁教你写的
jugelizi
2017-08-26 21:00:43 +08:00
while True:
cdwyd
2017-08-26 21:10:55 +08:00
@arnofeng
@jugelizi
具体说下嘛
aihimmel
2017-08-26 21:26:08 +08:00
hhhhhh
算了吧,谁都有菜鸟的时候,我说两句吧
try-except 处理的 try 语句中的异常,而不是全局异常.
看一下这个吧 http://www.runoob.com/python/python-exceptions.html

简单的说就是
try:
#do something here
pass()
except:
#do something here if error happened in "try"
pass()
cdwyd
2017-08-26 21:27:52 +08:00
@aihimmel
多谢,我去具体看看
ipwx
2017-08-26 21:29:36 +08:00
楼上瞎喷什么…… 我没用过 selenium,但是这东西去掉 selenium 语义很正确啊?
aihimmel
2017-08-26 21:34:05 +08:00
@ipwx try 里的部分永远不会异常
cdwyd
2017-08-26 21:52:40 +08:00
@aihimmel
KeyboardInterrupt 异常是可以捕获的,不过重点不在这里,而是为什么,加了这个异常处理后,driver 不能退出了
cdwyd
2017-08-26 21:57:23 +08:00
@arnofeng
@jugelizi
俩位,麻烦具体说下逻辑上的错误,谢谢
aihimmel
2017-08-26 22:49:05 +08:00
额,丢脸了,才发现是 KeyboardInterrupt 异常。。。。
初步判断是 crtl+C 终止了 driver,所以不能退出
cdwyd
2017-08-26 23:21:19 +08:00
@aihimmel
偶尔看错很正常,我也怀疑是 selenium 响应了 ctrl + c 没查到具体的资料,使用 psutil 强制进行清理了。
ipwx
2017-08-27 09:52:58 +08:00
@aihimmel 它捕获的是 KeyboardInterrupt 诶大哥,Ctrl+C 就能触发,能不能好好看再来说?
ipwx
2017-08-27 09:53:28 +08:00
@aihimmel time.sleep 阻塞阶段,如果 Ctrl+C,则会强制停止 sleep,并触发 KeyboardInterrupt。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/386007

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX