प्रोट्रैक्टर परीक्षणों में मैं कई बार browser.wait विधि को कॉल करता हूं उदाहरण के लिए स्क्रीन पर विशेष तत्व दिखाई देने के बाद प्रतीक्षा करने के लिए या यह क्लिक करने योग्य होगा।

कई मामलों में परीक्षण मेरी स्थानीय मशीन पर पास हो जाते हैं, लेकिन दूसरे पर नहीं। मुझे टाइमआउट के बारे में बहुत सामान्य जानकारी प्राप्त होती है जो मुझे डीबग करने/समस्या के स्रोत को खोजने में बहुत मदद नहीं करती है।

क्या एक browser.wait अधिक क्रिया बनाना संभव है, उदाहरण के लिए:

  • यदि किसी विशेष तत्व की प्रतीक्षा में कम से कम defaultTimeoutInterval बीत जाएगा, तो क्या उस तत्व के बारे में console.log जानकारी प्राप्त करना संभव होगा जिसके लिए उसने प्रतीक्षा करने का प्रयास किया था,
  • टाइमआउट त्रुटि होने पर स्क्रीनशॉट लें,
  • browser.wait में टाइमआउट दिखाई देने पर पूर्ण कॉल स्टैक प्रदान करें
0
matandked 4 सितंबर 2018, 12:00

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 रिपोर्ट तैयार करता है और विफल परीक्षणों पर डीबग जानकारी (उदाहरण के लिए, किस कोड लाइन में विफलता हुई)।

1
E SV 4 सितंबर 2018, 17:03
धन्यवाद। मैंने इस पर भी विचार किया है, लेकिन मुझे लगता है कि यह कंसोल में बहुत अधिक आउटपुट बनाएगा। हो सकता है कि मुझे इस सहायक विधि में स्विच जोड़ना चाहिए, ताकि मैं आसानी से वर्बोज़ मोड को चालू और बंद कर सकूं।
 – 
matandked
4 सितंबर 2018, 18:21

प्रोट्रैक्टर की अपेक्षित स्थिति का उपयोग करते हुए देखें, आप निर्दिष्ट कर सकते हैं कि किसकी प्रतीक्षा करनी है और कैसे इसके लिए लंबा इंतजार करना।

स्क्रीनशॉट के लिए वहाँ npm मॉड्यूल हैं जो एक परीक्षण विफल होने पर स्क्रीनशॉट ले सकते हैं। इससे मदद मिल सकती है।

0
M Mansour 4 सितंबर 2018, 13:41
मैं अपेक्षित स्थिति का उपयोग कर रहा हूं। मेरे प्रश्न में मैंने उल्लेख किया है (सीधे नहीं) कि मैं elementToBeClickable और presentOf का उपयोग करता हूं। समस्या यह है कि जब प्रोटैक्टर उनमें से किसी एक के लिए प्रतीक्षा करता है और फिर उसे विफल के रूप में चिह्नित करता है, तो मुझे नहीं पता कि किसके कारण कोई समस्या हुई, क्योंकि केवल जानकारी है कि कंसोल में टाइमआउट हुआ।
 – 
matandked
4 सितंबर 2018, 15:03

Browser.wait एक वादा लौटाता है, इसलिए त्रुटि को पकड़ें और कुछ सार्थक प्रिंट/फेंक दें:

await browser.wait(ExpectedConditions.visibilityOf(css), waitingTime).catch((error) => 
{
  throw new CustomError(`Could not find ${css} ${error.message}`)
});
0
carl kenne 5 नवम्बर 2018, 21:00