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 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM