問題:
執行多個用例的時候,會丟擲異常:
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 。