2016-12-11 10 views
8

मैंने this answer का पालन किया और यह लगभग मुझे आवश्यक चीज़ दिखता है।प्रोटैक्टर: फ़ाइल नाम जानने के बिना परीक्षण डाउनलोड फ़ाइल

समस्या यह है कि वह पहले से ही फ़ाइल नाम जानता है और मैं फ़ाइल डाउनलोड करने के लिए e2e परीक्षण कर रहा हूं, लेकिन फ़ाइल नाम वर्तमान समय (यहां तक ​​कि मिलीसेकंड के साथ) पर निर्भर करता है, इसलिए मुझे वास्तव में नाम नहीं पता है (या यह इसे प्राप्त करना बहुत मुश्किल होगा)।

मुझे लगता है कि मैं यहाँ बहुत ही सरल कुछ याद आ रही है, लेकिन मैं दो तरीकों में से सोच रहा था:

  1. विश्राम फ़ाइल नाम (समान समारोह है कि इस फ़ाइल का नाम देता है के साथ) और एक के अस्तित्व के लिए जाँच शुरू उस नाम के साथ फ़ाइल करें, यदि यह अस्तित्व में नहीं है, तो जब तक मैं सही नाम नहीं डालता तब तक अगले मिलीसेकंड पर जाएं।
  2. "किसी भी" फ़ाइल के अस्तित्व के लिए डाउनलोड फ़ोल्डर की जांच करें, अगर मुझे वहां कोई मिलता है तो यह फ़ाइल डाउनलोड होनी चाहिए (इस मामले के लिए मुझे नहीं पता कि प्रोटैक्टर में एक संपूर्ण फ़ोल्डर कैसे जांचें)।

आशा है कि आप लोग इन विकल्पों के साथ मदद कर सकते हैं (मुझे बिंदु 2 के साथ कुछ मदद चाहिए) या शायद मुझे एक बेहतर दें।

var glob = require("glob"); 

browser.driver.wait(function() { 
    var filesArray = glob.sync(filePattern); 
    if (typeof filesArray !== 'undefined' && filesArray.length > 0) { 
     // this check is necessary because `glob.sync` can return 
     // an empty list, which will be considered as a valid output 
     // making the wait to end. 
     return filesArray; 
    } 
}, timeout).then(function (filesArray) { 
    var filename = filesArray[0]; 
    // now we have the filename and can do whatever we want 
}); 
+3

बस पहले सोचा था कि मेरे सिर के लिए आया था: मैं शायद परीक्षण सेट अप में डाउनलोड निर्देशिका को साफ़ करें और किसी भी फ़ाइल (या एक विशिष्ट ग्लोब पैटर्न से मेल खाने वाली फ़ाइल) के लिए प्रतीक्षा करें - हालांकि ऐसा नहीं किया है, लेकिन शायद आप 'ग्लोब' पैकेज (उदाहरण के लिए कुछ रिकर्सिव बना सकते हैं ] (http://stackoverflow.com/a/21320251/771848)) - फ़ाइल तक खोज के लिए खोज करें, या "टाइमआउट" हुआ - आप चमेली को टाइमआउट को नियंत्रित कर सकते हैं, या इसे मैन्युअल रूप से माप सकते हैं .. धन्यवाद। – alecxe

+0

@alecxe मैं आपके सुझाव के बाद समाप्त हुआ, मुझे नहीं पता था कि प्रतीक्षा करने के लिए क्या उपयोग करना है, 'सेटटाइमआउट' या 'browser.wait' – eLRuLL

+0

@alecxe यह अच्छा होगा अगर ब्राउजर स्वयं ब्राउजर के बारे में जान सके – eLRuLL

उत्तर

5

मैं @ alecxe के सुझाव निम्नलिखित समाप्त हो गया और यहाँ मेरा जवाब है।

मुख्य विचार 2 बातें पर आधारित है:

  • browser.wait() पूरी तरह से फिट बैठता है समस्या - यह लगातार एक समारोह को अंजाम होता है जब तक यह सही का आकलन या टाइमआउट पहुँच जाता है। और, टाइमआउट तंत्र पहले ही अंतर्निहित है।
  • glob module एक निश्चित पैटर्न मिलान फ़ाइल नामों के लिए देखने के लिए एक तरीका प्रदान करता (सबसे खराब स्थिति में, आप के लिए इंतजार कर सकते हैं *.* - मूल रूप से, किसी भी फाइल प्रकट करने के लिए)
+0

अच्छा, साझा करने के लिए धन्यवाद! – alecxe

+0

विचार के लिए धन्यवाद;) – eLRuLL

+0

नोट: मैंने कुछ अतिरिक्त स्पष्टीकरण के साथ एसक्यूए साइट पर इसे दोबारा पोस्ट किया है: http://sqa.stackexchange.com/a/24439/5574। – alecxe

3

बस @ elRuLL के जवाब देने के लिए थोड़ा और अधिक पृष्ठभूमि जानकारी जोड़ने के लिए: धन्यवाद

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