selenium chromedriver退出報錯


記錄使用python調用chromedriver時遇到的問題

代碼:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
# author : fy
# version : V1.0
# file: chrome_test.py
# time:2018/10/30 10:19

from selenium import webdriver
import platform


class CT(object):
    def __init__(self):
        options = webdriver.ChromeOptions()
        options.add_argument('--headless')
        options.add_argument('--disable-gpu')
        options.add_argument("--no-sandbox")
        options.add_argument("--lang=" + "zh-CN")
        options.add_argument(
            '--user-agent=Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36')
        pf = platform.system()
        if pf == 'Windows':
            chromedriver = "E:\\ChromeDownload\\chromedriver_win32\\chromedriver.exe"
        else:
            chromedriver = "/usr/bin/chromedriver"

        self.obj = webdriver.Chrome(chrome_options=options, executable_path=chromedriver)
    def __del__(self):
        self.obj.quit()
        pass

    def openpage(self):
        self.obj.get('http://www.baidu.com')
        print self.obj.page_source
        #self.obj.close()
if __name__=='__main__':
    cct = CT()
    cct.openpage()
    

其中:
self.obj.close() ---關閉瀏覽器當前打開的頁面,chromedriver進程不會退出
self.obj.quit()     ---瀏覽器進程退出,任務管理器中可以看到chromedriver進程被釋放

如果直接這樣運行會出現報錯:

Exception RuntimeError: RuntimeError('sys.meta_path must be a list of import hooks',) in <bound method CT.__del__ of <__main__.CT object at 0x040F61F0>> ignored

解決方法1:
把__del__中的self.obj.quit()放到實現函數里面
    def openpage(self):
        self.obj.get('http://www.baidu.com')
        print self.obj.page_source
        self.obj.quit()

但是如果實現函數中有很多分支,每個分支中如果出現異常,都要調用quit很麻煩

 

解決方法2:

保留__del__中的self.obj.quit(),在外面手動釋放類實例del cct

if __name__=='__main__':           
    cct = CT()                     
    cct.openpage()                 
    del cct                        

至於原因,在網上查了半天也沒找到合適的解釋。。。


免責聲明!

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



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