2017-03-07 8 views
12

मुझे उत्सुकता है कि प्रतीक्षा करेंForAngularEnabled() कैसे काम करता है? हालांकि यह जटिल प्रतीत नहीं होता है, हालांकि, मुझे कहीं भी कोई संतुष्ट उत्तर नहीं मिल सका। तो उम्मीद है कि कोई मुझे मंजूरी मिलने में मदद करता है।प्रतीक्षा करने के लिए कैसे कार्य करता है?

मेरा लक्ष्य मानदंडों को पूरा करने तक मानदंडों को जांचना और रोकना/चलाना परीक्षण करना है। उदाहरण के लिए यहां मामले हैं।

ए परीक्षण चल रहा रोक सकते हैं और जब तक प्रतीक्षा करें पेज एक

browser.wait(() => { 
     browser.waitForAngularEnabled(false); 
     return browser.isElementPresent(by.id('the-element-id')); 
    }, timeout); // timeout may not be given 

तो साथ इसी तरह के प्रयोजन के लिए browser.wait(), वैकल्पिक तरीके से उपयोग करने लोड हो जाता है

... 
    let theElement = ...; 
    browser.waitForAngularEnabled(false); 
    browser.wait(protractor.ExpectedConditions.presenceOf(theElement)); 

बी सवाल यह है:

  1. प्रतीक्षा करने के बाद क्या होगा ?ForAngularEnabled (false) का आह्वान किया जाता है? (एक बार मानदंड पूरा हो जाता है या मेरे मामले में समय समाप्ति हो जाती है)
  2. क्या मुझे सामान्य परीक्षण जारी रखने के लिए प्रतीक्षा करेंForAngularEnabled (true) वापस करना चाहिए?
  3. यदि मुझे करना चाहिए, तो इसे कहां रखा जाए?

आशा कुछ पृष्ठभूमि सिद्धांत के साथ स्पष्ट जवाब मिलता है।

धन्यवाद!

+0

क्या आपने प्रोटैक्टर के एपीआई दस्तावेज़ को देखा था? http://www.protractortest.org/#/api?view=ProtractorBrowser.prototype.waitForAngular और http://www.protractortest.org/#/api?view=ProtractorBrowser.prototype.waitForAngularEnabled –

+1

हाँ, मैंने किया , लेकिन मैं संतुष्ट नहीं था। क्या आप प्रश्न # 1 का उत्तर दे सकते हैं? अग्रिम धन्यवाद। प्रश्न # 1 का उत्तर देने के लिए – first87

+0

हमें यह जानने की जरूरत है कि आप इसे पहले स्थान पर क्यों बंद कर रहे हैं। क्या आप कोणीय अंत में $ http या $ टाइमआउट मतदान से संबंधित टाइमआउट प्राप्त कर रहे हैं? साथ ही, ऐसा लगता है कि यह फ़ंक्शन 'ब्राउज़र.इनोर सिंक्रनाइज़ेशन' के लिए सिर्फ एक प्रतिस्थापन है, और इसका उपयोग यह निर्धारित करने के लिए 'WaitForAngular()' फ़ंक्शन के भीतर किया जाता है कि इसका उपयोग करना है या नहीं। तो यह आपके संदेश, गंडरसन के लिए धन्यवाद – Gunderson

उत्तर

13

1. प्रतीक्षा करने के बाद क्या होगा ?ForAngularEnabled (false) का आह्वान किया जाता है? (मानदंड मिलने के बाद या मेरे मामले में समय समाप्ति हो जाती है)

अनुभवजन्य रूप से मुझे पता चला है कि ऐसा लगता है कि ऐसा लगता है कि प्रोटैक्टर केवल वेबड्राइवर के रूप में व्यवहार करता है। यह कोणीय के लिए "बसने" (कोई लंबित HTTP अनुरोध या अपडेट देखने के लिए) का इंतजार नहीं करता है, जो true के लिए व्यवहार है। इसके बजाय, यदि आप false सेटिंग का उपयोग करते हैं, तो आपको एक सामान्य वेबड्राइवर परीक्षण के साथ ही विश्वसनीय चरणों को निष्पादित करने के लिए पूर्व शर्त सत्यापित करने के लिए अपेक्षित कैंडिशन या समान दृष्टिकोण का उपयोग करना होगा।

2. क्या मुझे सामान्य परीक्षण जारी रखने के लिए प्रतीक्षा करेंForAngularEnabled (true) वापस करना चाहिए?

हां। हालांकि, मैंने पाया है कि प्रोटैक्टर 5.1.1 और 5.1.2 में, चाहे नियंत्रण प्रवाह का उपयोग हो या नहीं, उसी निष्पादन में आपके पूरे परीक्षणों में अलग-अलग waitForAngularEnabled मानों को बिखराते हुए अप्रत्याशित परिणाम मिलते हैं; यानी, सक्षम राज्य अन्य प्रोटैक्टर/वेबड्राइवर कॉल के समान असीमित अर्थशास्त्र का पालन नहीं करता है। अब तक, मेरा निष्कर्ष यह है कि आप विश्वसनीय निष्पादन में प्रतीक्षा करने के लिए प्रतीक्षा नहीं कर सकते हैं और एक ही निष्पादन में प्रतीक्षा करेंअन्युलर सक्षम (सत्य)। मुझे संदेह है कि यह एक प्रोटैक्टर बग है, लेकिन मैंने अभी तक एक प्रोटैक्टर मुद्दे जमा करने के समर्थन में साबित करने के लिए एक सरल और विश्वसनीय परीक्षण विकसित नहीं किया है। संभावित रूप से संबंधित समस्या here थी, अब बंद है लेकिन अपूर्ण रूप से निदान किया गया है।

3. यदि मुझे करना चाहिए, तो इसे कहां रखा जाए?

"इससे पहले" आप प्रोटैक्टर/वेबड्रिवर कॉल करते हैं जिसके लिए प्रतीक्षा-के-कोणीय अर्थशास्त्र को पुनर्स्थापित करने की आवश्यकता होती है।हालांकि, ऊपर वर्णित अनुसार, यह स्पष्ट नहीं है कि आप विश्वसनीय रूप से गारंटी दे सकते हैं कि ऐसी कॉल वास्तव में true सेटिंग के संदर्भ में बनाई जाएंगी।

आप कुछ परीक्षण है कि false और दूसरों true का उपयोग होना आवश्यक है, तो आप उन्हें अलग फांसी में चला सकते हैं (अलग प्रक्रियाओं, उन्हें एक ही protractor या ng e2e कमांड के साथ नहीं चला)। जब उस दृष्टिकोण को लिया जाता है तो मुझे कोई समस्या नहीं आई है।

+0

आपके उत्तरों के लिए धन्यवाद। वे मेरे लिए पर्याप्त समृद्ध और बहुत उपयोगी हैं और इस प्रकार मैं प्रोटैक्टर के साथ काम करने के लिए कुछ उपयोगी सम्मेलनों को प्राप्त कर सकता हूं। धन्यवाद, विल। – first87

+0

ग्रेट। उम्मीद है कि अधिक आधिकारिक जानकारी आती है, या बग दायर या तय की जाती है, हम इस पर सुधार कर सकते हैं। – Will

+0

मुझे [waitforAngularEnabled (true) 'का उपयोग करके कोणीय 4 के साथ समस्याओं का सामना करना पड़ा है, [इस मुद्दे] (https://github.com/angular/protractor/issues/4233) के समान। – Will

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

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