2015-11-03 6 views
12

में पेज ऑब्जेक्ट का उपयोग करके मैं नाइटवॉच "0.8.6" का उपयोग कर रहा हूं। पृष्ठों पर प्रलेखन के अनुसार, मैं एक pages/login.js फ़ाइल बनाई और साथ कॉन्फ़िग फ़ाइल के लिए निर्देशिका जोड़ने की है:नाइटवॉच जेएस

module.exports = { 
    url: function() { 
    return this.launchUrl; 
    } 
}; 

प्रलेखन this.api का उल्लेख है, लेकिन ग्राहक/ब्राउज़र की संपत्ति नहीं thats। हालांकि, this.launchUrl स्पष्ट रूप से उपलब्ध है।

module.exports = { 
    'Login page has a login button' : function (browser) { 
    browser 
     .url(browser.page.login().url()) 
     .waitForElementVisible('body', 10000) 
     .assert.containsText('button', 'SIGN IN') 
     .end(); 
    } 
} 

परीक्षण अब विफल रहता है:

मैं इसे उपयोग करने के लिए एक मौजूदा परीक्षण बदल दिया है। .url इस .launchUrl के मान के बजाय data:, के साथ सेलेनियम खोलने का प्रयास करता है, जो स्थानीयहोस्ट है: 3000।

पृष्ठ वस्तु का स्पष्ट रूप से लॉगिन परीक्षण के संदर्भ में मूल्यांकन किया जाता है, इसलिए पेज ऑब्जेक्ट में यह होना चाहिए। LunchUrl। स्रोत में डाइविंग मैं देखता हूं कि मिश्रण में पेज रैपर ऑब्जेक्ट्स भी हैं, किसी भी तरह।

मैं 0.8.6 में पेज ऑब्जेक्ट को सही ढंग से बनाने और उपयोग करने का उपयोग कैसे कर सकता हूं?

उत्तर

6

मुझे लगता है कि आप login.js पृष्ठ पर कॉल करने के लिए एक var जोड़ने की कोशिश कर सकते हैं। इस तरह:

module.exports = { 
    'Login page has a login button' : function (browser) { 

    var LoginPage = browser.page.login(); 
     LoginPage.navigate(); 

     LoginPage 
     .waitForElementVisible('body', 10000) 
     .assert.containsText('button', 'SIGN IN') 
     .end(); 
    } 
} 
+0

मैं बस वापस लौटने में सक्षम था रों। निश्चित नहीं है कि यह आपको एक बक्षीस से सम्मानित करता है, अगर मुझे नहीं पता है और मैं समझूंगा कि यह कैसे करता है –

1

तो डॉक्स आप के लिए है के अनुसार:। - "प्रत्येक पृष्ठ वस्तु, एक अलग फाइल में स्थित होना चाहिए स्थित एक निर्दिष्ट फ़ोल्डर में Nightwatch फ़ोल्डर से पेज वस्तुओं पढ़ता है (या फ़ोल्डर्स) page_objects_path कॉन्फ़िगरेशन प्रॉपर्टी में निर्दिष्ट है। "

क्या आपने अपनी page_objects_path निर्देशिका कॉन्फ़िगर की है?

बार जब आप इस किया है आप एक js फ़ाइल उस फ़ोल्डर में, इस तरह के रूप बना सकते हैं:

module.exports = function(client) { 
    return { 
    gotoUrl: function() { 
     return client 
     .url(client.launchUrl); 
    }, 
    }; 
}; 

और फिर आप अपने परीक्षण लिख सकते हैं जैसे:

module.exports = { 
    'Login page has a login button': (browser) => { 
    browser.page.pagescriptname() 
     .gotoUrl() 
     .waitForElementVisible('body', 10000) 
     .assert.containsText('button', 'SIGN IN') 
     .end(); 
    } 
} 

यकीन है कि आप सुनिश्चित करें launch_url को आपकी nightwatch.js फ़ाइल में कॉन्फ़िगर किया गया है (या इसे nightwatch.conf.js फ़ाइल के माध्यम से गतिशील रूप से बदला जा सकता है (जो मैंने अपनी परियोजना के लिए किया है)