2017-04-08 8 views
9

क्रोमड्राइवर के रूप में क्रोमड्राइवर के रूप में चल रहे नवीनतम chromedriver.exe के साथ निष्पादन के अंत में scoped_ * नामक फ़ोल्डर को हटा नहीं रहा है। यह 400 परीक्षणों के लिए लगभग 20 जीबी स्पेस पर कब्जा कर रहा है। मैंने क्रोमेड्रिवर के 2.28 और 2.2 9 संस्करणों के साथ प्रयास किया। मैं driver.close() और driver.Quit() के साथ ड्राइवर को ठीक से बाहर कर रहा हूं।परीक्षण के बाद क्रोमड्राइवर टेम्पर्ड फ़ोल्डर में स्कॉप्ड * डीआईआर को हटा नहीं रहा है

public static void teardown_() 
     { 
      // quit driver 
      if (driver != null) 
       driver.Quit(); 

      // delete all "scoped_dir" temp folders 
      string tempfolder = System.IO.Path.GetTempPath(); 
      string[] tempfiles = Directory.GetDirectories(tempfolder, "scoped_dir*", SearchOption.AllDirectories); 
      foreach (string tempfile in tempfiles) 
      { 
       try 
       { 
        System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(tempfolder); 
        foreach (System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) subDirectory.Delete(true); 
       } 
       catch (Exception ex) 
       { 
        writeEx("File '" + tempfile + "' could not be deleted:\r\n" + 
          "Exception: " + ex.Message + "."); 
       } 
      } 
     } 

आशा है कि यह मदद करता है: क्रोम ब्राउज़र संस्करण 57.

उत्तर

8

मैं उस तरह चालक छोड़ने के बाद "scoped_dir" के साथ शुरू होता अस्थायी फ़ोल्डरों का विलोपन जोड़कर इस कामयाब रहे है!

+0

आप हो रही हैं "गैर खाली फ़ोल्डर को हटा नहीं सकते", इस कार्यान्वयन का उपयोग करें: foreach (tempFolders में स्ट्रिंग tempFolder) { कोशिश { Directory.Delete (tempFolder, सच); } पकड़ (अपवाद पूर्व) { ... } } – Illidan

+2

इस रणनीति तुल्यकालिक निष्पादन के लिए काम करता है, लेकिन अगर आप समानांतर ** chromedriver ** नौकरियों का उपयोग कर रहे आप किसी जारी 'chromedriver.exe' प्रक्रिया पर stomp होगा और मुद्दों का कारण बनता है। – SliverNinja

7

यह एक ज्ञात बग कि Chromedriver 2.30 के साथ https://bugs.chromium.org/p/chromedriver/issues/detail?id=644

यह ChromeDriver और क्रोम के बीच एक रेस स्थिति प्रतीत होता है तय हो जाएगा। ChromeDriver क्रोम द्वारा उपयोग के लिए इन temp निर्देशिका बनाता है, और अंत में ChromeDriver उन निर्देशिकाओं को हटाने का प्रयास करता है। क्रोमड्राइवर मुख्य क्रोम प्रक्रिया को हटाने से पहले समाप्त करने की प्रतीक्षा करता है, लेकिन कुछ क्रोम बाल प्रक्रियाएं अभी भी चल रही हैं और उन निर्देशिकाओं पर हो सकती हैं, जिससे विलोपन विफल हो जाता है। वर्तमान में क्रोमड्राइवर हटाने को पुनः प्रयास नहीं करता है।

डैनियल जैसे अस्थायी फ़ाइलों को हटाने का अस्थायी समाधान हो सकता है लेकिन जैसे ही क्रोमड्रिवर 2.30 जारी किया जाता है, मैं इसे हटा दूंगा।


अद्यतन

Chromedriver 2.30 बाहर है और इस समस्या को हल करना चाहिए।

+0

समस्या को सत्यापित करना अभी भी नवीनतम ड्राइवर के साथ मौजूद है ... यह मुझे ** WebdriverJS ** का उपयोग करके भारी सेलेनियम नौकरी करने और डिस्क स्थान से बाहर चलने के बाद मिला। अभी भी ** chromedriver ** '2.30.1' का उपयोग करके'% TEMP% 'में 'scoped_dirXXXX' निर्देशिकाओं को अटक गया है। ऊपर पोस्ट मैनुअल क्लीनअप रूट जाना होगा ... बस 5-6k ड्राइवर बनाएं और आप भी देखेंगे ;-) – SliverNinja

+0

मैं स्वीकार करूंगा कि मैं '2.30' पैच नोट्स से बाहर जा रहा था, जिसमें कहा गया था कि समस्या ठीक हो गई थी। आपको '2.30.1' कहां मिला? मैं कहीं भी नहीं देखता हूं कि उस संस्करण का अभी तक उल्लेख है। – cdzar

+0

[जाहिर है कि मुझे नोड ड्राइवर का संस्करण मिला है] (https://github.com/giggio/node-chromedriver/releases) – SliverNinja

3

नवीनतम chromedriver2.30.1 का उपयोग करना मेरे लिए इस मुद्दे को हल नहीं किया - मैं अपने %TEMP% निर्देशिका में संग्रहण कम होने जब नौकरियों चल समानांतर सेलेनियम रखा।

सबसे अच्छा समाधान के बाद आप driver.quit()

यदि आपका प्रक्रिया तुल्यकालिक है से @ cdzar के समाधान के ऊपर काम करेंगे, लेकिन समानांतर नौकरियों के लिए आप वास्तव में जरूरत है के माध्यम से userDataDirChrome विकल्प को नियंत्रित करने और अपने आप को निर्देशिका के निपटान के लिए है निर्देशिका को नियंत्रित/स्वयं को निपटाने के लिए।

आप checkout other chromium command line switches here कर सकते हैं।

+0

मैं क्रोमड्राइव 2.34 और क्रोम संस्करण 64 का उपयोग कर रहा हूं। मुझे अभी भी यह समस्या है और मैं रिपोर्ट कर सकते हैं कि हार्डड्राइव को अनिवार्य रूप से कचरे के साथ इतनी जल्दी भरना बहुत परेशान है। – sapbucket

0

की सूचना दी गई और तय की गई। चेकआउट 2.30 या 2.31

UPD। कम से कम हमारे ग्रिड के लिए काम करता है। आपको अभी भी समस्या है, तो यह बेहतर आप productforums.google.com पर किसी भी scope_dir थ्रेड में रिपोर्ट में इसके अलावा पहले यह तय किया गया था हम पी एस स्क्रिप्ट में सभी फाइलों को मंजूरी दे दी इस्तेमाल किया है .. * \ AppData \ Local \ अस्थायी

युपीडी । क्रोम ब्राउज़र की जांच प्रक्रिया पूरी कर ली है। इस फिक्स के साथ-साथ हमारे पास एक समस्या थी कि ब्राउज़र पुन: प्रारंभ करने के बाद भी "पूर्ण करने के लिए अपडेट के लिए पुनरारंभ करना" स्थिति में रहता है। यह शायद ब्राउज़र और ड्राइवर दोनों को काम करने के लिए अद्यतन किया जाना है- निश्चित रूप से नहीं कह सकते हैं।

संबंधित मुद्दे