ImportError:sys.meta_路径为None,Python可能正在使用_del__;()中的driver.quit()关闭错误

ImportError:sys.meta_路径为None,Python可能正在使用_del__;()中的driver.quit()关闭错误,python,selenium,selenium-webdriver,webdriver,del,Python,Selenium,Selenium Webdriver,Webdriver,Del,我正试图学习selenium来自动化一些东西,我得到了以下错误 在中忽略异常: 回溯(最近一次呼叫最后一次): 文件“main.py”,第52行,在del 文件“C:\Users\michael blaze\AppData\Local\Programs\Python\Python38-32\lib\site packages\selenium\webdriver\chrome\webdriver.py”,第158行, 在退出中 文件“C:\Users\michael blaze\AppData\

我正试图学习selenium来自动化一些东西,我得到了以下错误

在中忽略异常:
回溯(最近一次呼叫最后一次):
文件“main.py”,第52行,在del
文件“C:\Users\michael blaze\AppData\Local\Programs\Python\Python38-32\lib\site packages\selenium\webdriver\chrome\webdriver.py”,第158行, 在退出中
文件“C:\Users\michael blaze\AppData\Local\Programs\Python\Python38-32\lib\site packages\selenium\webdriver\common\service.py”,第151行,在stop
文件“C:\Users\michael blaze\AppData\Local\Programs\Python\Python38-32\lib\site packages\selenium\webdriver\common\service.py”,第122行,在send\u remote\u shutdown\u命令中
ImportError:sys.meta_路径为None,Python可能正在关闭

我找到了它的来源

def __del__(self):
   self.driver.quit()
我的init函数如下所示

def __init__(self):
   self.driver = webdriver.Chrome(path)

什么会导致此问题?

请查看您是否可以这样构造代码:

#在司机打电话之前准备好东西
使用webdriver.Chrome(路径)作为驱动程序:
#在这里做你的事
#您可以使用变量“driver”访问驱动程序
#司机打电话后的东西
这样,一旦
with
块完成,就应该以最好的方式清理驱动程序,包括强制Python等待关闭


免责声明:我没有测试它,只是注意到他们已经实现了
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
\uuuuuuuuuuuuuuuuuuuu。以下是观察结果:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    class PythonBot:
        def __init__(self,my_string):
        self.my_string = my_string
        self.driver = webdriver.Chrome(executable_path=r'C:\WebDrivers\chromedriver.exe')
    
        def send_text(self):
        driver = self.driver
        driver.get('https://www.google.com/')
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, "q"))).send_keys(self.my_string)
    
        def __del__(self):
        self.driver.quit()
    
    run = PythonBot('Selenium')
    run.send_text()
    
  • 控制台输出:

    Exception ignored in: <bound method PythonBot.__del__ of <__main__.PythonBot object at 0x028172F0>>
    Traceback (most recent call last):
      File "C:\Users\Soma Bhattacharjee\Desktop\Debanjan\PyPrograms\init_del_in_python_class.py", line 17, in __del__
      File "C:\Python\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 158, in quit
      File "C:\Python\lib\site-packages\selenium\webdriver\common\service.py", line 151, in stop
      File "C:\Python\lib\site-packages\selenium\webdriver\common\service.py", line 122, in send_remote_shutdown_command
    ImportError: sys.meta_path is None, Python is likely shutting down
    

    这回答了你的问题吗?起初我读了那篇文章,但不幸的是它并没有解决我的问题。你能重新考虑你的代码,用webdriver.Chrome(path):
来代替吗?这应该在结尾处得到适当的清理。我仍然是python的高手。当你说“与webdriver.Chrome(path)”一起使用时,你能说得更具体一些吗:)self.driver.close()可以工作,但它不能释放内存。tyour approuch工作得很好,但我仍然想知道为什么self.driver.quit()不能在我的del destructor函数中工作。我想使用类。这可能是理解该问题的一个很好的参考:。基本上,一旦你进入
\uu del\uu
你的解释器已经清理了一些东西。查看代码时,似乎有一些模块是在
quit
命令中导入的,但这样做也可能太晚了
def __del__(self):
    self.driver.close()