प्रश्न के समान यहां। मेरे परीक्षण अस्थिर हैं। ट्राई एंड कैच सॉल्यूशन यहां काम नहीं करेगा। इसे हल करने के लिए कोई सर्वोत्तम अभ्यास?

0
mosaad 9 अगस्त 2016, 12:48

2 जवाब

सबसे बढ़िया उत्तर

हो सकता है कि कोई कोडिंग समस्या हो, आप पहले किसी तत्व की खोज करते हैं और आप बाद में उस ऑब्जेक्ट का उपयोग कर रहे हैं।

यदि पृष्ठ को बदला/पुनः लोड नहीं किया गया था तो आपको बासी तत्व नहीं मिलना चाहिए।

0
lauda 9 अगस्त 2016, 15:00

जैसा कि @lauda ऊपर कहता है, StaleElementReferenceException एक स्पष्ट संकेत है कि जिस पृष्ठ से आप इंटरैक्ट कर रहे हैं वह बदल गया है क्योंकि आपने पिछली बार ऑब्जेक्ट संदर्भ प्राप्त किया था। यह निर्धारित करने के लिए कि पृष्ठ को फिर से लोड करने का कारण क्या है, आपको कोड में उन दो बिंदुओं के बीच क्या हो रहा है, इसकी सावधानीपूर्वक समीक्षा करनी चाहिए। इससे आपको यह तय करने में मदद मिलेगी कि आपके स्वचालन ढांचे के संदर्भ में स्थिति को कैसे संभालना है।

कुछ सुझाव:

  • @FindBy एनोटेशन का उपयोग करने के बजाय, अपने तत्वों के लिए CSS या XPath चयनकर्ता चर बनाएं, फिर जहां भी आपको किसी तत्व के साथ इंटरैक्ट करने की आवश्यकता हो, लक्ष्य WebElement प्राप्त करने के लिए findElementBy का उपयोग करें इससे पहले कि आप इसके साथ बातचीत करें। (आपको अभी भी पहले AJAX ईवेंट को पूरा करने के लिए प्रतीक्षा करने की आवश्यकता हो सकती है)
  • अपने फ्रेमवर्क कोड को रिफलेक्टर करें ताकि कुछ कार्रवाई करने वाली विधियां पृष्ठ को फिर से लोड करने के लिए, या एक प्रासंगिक AJAX कार्रवाई को पूरा करने के लिए प्रतीक्षा करें, इससे पहले कि आप लक्ष्य प्राप्त करें WebElement (उदाहरण के लिए मेरे परीक्षण सिस्टम के प्रदर्शन में हाल ही में गिरावट के बाद मुझे एक जगह मिली मेरा ढांचा कोड जिसे पुनः लोड करने के लिए पृष्ठ पर एक तालिका की प्रतीक्षा करने की आवश्यकता थी, इसलिए मैंने तालिका में आइटम्स के साथ बातचीत करने से पहले लोडिंग स्पिनर के दूर जाने की प्रतीक्षा करने के लिए WebDriverWait का उपयोग किया।)
2
Breaks Software 9 अगस्त 2016, 13:30