तो, क्या मुझे प्रत्येक क्लिक में क्लिक()। फिर() का उपयोग करना चाहिए?
निश्चित रूप से नहीं।
यह की जरूरत नहीं है क्योंकि कोणमापक/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 भी हैं, लेकिन यह यहां प्रासंगिक नहीं है।
नियंत्रण प्रवाह का भविष्य प्रश्न में है। "भविष्य में, नियंत्रण प्रवाह हटाया जा रहा है" [वेबड्राइवर नियंत्रण प्रवाह] (https://github.com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control -फ्लो) –