2015-10-30 8 views
8

मैं एक कोणीय ऐप चला रहा हूं और प्रोट्रेक्टर पर परीक्षण करते समय click() पर परीक्षण करते समय, मुझे नहीं पता कि मुझे then() के साथ वादे को कब हल करना चाहिए।प्रोटैक्टर, मुझे एक क्लिक के बाद()

मैं कोणमापक एपीआई पर इस पाया:

एक वादा है कि जब क्लिक आदेश पूरा कर लिया है का समाधान हो जाएगा।

तो, क्या मुझे प्रत्येक click में click().then() का उपयोग करना चाहिए?

उत्तर

7

तो, क्या मुझे प्रत्येक क्लिक में क्लिक()। फिर() का उपयोग करना चाहिए?

निश्चित रूप से नहीं।

यह की जरूरत नहीं है क्योंकि कोणमापक/WebDriverJS इस तंत्र जो मूल रूप से वादों का समाधान किए जाने की आवश्यकता की एक कतार है "Control Flow" कहा जाता है है:

WebDriverJS लंबित वादों की एक कतार का कहना है, नियंत्रण प्रवाह कहा जाता है, के लिए निष्पादन आयोजित रखें।

और कोणमापक स्वाभाविक रूप से और बाहर के बॉक्स कोणीय के लिए इंतजार कर रहा है:

अब आप और प्रतीक्षा करता है जोड़ने की जरूरत है अपने परीक्षण के लिए सोता है। वेबपृष्ठ लंबित कार्यों को समाप्त करने के पल में स्वचालित रूप से आपके परीक्षण में अगले चरण को निष्पादित कर सकता है, इसलिए आपको को अपने परीक्षण और वेबपृष्ठ को समन्वयित करने की प्रतीक्षा करने की आवश्यकता नहीं है।

जो एक काफी सीधी-सपाट परीक्षण कोड की ओर जाता है:

var elementToBePresent = element(by.css(".anotherelementclass")).isPresent(); 

expect(elementToBePresent.isPresent()).toBe(false); 
element(by.css("#mybutton")).click(); 
expect(elementToBePresent.isPresent()).toBe(true); 

कभी कभी, हालांकि, अगर आप तुल्यकालन/समय मुद्दों, या अनुभव परीक्षण के तहत अपने एप्लिकेशन गैर-कोणीय है, आप कर सकते हैं then() साथ स्पष्ट रूप से click() को हल करने से इसे हल और क्लिक कॉलबैक अंदर जारी रखने के लिए:

expect(elementToBePresent.isPresent()).toBe(false); 
element(by.css("#mybutton")).click().then(function() { 
    expect(elementToBePresent.isPresent()).toBe(true); 
}); 

इन मामलों में बचाव के लिए Explicit Waits भी हैं, लेकिन यह यहां प्रासंगिक नहीं है।

+1

नियंत्रण प्रवाह का भविष्य प्रश्न में है। "भविष्य में, नियंत्रण प्रवाह हटाया जा रहा है" [वेबड्राइवर नियंत्रण प्रवाह] (https://github.com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control -फ्लो) –

1

हां, आपको चाहिए। शायद अभी यह जरूरी नहीं है, लेकिन शायद अगले संस्करणों में यह है। तो, यदि click एक वादा वापस कर देता है, तो आपको इसका उपयोग करना चाहिए।

http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.click

+0

नियंत्रण प्रवाह का भविष्य प्रश्न में है। "भविष्य में, नियंत्रण प्रवाह हटाया जा रहा है" [वेबड्राइवर नियंत्रण प्रवाह] (https: // github।com/कोणीय/चांदा/ब्लॉब/मास्टर/docs/control-flow.md # अक्षम करने-नियंत्रण प्रवाह) –

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