selenium 问题:OSError: [WinError 6] 句柄无效
问题:
执行多个用例的时候,会抛出异常:
File "xxxxxx.py", line 16, in get_driver driver = webdriver.Chrome(executable_path="chromedriver.exe") File "D:\Python3\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 61, in __init__ self.service.start() File "D:\Python3\lib\site-packages\selenium\webdriver\chrome\service.py", line 66, in start self.service_args, env=env, stdout=PIPE, stderr=PIPE) File "D:\Python3\lib\subprocess.py", line 754, in __init__ _cleanup() File "D:\Python3\lib\subprocess.py", line 474, in _cleanup res = inst._internal_poll(_deadstate=sys.maxsize) File "D:\Python3\lib\subprocess.py", line 1149, in _internal_poll if _WaitForSingleObject(self._handle, 0) == _WAIT_OBJECT_0: OSError: [WinError 6] 句柄无效。
解决方案:
关闭driver 时 , 使用 driver.quit()代替 driver.close()。
分析:
之前使用 driver.close() 时,用例执行结束有时会不能成功关闭chromedriver.exe,导致后台含有多个chromedriver.exe 进程(可以通过任务管理器查看)。
改用 driver.quit()之后,用例执行结束可以看到后台不会含有 chromedriver.exe 进程。该问题就解决了。
备注:
区别
close:只会关闭焦点所在的当前窗口
quit:会关闭所有关联的窗口
所以推荐使用quit 。
作者:微微微笑
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.