遇到問題
報錯信息:sys.meta_path is None, Python is likely shutting down
1.我的環境:
- python 3.6
- selenium 2.53.6
- chrome 65
- chromedriver 2.33.50
2.執行代碼:
# 作者:上海-悠悠
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.cnblogs.com/yoyoketang")
driver.close() # close這句報錯了
3.報錯信息:sys.meta_path is None, Python is likely shutting down
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.chrome.service.Service object at 0x0000000001E69748>>
Traceback (most recent call last):
File "D:\soft\python3.6\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
File "D:\soft\python3.6\lib\site-packages\selenium\webdriver\common\service.py", line 139, in stop
File "D:\soft\python3.6\lib\site-packages\selenium\webdriver\common\service.py", line 110, in send_remote_shutdown_command
ImportError: sys.meta_path is None, Python is likely shutting down
原因分析
1.遇到這個報錯,首先對比了Firefox瀏覽器,火狐上是沒有這個問題的。
# 作者:上海-悠悠
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.cnblogs.com/yoyoketang")
driver.close() # close這句報錯了
2.然后用driver.quit()也不會報錯
# 作者:上海-悠悠
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.cnblogs.com/yoyoketang")
driver.quit() # quit退出進程不會報錯
3.經過對比分析:
- selenium2+Firefox46以下版本是不需要驅動的;
- driver.close()只是關閉當前的窗口(chromedriver並沒有退出進程,如下圖),driver.quit()這個才是完全退出了進程
解決方案
1.close和quit方法各有各的用途,一般在多窗口時候,需要關掉其中一個窗口就用close
2.寫完代碼,最后最好要加上一個quit,讓進程退出。如下,可以先close,最后quit。
# 作者:上海-悠悠
# 交流qq群:646645429
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.close() # close 這里沒關掉進程
driver.quit()