प्रोट्रैक्टर परीक्षणों में मैं कई बार browser.wait
विधि को कॉल करता हूं उदाहरण के लिए स्क्रीन पर विशेष तत्व दिखाई देने के बाद प्रतीक्षा करने के लिए या यह क्लिक करने योग्य होगा।
कई मामलों में परीक्षण मेरी स्थानीय मशीन पर पास हो जाते हैं, लेकिन दूसरे पर नहीं। मुझे टाइमआउट के बारे में बहुत सामान्य जानकारी प्राप्त होती है जो मुझे डीबग करने/समस्या के स्रोत को खोजने में बहुत मदद नहीं करती है।
क्या एक browser.wait
अधिक क्रिया बनाना संभव है, उदाहरण के लिए:
- यदि किसी विशेष तत्व की प्रतीक्षा में कम से कम
defaultTimeoutInterval
बीत जाएगा, तो क्या उस तत्व के बारे मेंconsole.log
जानकारी प्राप्त करना संभव होगा जिसके लिए उसने प्रतीक्षा करने का प्रयास किया था, - टाइमआउट त्रुटि होने पर स्क्रीनशॉट लें,
browser.wait
में टाइमआउट दिखाई देने पर पूर्ण कॉल स्टैक प्रदान करें
3 जवाब
यदि मुख्य मुद्दा यह है कि आप नहीं जानते कि किस तत्व के लिए प्रतीक्षा समय समाप्त हो गया है, तो मैं प्रतीक्षा के लिए एक सहायक कार्य लिखने का सुझाव दूंगा और प्रतीक्षा के बजाय इसका उपयोग करूंगा, जैसे कुछ:
wait = function(variable, variableName,waitingTime){
console.log('Waiting for ' + variableName);
browser.wait(protractor.ExpectedConditions.elementToBeClickable(variablename),waitingTime);
console.log('Success');
}
क्योंकि प्रोट्रैक्टर पहली बार विफल होने के बाद परीक्षण निष्पादित करना बंद कर देता है, यदि प्रतीक्षा समय समाप्त हो गया है, तो कंसोल एक निश्चित तत्व को लोड करने में विफल होने के बाद सफलता संदेश प्रिंट नहीं करेगा।
स्क्रीनशॉट के लिए मैं protractor-jasmine2-screenshot-reporter
को आज़माने का सुझाव देता हूं, यह स्क्रीनशॉट के साथ आसानी से पढ़ने योग्य html रिपोर्ट तैयार करता है और विफल परीक्षणों पर डीबग जानकारी (उदाहरण के लिए, किस कोड लाइन में विफलता हुई)।
प्रोट्रैक्टर की अपेक्षित स्थिति का उपयोग करते हुए देखें, आप निर्दिष्ट कर सकते हैं कि किसकी प्रतीक्षा करनी है और कैसे इसके लिए लंबा इंतजार करना।
स्क्रीनशॉट के लिए वहाँ npm मॉड्यूल हैं जो एक परीक्षण विफल होने पर स्क्रीनशॉट ले सकते हैं। इससे मदद मिल सकती है।
Browser.wait एक वादा लौटाता है, इसलिए त्रुटि को पकड़ें और कुछ सार्थक प्रिंट/फेंक दें:
await browser.wait(ExpectedConditions.visibilityOf(css), waitingTime).catch((error) =>
{
throw new CustomError(`Could not find ${css} ${error.message}`)
});
संबंधित सवाल
नए सवाल
protractor
प्रोट्रैक्टर वेबड्राइवरजेज के शीर्ष पर बने एंगुलर और एंगुलरजेएस अनुप्रयोगों के लिए एंड-टू-एंड टेस्ट फ्रेमवर्क है। प्रोटेक्टर को स्टैंडअलोन बाइनरी रनर के रूप में चलाया जा सकता है या लाइब्रेरी के रूप में आपके परीक्षणों में शामिल किया जा सकता है। यदि आप WebDriver और अपने परीक्षण सेटअप को स्वयं प्रबंधित करना चाहते हैं, तो लाइब्रेरी के रूप में प्रोटेक्टर का उपयोग करें। Http://www.protractortest.org/#/ और https://github.com/angular/protractor/ पर अधिक जानकारी प्राप्त करें